include "cpu.def"
+;
+; Basic layout
+;
+.equ EEBASE 0xF600 ; Here upwards owned by EEPROM
;
; Unbanked memory
;
.equ BDEVF_LBA, 0x80
+;
+; EEPROM entry points
+;
+; A = bank
+; X = src, returns value in B or D
+;
+.equ fargetb , 0xFF40
+.equ fargetw , 0xFF43
+;
+; A = bank B = value
+; X = dst
+;
+.equ farputb , 0xFF46
+;
+; A = bank
+; X = dst, Y = value
+;
+.equ farputw , 0xFF49
+;
+; A = srcbank, B = dstbank
+; X = dst, Y = src
+; kernel:_tmp1 = length (in eeprom memory - FIXME)
+;
+.equ farcopy , 0xFF4C
+;
+; B = bank, X = function, Y = far stack
+; ret_x, ret_d, ret_y register values on far side
+;
+.equ farcall , 0xFF4F
+;
+; B = bank, X = function, Y = far stack
+; ret_x, ret_d, ret_y register values on far side
+;
+.equ farjump , 0xFF52
+;
+; A = bank
+;
+; FIXME - useless ! .equ setbank , 0xFF55
+;
+; D = 0
+;
+.equ reboot , 0xFF58
+;
+; A = srcbank, B = dstbank
+; X = dst, Y = src
+; kernel:_tmp1 = length (in kernel bank)
+;
+.equ farzcopy , 0xFF5B
+;
+; A = bank
+; X = dst
+; Y = len
+;
+; Return in D
+;
+.equ farzero , 0xFF5E
+;
+; A = device id
+; B = bank
+; Y/D = block
+; X = buffer
+;
+; Returns B = error code, 0 = ok
+;
+.equ block_read , 0xFF61
+.equ block_write , 0xFF64
+;
+; X = string (in bank 0)
+;
+.equ conputs , 0xFF67
+;
+; B = character
+;
+.equ conputc , 0xFF6A
+;
+; B = value
+;
+.equ conputhex , 0xFF6D
+;
+; B = flags (0 = wait, echo, 1 = wait no echo, 2 = nowait noecho)
+; returned in B
+;
+.equ conin , 0xFF70
+;
+; A = bank
+; X = buffer
+; Y = length
+;
+.equ spi_read , 0xFF73
+.equ spi_write , 0xFF76
+
;
; Hide the udata above the I/O in the gap before the EEPROM
;
-.equ U_DATA , 0xF200 ; (this is struct u_data from kernel.h)
-.equ U_DATA__TOTALSIZE , 0x200 ;
-.equ IRQ_STACK , 0xF400
-.equ EESTACK , 0xF600 ; used for eeprom stuff
+.equ U_DATA , 0xF200 ; (this is struct u_data from kernel.h)
+.equ U_DATA__TOTALSIZE , 0x200 ;
+.equ IRQ_STACK , 0xF400
-;
-; EEPROM entry points
-;
-; A = bank
-; X = src, returns value in B or D
-.equ fargetb , 0xF840
-.equ fargetw , 0xF843
-;
-; A = bank B = value
-; X = dst
-;
-.equ farputb , 0xF846
-;
-; A = bank
-; X = dst, Y = value
-;
-.equ farputw , 0xF849
-;
-; A = srcbank, B = dstbank
-; X = dst, Y = src
-; kernel:_tmp1 = length (in eeprom memory - FIXME)
-;
-.equ farcopy , 0xF84C
-;
-; B = bank, X = function, Y = far stack
-; ret_x, ret_d, ret_y register values on far side
-;
-.equ farcall , 0xF84F
-;
-; B = bank, X = function, Y = far stack
-; ret_x, ret_d, ret_y register values on far side
-;
-.equ farjump , 0xF852
-;
-; A = bank
-;
-; FIXME - useless ! .equ setbank , 0xF855
-;
-; D = 0
-;
-.equ reboot , 0xF858
-;
-; A = srcbank, B = dstbank
-; X = dst, Y = src
-; kernel:_tmp1 = length (in kernel bank)
-;
-.equ farzcopy , 0xF85B
-;
-; A = bank
-; X = dst
-; Y = len
-;
-; Return in D
-;
-.equ farzero , 0xF85E
-;
-;
;
; Low memory usage (not banked): FIXME - tmp1 should be in eeprom RAM
; as should ret_*
; All TBD
;
-.equ tmp1 , 0xFE ; 16bits
.equ curbank , 0xFD
.equ usrbank , 0xFC ; we track this to emulate
; usermode copy stuff
-.equ ret_x , 0xFA
-.equ ret_y , 0xF8
-.equ ret_d , 0xF6