adapted to Kick Assembler, some documentation update
This commit is contained in:
1 parent
ae23dbae7b
commit
de27124b4f
198 files changed
+4181
-3976
No files matched your search
@@ -1,63 +1,63 @@
|
||||
|
||||
;; Kernal error codes - returned in the A register
|
||||
;; Described in 'Commodore 64 Programmer's Reference Guide', page 306
|
||||
// Kernal error codes - returned in the A register
|
||||
// Described in 'Commodore 64 Programmer's Reference Guide', page 306
|
||||
|
||||
.alias K_ERR_ROUTINE_TERMINATED $00
|
||||
.alias K_ERR_TOO_MANY_OPEN_FILES $01
|
||||
.alias K_ERR_FILE_ALREADY_OPEN $02
|
||||
.alias K_ERR_FILE_NOT_OPEN $03
|
||||
.alias K_ERR_FILE_NOT_FOUND $04
|
||||
.alias K_ERR_DEVICE_NOT_FOUND $05
|
||||
.alias K_ERR_FILE_NOT_INPUT $06
|
||||
.alias K_ERR_FILE_NOT_OUTPUT $07
|
||||
.alias K_ERR_FILE_NAME_MISSING $08
|
||||
.alias K_ERR_ILLEGAL_DEVICE_NUMBER $09
|
||||
.alias K_ERR_TOP_MEM_RS232 $F0
|
||||
.const K_ERR_ROUTINE_TERMINATED = $00
|
||||
.const K_ERR_TOO_MANY_OPEN_FILES = $01
|
||||
.const K_ERR_FILE_ALREADY_OPEN = $02
|
||||
.const K_ERR_FILE_NOT_OPEN = $03
|
||||
.const K_ERR_FILE_NOT_FOUND = $04
|
||||
.const K_ERR_DEVICE_NOT_FOUND = $05
|
||||
.const K_ERR_FILE_NOT_INPUT = $06
|
||||
.const K_ERR_FILE_NOT_OUTPUT = $07
|
||||
.const K_ERR_FILE_NAME_MISSING = $08
|
||||
.const K_ERR_ILLEGAL_DEVICE_NUMBER = $09
|
||||
.const K_ERR_TOP_MEM_RS232 = $F0
|
||||
|
||||
;; Kernal status codes for READST routine (IOSTATUS)
|
||||
;; Described in 'Commodore 64 Programmer's Reference Guide', page 292
|
||||
// Kernal status codes for READST routine (IOSTATUS)
|
||||
// Described in 'Commodore 64 Programmer's Reference Guide', page 292
|
||||
|
||||
;; For IEC devices
|
||||
.alias K_STS_TIMEOUT_WRITE $01
|
||||
.alias K_STS_TIMEOUT_READ $02
|
||||
.alias K_STS_EOI $40
|
||||
.alias K_STS_DEVICE_NOT_FOUND $80
|
||||
;; For tape deck
|
||||
.alias K_STS_SHORT_BLOCK $04
|
||||
.alias K_STS_LONG_BLOCK $08
|
||||
.alias K_STS_READ_ERROR $10
|
||||
.alias K_STS_CHECKSUM_ERROR $20
|
||||
.alias K_STS_END_OF_FILE $40
|
||||
.alias K_STS_END_OF_TAPE $80
|
||||
// For IEC devices
|
||||
.const K_STS_TIMEOUT_WRITE = $01
|
||||
.const K_STS_TIMEOUT_READ = $02
|
||||
.const K_STS_EOI = $40
|
||||
.const K_STS_DEVICE_NOT_FOUND = $80
|
||||
// For tape deck
|
||||
.const K_STS_SHORT_BLOCK = $04
|
||||
.const K_STS_LONG_BLOCK = $08
|
||||
.const K_STS_READ_ERROR = $10
|
||||
.const K_STS_CHECKSUM_ERROR = $20
|
||||
.const K_STS_END_OF_FILE = $40
|
||||
.const K_STS_END_OF_TAPE = $80
|
||||
|
||||
;; BASIC error codes, taken from http://sta.c64.org/cbm64baserr.html
|
||||
.alias B_ERR_TOO_MANY_FILES $01
|
||||
.alias B_ERR_FILE_OPEN $02
|
||||
.alias B_ERR_FILE_NOT_OPEN $03
|
||||
.alias B_ERR_FILE_NOT_FOUND $04
|
||||
.alias B_ERR_DEVICE_NOT_PRESENT $05
|
||||
.alias B_ERR_NOT_INPUT_FILE $06
|
||||
.alias B_ERR_NOT_OUTPUT_FILE $07
|
||||
.alias B_ERR_MISSING_FILENAME $08
|
||||
.alias B_ERR_ILLEGAL_DEVICE_NUMBER $09
|
||||
.alias B_ERR_NEXT_WITHOUT_FOR $0A
|
||||
.alias B_ERR_SYNTAX $0B
|
||||
.alias B_ERR_RETURN_WITHOUT_GOSUB $0C
|
||||
.alias B_ERR_OUT_OF_DATA $0D
|
||||
.alias B_ERR_ILLEGAL_QUANTITY $0E
|
||||
.alias B_ERR_OVERFLOW $0F
|
||||
.alias B_ERR_OUT_OF_MEMORY $10
|
||||
.alias B_ERR_UNDEFD_STATEMENT $11
|
||||
.alias B_ERR_BAD_SUBSCRIPT $12
|
||||
.alias B_ERR_REDIMD_ARRAY $13
|
||||
.alias B_ERR_DIVISION_BY_ZERO $14
|
||||
.alias B_ERR_ILLEGAL_DIRECT $15
|
||||
.alias B_ERR_TYPE_MISMATCH $16
|
||||
.alias B_ERR_STRING_TOO_LONG $17
|
||||
.alias B_ERR_FILE_DATA $18
|
||||
.alias B_ERR_FORMULA_TOO_COMPLEX $19
|
||||
.alias B_ERR_CANT_CONTINUE $1A
|
||||
.alias B_ERR_UNDEFD_FUNCTION $1B
|
||||
.alias B_ERR_VERIFY $1C
|
||||
.alias B_ERR_LOAD $1D
|
||||
.alias B_ERR_BREAK $1E
|
||||
// BASIC error codes, taken from http://sta.c64.org/cbm64baserr.html
|
||||
.const B_ERR_TOO_MANY_FILES = $01
|
||||
.const B_ERR_FILE_OPEN = $02
|
||||
.const B_ERR_FILE_NOT_OPEN = $03
|
||||
.const B_ERR_FILE_NOT_FOUND = $04
|
||||
.const B_ERR_DEVICE_NOT_PRESENT = $05
|
||||
.const B_ERR_NOT_INPUT_FILE = $06
|
||||
.const B_ERR_NOT_OUTPUT_FILE = $07
|
||||
.const B_ERR_MISSING_FILENAME = $08
|
||||
.const B_ERR_ILLEGAL_DEVICE_NUMBER = $09
|
||||
.const B_ERR_NEXT_WITHOUT_FOR = $0A
|
||||
.const B_ERR_SYNTAX = $0B
|
||||
.const B_ERR_RETURN_WITHOUT_GOSUB = $0C
|
||||
.const B_ERR_OUT_OF_DATA = $0D
|
||||
.const B_ERR_ILLEGAL_QUANTITY = $0E
|
||||
.const B_ERR_OVERFLOW = $0F
|
||||
.const B_ERR_OUT_OF_MEMORY = $10
|
||||
.const B_ERR_UNDEFD_STATEMENT = $11
|
||||
.const B_ERR_BAD_SUBSCRIPT = $12
|
||||
.const B_ERR_REDIMD_ARRAY = $13
|
||||
.const B_ERR_DIVISION_BY_ZERO = $14
|
||||
.const B_ERR_ILLEGAL_DIRECT = $15
|
||||
.const B_ERR_TYPE_MISMATCH = $16
|
||||
.const B_ERR_STRING_TOO_LONG = $17
|
||||
.const B_ERR_FILE_DATA = $18
|
||||
.const B_ERR_FORMULA_TOO_COMPLEX = $19
|
||||
.const B_ERR_CANT_CONTINUE = $1A
|
||||
.const B_ERR_UNDEFD_FUNCTION = $1B
|
||||
.const B_ERR_VERIFY = $1C
|
||||
.const B_ERR_LOAD = $1D
|
||||
.const B_ERR_BREAK = $1E
|
||||
+124
-124
@@ -1,148 +1,148 @@
|
||||
|
||||
;;
|
||||
;; Names of hardware registers - slightly modified names from C64 Programmer's Reference Guide
|
||||
;;
|
||||
//
|
||||
// Names of hardware registers - slightly modified names from C64 Programmer's Reference Guide
|
||||
//
|
||||
|
||||
;; CPU memory registers
|
||||
// CPU memory registers
|
||||
|
||||
.alias CPU_D6510 $00
|
||||
.alias CPU_R6510 $01
|
||||
.label CPU_D6510 = $00
|
||||
.label CPU_R6510 = $01
|
||||
|
||||
;; VIC-II registers
|
||||
// VIC-II registers
|
||||
|
||||
.alias VIC_SP0X $D000
|
||||
.alias VIC_SP0Y $D001
|
||||
.alias VIC_SP1X $D002
|
||||
.alias VIC_SP1Y $D003
|
||||
.alias VIC_SP2X $D004
|
||||
.alias VIC_SP2Y $D005
|
||||
.alias VIC_SP3X $D006
|
||||
.alias VIC_SP3Y $D007
|
||||
.alias VIC_SP4X $D008
|
||||
.alias VIC_SP4Y $D009
|
||||
.alias VIC_SP5X $D00A
|
||||
.alias VIC_SP5Y $D00B
|
||||
.alias VIC_SP6X $D00C
|
||||
.alias VIC_SP6Y $D00D
|
||||
.alias VIC_SP7X $D00E
|
||||
.alias VIC_SP7Y $D00F
|
||||
.label VIC_SP0X = $D000
|
||||
.label VIC_SP0Y = $D001
|
||||
.label VIC_SP1X = $D002
|
||||
.label VIC_SP1Y = $D003
|
||||
.label VIC_SP2X = $D004
|
||||
.label VIC_SP2Y = $D005
|
||||
.label VIC_SP3X = $D006
|
||||
.label VIC_SP3Y = $D007
|
||||
.label VIC_SP4X = $D008
|
||||
.label VIC_SP4Y = $D009
|
||||
.label VIC_SP5X = $D00A
|
||||
.label VIC_SP5Y = $D00B
|
||||
.label VIC_SP6X = $D00C
|
||||
.label VIC_SP6Y = $D00D
|
||||
.label VIC_SP7X = $D00E
|
||||
.label VIC_SP7Y = $D00F
|
||||
|
||||
.alias VIC_MSIGX $D010
|
||||
.alias VIC_SCROLY $D011
|
||||
.alias VIC_RASTER $D012
|
||||
.alias VIC_LPENX $D013
|
||||
.alias VIC_LPENY $D014
|
||||
.alias VIC_SPENA $D015
|
||||
.alias VIC_SCROLX $D016
|
||||
.alias VIC_YXPAND $D017
|
||||
.alias VIC_YMCSB $D018
|
||||
.alias VIC_IRQ $D019
|
||||
.alias VIC_IRQMSK $D01A
|
||||
.alias VIC_SPBGPR $D01B
|
||||
.alias VIC_SPMC $D01C
|
||||
.alias VIC_XXPAND $D01D
|
||||
.alias VIC_SPSPCL $D01E
|
||||
.alias VIC_SPBGCL $D01F
|
||||
.label VIC_MSIGX = $D010
|
||||
.label VIC_SCROLY = $D011
|
||||
.label VIC_RASTER = $D012
|
||||
.label VIC_LPENX = $D013
|
||||
.label VIC_LPENY = $D014
|
||||
.label VIC_SPENA = $D015
|
||||
.label VIC_SCROLX = $D016
|
||||
.label VIC_YXPAND = $D017
|
||||
.label VIC_YMCSB = $D018
|
||||
.label VIC_IRQ = $D019
|
||||
.label VIC_IRQMSK = $D01A
|
||||
.label VIC_SPBGPR = $D01B
|
||||
.label VIC_SPMC = $D01C
|
||||
.label VIC_XXPAND = $D01D
|
||||
.label VIC_SPSPCL = $D01E
|
||||
.label VIC_SPBGCL = $D01F
|
||||
|
||||
.alias VIC_EXTCOL $D020
|
||||
.alias VIC_BGCOL0 $D021
|
||||
.alias VIC_BGCOL1 $D022
|
||||
.alias VIC_BGCOL2 $D023
|
||||
.alias VIC_BGCOL3 $D024
|
||||
.alias VIC_SPMC0 $D025
|
||||
.alias VIC_SPMC1 $D026
|
||||
.alias VIC_SP0COL $D027
|
||||
.alias VIC_SP1COL $D028
|
||||
.alias VIC_SP2COL $D029
|
||||
.alias VIC_SP3COL $D02A
|
||||
.alias VIC_SP4COL $D02B
|
||||
.alias VIC_SP5COL $D02C
|
||||
.alias VIC_SP6COL $D02D
|
||||
.alias VIC_SP7COL $D02E
|
||||
.label VIC_EXTCOL = $D020
|
||||
.label VIC_BGCOL0 = $D021
|
||||
.label VIC_BGCOL1 = $D022
|
||||
.label VIC_BGCOL2 = $D023
|
||||
.label VIC_BGCOL3 = $D024
|
||||
.label VIC_SPMC0 = $D025
|
||||
.label VIC_SPMC1 = $D026
|
||||
.label VIC_SP0COL = $D027
|
||||
.label VIC_SP1COL = $D028
|
||||
.label VIC_SP2COL = $D029
|
||||
.label VIC_SP3COL = $D02A
|
||||
.label VIC_SP4COL = $D02B
|
||||
.label VIC_SP5COL = $D02C
|
||||
.label VIC_SP6COL = $D02D
|
||||
.label VIC_SP7COL = $D02E
|
||||
|
||||
;; SID registers
|
||||
// SID registers
|
||||
|
||||
.alias SID_FRELO1 $D400
|
||||
.alias SID_FREHI1 $D401
|
||||
.alias SID_PWLO1 $D402
|
||||
.alias SID_PWHI1 $D403
|
||||
.alias SID_VCREG1 $D404
|
||||
.alias SID_ATDCY1 $D405
|
||||
.alias SID_SUREL1 $D406
|
||||
.label SID_FRELO1 = $D400
|
||||
.label SID_FREHI1 = $D401
|
||||
.label SID_PWLO1 = $D402
|
||||
.label SID_PWHI1 = $D403
|
||||
.label SID_VCREG1 = $D404
|
||||
.label SID_ATDCY1 = $D405
|
||||
.label SID_SUREL1 = $D406
|
||||
|
||||
.alias SID_FRELO2 $D407
|
||||
.alias SID_FREHI2 $D408
|
||||
.alias SID_PWLO2 $D409
|
||||
.alias SID_PWHI2 $D40A
|
||||
.alias SID_VCREG2 $D40B
|
||||
.alias SID_ATDCY2 $D40C
|
||||
.alias SID_SUREL2 $D40D
|
||||
.label SID_FRELO2 = $D407
|
||||
.label SID_FREHI2 = $D408
|
||||
.label SID_PWLO2 = $D409
|
||||
.label SID_PWHI2 = $D40A
|
||||
.label SID_VCREG2 = $D40B
|
||||
.label SID_ATDCY2 = $D40C
|
||||
.label SID_SUREL2 = $D40D
|
||||
|
||||
.alias SID_FRELO3 $D40E
|
||||
.alias SID_FREHI3 $D40F
|
||||
.alias SID_PWLO3 $D410
|
||||
.alias SID_PWHI3 $D411
|
||||
.alias SID_VCREG3 $D412
|
||||
.alias SID_ATDCY3 $D413
|
||||
.alias SID_SUREL3 $D414
|
||||
.label SID_FRELO3 = $D40E
|
||||
.label SID_FREHI3 = $D40F
|
||||
.label SID_PWLO3 = $D410
|
||||
.label SID_PWHI3 = $D411
|
||||
.label SID_VCREG3 = $D412
|
||||
.label SID_ATDCY3 = $D413
|
||||
.label SID_SUREL3 = $D414
|
||||
|
||||
.alias SID_CUTLO $D415
|
||||
.alias SID_CUTHI $D416
|
||||
.alias SID_RESON $D417
|
||||
.alias SID_SIGVOL $D418
|
||||
.alias SID_POTX $D419
|
||||
.alias SID_POTY $D41A
|
||||
.alias SID_RANDOM $D41B
|
||||
.alias SID_ENV3 $D41C
|
||||
.label SID_CUTLO = $D415
|
||||
.label SID_CUTHI = $D416
|
||||
.label SID_RESON = $D417
|
||||
.label SID_SIGVOL = $D418
|
||||
.label SID_POTX = $D419
|
||||
.label SID_POTY = $D41A
|
||||
.label SID_RANDOM = $D41B
|
||||
.label SID_ENV3 = $D41C
|
||||
|
||||
;; CIA #1 registers
|
||||
// CIA #1 registers
|
||||
|
||||
.alias CIA1_PRA $DC00
|
||||
.alias CIA1_PRB $DC01
|
||||
.alias CIA1_DDRA $DC02
|
||||
.alias CIA1_DDRB $DC03
|
||||
.label CIA1_PRA = $DC00
|
||||
.label CIA1_PRB = $DC01
|
||||
.label CIA1_DDRA = $DC02
|
||||
.label CIA1_DDRB = $DC03
|
||||
|
||||
.alias CIA1_TIMALO $DC04
|
||||
.alias CIA1_TIMAHI $DC05
|
||||
.alias CIA1_TIMBLO $DC06
|
||||
.alias CIA1_TIMBHI $DC07
|
||||
.label CIA1_TIMALO = $DC04
|
||||
.label CIA1_TIMAHI = $DC05
|
||||
.label CIA1_TIMBLO = $DC06
|
||||
.label CIA1_TIMBHI = $DC07
|
||||
|
||||
.alias CIA1_TODTEN $DC08
|
||||
.alias CIA1_TODSEC $DC09
|
||||
.alias CIA1_TODMIN $DC0A
|
||||
.alias CIA1_TODHRS $DC0B
|
||||
.label CIA1_TODTEN = $DC08
|
||||
.label CIA1_TODSEC = $DC09
|
||||
.label CIA1_TODMIN = $DC0A
|
||||
.label CIA1_TODHRS = $DC0B
|
||||
|
||||
.alias CIA1_SDR $DC0C
|
||||
.alias CIA1_ICR $DC0D
|
||||
.alias CIA1_CRA $DC0E
|
||||
.alias CIA1_CRB $DC0F
|
||||
.label CIA1_SDR = $DC0C
|
||||
.label CIA1_ICR = $DC0D
|
||||
.label CIA1_CRA = $DC0E
|
||||
.label CIA1_CRB = $DC0F
|
||||
|
||||
;; CIA #2 registers
|
||||
// CIA #2 registers
|
||||
|
||||
.alias CIA2_PRA $DD00 ; VIC bank switching and IEC port
|
||||
.alias CIA2_PRB $DD01
|
||||
.alias CIA2_DDRA $DD02
|
||||
.alias CIA2_DDRB $DD03
|
||||
.label CIA2_PRA = $DD00 // VIC bank switching and IEC port
|
||||
.label CIA2_PRB = $DD01
|
||||
.label CIA2_DDRA = $DD02
|
||||
.label CIA2_DDRB = $DD03
|
||||
|
||||
.alias CIA2_TIMALO $DD04
|
||||
.alias CIA2_TIMAHI $DD05
|
||||
.alias CIA2_TIMBLO $DD06
|
||||
.alias CIA2_TIMBHI $DD07
|
||||
.label CIA2_TIMALO = $DD04
|
||||
.label CIA2_TIMAHI = $DD05
|
||||
.label CIA2_TIMBLO = $DD06
|
||||
.label CIA2_TIMBHI = $DD07
|
||||
|
||||
.alias CIA2_TODTEN $DD08
|
||||
.alias CIA2_TODSEC $DD09
|
||||
.alias CIA2_TODMIN $DD0A
|
||||
.alias CIA2_TODHRS $DD0B
|
||||
.label CIA2_TODTEN = $DD08
|
||||
.label CIA2_TODSEC = $DD09
|
||||
.label CIA2_TODMIN = $DD0A
|
||||
.label CIA2_TODHRS = $DD0B
|
||||
|
||||
.alias CIA2_SDR $DD0C
|
||||
.alias CIA2_ICR $DD0D
|
||||
.alias CIA2_CRA $DD0E
|
||||
.alias CIA2_CRB $DD0F
|
||||
.label CIA2_SDR = $DD0C
|
||||
.label CIA2_ICR = $DD0D
|
||||
.label CIA2_CRA = $DD0E
|
||||
.label CIA2_CRB = $DD0F
|
||||
|
||||
;; CIA #2 helper bits - IEC bus
|
||||
// CIA #2 helper bits - IEC bus
|
||||
|
||||
.alias BIT_CIA2_PRA_ATN_OUT $08 ; 1 - low (pulled), 0 - high (released)
|
||||
.alias BIT_CIA2_PRA_CLK_OUT $10 ; 1 - low (pulled), 0 - high (released)
|
||||
.alias BIT_CIA2_PRA_DAT_OUT $20 ; 1 - low (pulled), 0 - high (released)
|
||||
.alias BIT_CIA2_PRA_CLK_IN $40 ; 0 - low (pulled), 1 - high (released)
|
||||
.alias BIT_CIA2_PRA_DAT_IN $80 ; 0 - low (pulled), 1 - high (released)
|
||||
.const BIT_CIA2_PRA_ATN_OUT = $08 // 1 - low (pulled), 0 - high (released)
|
||||
.const BIT_CIA2_PRA_CLK_OUT = $10 // 1 - low (pulled), 0 - high (released)
|
||||
.const BIT_CIA2_PRA_DAT_OUT = $20 // 1 - low (pulled), 0 - high (released)
|
||||
.const BIT_CIA2_PRA_CLK_IN = $40 // 0 - low (pulled), 1 - high (released)
|
||||
.const BIT_CIA2_PRA_DAT_IN = $80 // 0 - low (pulled), 1 - high (released)
|
||||
@@ -1,98 +1,236 @@
|
||||
;;
|
||||
;; Names of ZP and low memory locations
|
||||
;; (https://www.c64-wiki.com/wiki/Zeropage)
|
||||
;;
|
||||
//
|
||||
// Names of ZP and low memory locations:
|
||||
// - Compute's Mapping the Commodore 64
|
||||
// - https://www.c64-wiki.com/wiki/Zeropage
|
||||
// - http://unusedino.de/ec64/technical/project64/memory_maps.html
|
||||
//
|
||||
|
||||
;; $00-$01 - 6502 CPU registers are here
|
||||
// $00-$01 - 6502 CPU registers are here
|
||||
|
||||
;;
|
||||
;; Page 0 - BASIC area ($02-$8F)
|
||||
;;
|
||||
//
|
||||
// Page 0 - BASIC area ($02-$8F)
|
||||
//
|
||||
|
||||
// $02 -- UNUSED -- free for user software
|
||||
.label ADRAY1 = $03 // $03-$04 -- NOT IMPLEMENTED --
|
||||
.label ADRAY2 = $05 // $05-$06 -- NOT IMPLEMENTED --
|
||||
.label CHARAC = $07 // [!] our implementation might be different XXX give more details
|
||||
.label ENDCHR = $08 // [!] our implementation might be different XXX give more details
|
||||
.label TRMPOS = $09 // -- NOT IMPLEMENTED --
|
||||
.label VERCKB = $0A // -- NOT IMPLEMENTED --
|
||||
.label COUNT = $0B // [!] our implementation might be different XXX give more details
|
||||
.label DIMFLG = $0C // [!] our implementation might be different XXX give more details
|
||||
.label VALTYP = $0D // -- NOT IMPLEMENTED --
|
||||
.label INTFLG = $0E // -- NOT IMPLEMENTED --
|
||||
.label GARBFL = $0F // [!] our implementation might be different XXX give more details
|
||||
.label SUBFLG = $10 // -- NOT IMPLEMENTED --
|
||||
.label INPFLG = $11 // -- NOT IMPLEMENTED --
|
||||
.label TANSGN = $12 // -- NOT IMPLEMENTED --
|
||||
.label CHANNL = $13 // -- NOT IMPLEMENTED --
|
||||
.label LINNUM = $14 // $14-$15 BASIC line number, [!] also used by DOS Wedge
|
||||
.label TEMPPT = $16 // -- NOT IMPLEMENTED --
|
||||
.label LASTPT = $17 // $17-$18 -- NOT IMPLEMENTED --
|
||||
.label TEMPST = $19 // $19-$21 -- NOT IMPLEMENTED --
|
||||
.label INDEX = $22 // $22-$25 -- NOT IMPLEMENTED -- temporary variables
|
||||
.label RESHO = $26 // $26-$2A -- NOT IMPLEMENTED --
|
||||
.label TXTTAB = $2B // $2B-$2C start of BASIC code
|
||||
.label VARTAB = $2D // $2D-$2E end of BASIC code, start of variables
|
||||
.label ARYTAB = $2F // $2F-$30 -- NOT IMPLEMENTED --
|
||||
.label STREND = $31 // $31-$32 -- NOT IMPLEMENTED --
|
||||
.label FRETOP = $33 // $33-$34 -- NOT IMPLEMENTED --
|
||||
.label FRESPC = $35 // $35-$36 [!] our implementation might be different XXX give more details
|
||||
// .label MEMSIZ = $37 // $37-$38 -- NOT IMPLEMENTED -- highest address of BASIC memory XXX remove name conflict
|
||||
.label CURLIN = $39 // $39-$3A current BASIC line number
|
||||
.label OLDLIN = $3B // $3B-$3C previous BASIC line number
|
||||
.label OLDTXT = $3D // $3D-$3E current BASIC line pointer
|
||||
.label DATLIN = $3F // $3F-$40 -- NOT IMPLEMENTED --
|
||||
.label DATPTR = $41 // $41-$42 -- NOT IMPLEMENTED --
|
||||
.label INPPTR = $43 // $43-$44 -- NOT IMPLEMENTED --
|
||||
.label VARNAM = $45 // $45-$46 -- NOT IMPLEMENTED --
|
||||
.label VARPNT = $47 // $47-$48 -- NOT IMPLEMENTED --
|
||||
.label FORPNT = $49 // $49-$4A -- NOT IMPLEMENTED --
|
||||
.label OPPTR = $4B // $4B-$4C -- NOT IMPLEMENTED --
|
||||
.label OPMASK = $4D // -- NOT IMPLEMENTED --
|
||||
.label DEFPNT = $4E // $4E-$4F -- NOT IMPLEMENTED --
|
||||
.label DSCPNT = $50 // $50-$52 -- NOT IMPLEMENTED --
|
||||
.label FOUR6 = $53 // -- NOT IMPLEMENTED --
|
||||
.label JMPER = $54 // $54-$56 -- NOT IMPLEMENTED --
|
||||
.label TEMPF1 = $57 // $57-$5B BASIC numeric work area
|
||||
.label TEMPF2 = $5C // $5C-$60 BASIC numeric work area
|
||||
.label FAC1 = $61 // $61-$66 -- NOT IMPLEMENTED --
|
||||
.label SGNFLG = $67 // -- NOT IMPLEMENTED --
|
||||
.label BITS = $68 // -- NOT IMPLEMENTED --
|
||||
.label FAC2 = $69 // $69-$6E -- NOT IMPLEMENTED -- [!] also used for memory move pointers
|
||||
.label ARISGN = $6F // -- NOT IMPLEMENTED --
|
||||
.label FACOV = $70 // -- NOT IMPLEMENTED --
|
||||
.label FBUFPT = $67 // $71-$72 -- NOT IMPLEMENTED --
|
||||
.label CHRGET = $73 // $73-$8A -- NOT IMPLEMENTED --
|
||||
.label TXTPTR = $7A // $7A-$7B current BASIC statement pointer
|
||||
.label RNDX = $8B // $8B-$8F -- NOT IMPLEMENTED --
|
||||
|
||||
//
|
||||
// Page 0 - Kernal area ($90-$FF)
|
||||
//
|
||||
|
||||
.alias TXTTAB $2B
|
||||
.label IOSTATUS = $90
|
||||
.label STKEY = $91 // Keys down clears bits. STOP - bit 7, C= - bit 6, SPACE - bit 4, CTRL - bit 2
|
||||
.label SVXT = $92 // -- NOT IMPLEMENTED --
|
||||
.label VERCK = $93 // 0 = LOAD, 1 = VERIFY XXX rename to VERCKK
|
||||
.label C3PO = $94 // flag - is BSOUR content valid
|
||||
.label BSOUR = $95 // serial bus buffered output byte
|
||||
.label SYNO = $96 // -- NOT IMPLEMENTED --
|
||||
.label XSAV = $97 // -- NOT IMPLEMENTED --
|
||||
.label LDTND = $98 // number of entries in LAT / FAT / SAT tables
|
||||
.label DFLTN = $99 // default input device
|
||||
.label DFLTO = $9A // default output device
|
||||
.label PRTY = $9B // -- NOT IMPLEMENTED --
|
||||
.label DPSW = $9C // -- NOT IMPLEMENTED --
|
||||
.label MSGFLG = $9D // bit 6 = error messages, bit 7 = control message
|
||||
.label PTR1 = $9E // -- NOT IMPLEMENTED --
|
||||
.label PTR2 = $9F // -- NOT IMPLEMENTED --
|
||||
.label TIME = $A0 // $A0-$A2, jiffy clock
|
||||
.label IEC_TMP1 = $A3 // temporary variable for tape and IEC, [!] our usage probably differs in details XXX rename to TSFCNT
|
||||
.label IEC_TMP2 = $A4 // temporary variable for tape and IEC, [!] our usage probably differs in details XXX rename to TBTCNT
|
||||
.label CNTDN = $A5 // -- NOT IMPLEMENTED --
|
||||
.label BUFPNT = $A6 // -- NOT IMPLEMENTED --
|
||||
.label INBIT = $A7 // -- NOT IMPLEMENTED --
|
||||
.label BITCI = $A8 // -- NOT IMPLEMENTED --
|
||||
.label RINONE = $A9 // -- NOT IMPLEMENTED --
|
||||
.label RIDDATA = $AA // -- NOT IMPLEMENTED --
|
||||
.label RIPRTY = $AB // -- NOT IMPLEMENTED --
|
||||
.label SAL = $AC // $AC-$AD -- NOT IMPLEMENTED -- (implemented screen part)
|
||||
.label EAL = $AE // $AE-$AF -- NOT IMPLEMENTED -- [!] used also byy screen editor
|
||||
.label CMP0 = $B0 // $B0-$B1, temporary tape storage, [!] here used for BRK instruction address
|
||||
.label TAPE1 = $B2 // $B2-$B3 tape buffer pointer
|
||||
.label BITTS = $B4 // -- NOT IMPLEMENTED --
|
||||
.label NXTBIT = $B5 // -- NOT IMPLEMENTED --
|
||||
.label RODATA = $B6 // -- NOT IMPLEMENTED --
|
||||
.label FNLEN = $B7 // current file name length
|
||||
.label LA = $B8 // current logical_file number
|
||||
.label SA = $B9 // current secondary address
|
||||
.label FA = $BA // current device number
|
||||
.label FNADDR = $BB // $BB-$BC, current file name pointer
|
||||
.label ROPRTY = $BD // -- NOT IMPLEMENTED --
|
||||
.label FSBLK = $BE // -- NOT IMPLEMENTED --
|
||||
.label MYCH = $BF // -- NOT IMPLEMENTED --
|
||||
.label CAS1 = $C0 // -- NOT IMPLEMENTED --
|
||||
.label STAL = $C1 // $C1-$C2, LOAD/SAVE start address
|
||||
.label MEMUS = $C3 // $C3-$C4, temporary address for tape LOAD/SAVE XXX rename to MEMUSS
|
||||
.label LSTX = $C5 // last keyy matrix position [!] our usage probably differs in details
|
||||
.label NDX = $C6 // number of chars in keyboard buffer
|
||||
.label RVS = $C7 // flag, whether to print reversed characters
|
||||
.label INDX = $C8 // end of logical line (column, 0-79)
|
||||
.label LXSP = $C9 // $C9-$CA start of input, X/Y position
|
||||
.label SFDX = $CB // -- NOT IMPLEMENTED --
|
||||
.label BLNSW = $CC // cursor blink disable flag
|
||||
.label BLNCT = $CD // cursor blink countdown
|
||||
.label GDBLN = $CE // cursorb saved character
|
||||
.label BLNON = $CF // cursor visibilityy flag
|
||||
.label CRSW = $D0 // whether to input from screen or keyboard
|
||||
.label PNT = $D1 // $D1-$D2 pointer to the current screen line
|
||||
.label PNTR = $D3 // current screen X position
|
||||
.label QTSW = $D4 // quote mode flag
|
||||
.label LNMX = $D5 // logical line length, [!] our usage probably differs in details
|
||||
.label TBLX = $D6 // current screen Y position
|
||||
.label SCHAR = $D7 // ASCII value of the last printed character
|
||||
.label INSRT = $D8 // insert mode flag/counter
|
||||
.label LDTB1 = $D9 // $D9-$F2 screen line link table, [!] our usage is different XXX give more details
|
||||
.label USER = $F3 // $F3-$F4 pointer to current color RAM location
|
||||
.label KEYTAB = $F5 // $F5-$F6 -- NOT IMPLEMENTED --
|
||||
.label RIBUF = $F7 // $F7-$F8 -- NOT IMPLEMENTED --
|
||||
.label ROBUF = $F9 // $F9-$FA -- NOT IMPLEMENTED --
|
||||
// $FB $FB-$FE -- UNUSED -- free for user software
|
||||
.label BASZPT = $FF // -- NOT IMPLEMENTED --
|
||||
|
||||
;;
|
||||
;; Page 0 - Kernal area ($90-$FF)
|
||||
;;
|
||||
|
||||
.alias IOSTATUS $90
|
||||
.alias STKEY $91 ; Keys down clears bits. STOP - bit 7, C= - bit 6, SPACE - bit 4, CTRL - bit 2
|
||||
|
||||
.alias VERCK $93 ; 0 = LOAD, 1 = VERIVY
|
||||
|
||||
.alias C3PO $94 ; flag - is BSOUR content valid
|
||||
.alias BSOUR $95 ; serial bus buffered output byte
|
||||
//
|
||||
// Page 1
|
||||
//
|
||||
|
||||
.alias LDTND $98 ; number of entries in LAT / FAT / SAT tables
|
||||
.alias DFLTN $99
|
||||
.alias DFLTO $9A
|
||||
|
||||
.alias MSGFLG $9D ; bit 6 = error messages, bit 7 = control message
|
||||
.label STACK = $100 // $100-$1FF, processor stack
|
||||
|
||||
.alias TIME $A0 ; $A0-$A2, jiffy clock
|
||||
|
||||
.alias IEC_TMP1 $A3 ; temporary variable for tape and IEC
|
||||
.alias IEC_TMP2 $A4 ; temporary variable for tape and IEC
|
||||
|
||||
.alias CMP0 $B0 ; $B0-$B1, temporary tape storage, we use it too for BRK instruction address
|
||||
|
||||
.alias FNLEN $B7 ; current file name length
|
||||
|
||||
.alias FNADDR $BB ; $BB-$BC, current file name pointer
|
||||
|
||||
.alias STAL $C1 ; $C1-$C2 LOAD/SAVE start address
|
||||
.alias MEMUS $C3 ; $C3-$C4 temporary address for tape LOAD/SAVE
|
||||
|
||||
;;
|
||||
;; Other low memory addresses
|
||||
;;
|
||||
//
|
||||
// Pages 2 & 3
|
||||
//
|
||||
|
||||
.alias BUF $200 ; $200-$250 (81 bytes), BASIC line editor input buffer
|
||||
.label BUF = $200 // $200-$250, BASIC line editor input buffer (81 bytes)
|
||||
// [!] XXX document $251-$258 usage
|
||||
.label LAT = $259 // $259-$262, logical file numbers (table, 10 bytes)
|
||||
.label FAT = $263 // $263-$26C, device numbers (table, 10 bytes)
|
||||
.label SAT = $26D // $26D-$276, secondary addresses (table, 10 bytes)
|
||||
.label KEYD = $277 // $277-$280 keyboard buffer
|
||||
.label MEMSTR = $281 // $281-$282 XXX rename to LORAM
|
||||
.label MEMSIZ = $283 // $283-$284, NOTE: Mapping the 64 erroneously has the hex as $282, while the DEC is correct XXX rename to HIRAM
|
||||
.label TIMOUT = $285 // IEEE-488 timeout
|
||||
.label COLOR = $286 // current text foreground color
|
||||
.label GDCOL = $287 // color of character under cursor
|
||||
.label HIBASE = $288 // high byte of start of screen
|
||||
.label XMAX = $289 // max keyboard buffer size
|
||||
.label RPTFLG = $28A // -- NOT IMPLEMENTED --
|
||||
.label KOUNT = $28B // -- NOT IMPLEMENTED --
|
||||
.label DELAY = $28C // -- NOT IMPLEMENTED --
|
||||
.label SHFLAG = $28D // bucky keys (SHIFT/CTRL/C=) flags
|
||||
.label LSTSHF = $28E // last bucky key flags
|
||||
.label KEYLOG = $28F // $28F-$290 -- NOT IMPLEMENTED --
|
||||
.label MODE = $291 // flag, is case switch allowed
|
||||
.label AUTODN = $292 // -- NOT IMPLEMENTED --
|
||||
.label M51CRT = $293 // -- NOT IMPLEMENTED -- mock 6551
|
||||
.label M51CDR = $294 // -- NOT IMPLEMENTED -- mock 6551
|
||||
.label M51AJB = $295 // $295-$296 -- NOT IMPLEMENTED -- mock 6551
|
||||
.label RSSTAT = $297 // -- NOT IMPLEMENTED -- mock 6551, RS-232 status
|
||||
.label BITNUM = $298 // -- NOT IMPLEMENTED --
|
||||
.label BAUDOF = $299 // $299-$29A -- NOT IMPLEMENTED --
|
||||
.label RIDBE = $29B // -- NOT IMPLEMENTED --
|
||||
.label RIDBS = $29C // -- NOT IMPLEMENTED --
|
||||
.label RODBS = $29D // -- NOT IMPLEMENTED --
|
||||
.label RODBE = $29E // -- NOT IMPLEMENTED --
|
||||
.label IRQTMP = $29F // $29F-$2A0 -- NOT IMPLEMENTED --
|
||||
.label ENABL = $2A1 // -- NOT IMPLEMENTED --
|
||||
.label TODSNS = $2A2 // -- NOT IMPLEMENTED --
|
||||
.label TRDTMP = $2A3 // -- NOT IMPLEMENTED --
|
||||
.label TD1IRQ = $2A4 // -- NOT IMPLEMENTED --
|
||||
.label TLNIDX = $2A5 // -- NOT IMPLEMENTED --
|
||||
.label PALNTSC = $2A6 // 0 = NTSC, 1 = PAL XXX rename to TVSFLG
|
||||
// [!] XXX document $2A7-$2FF usage
|
||||
|
||||
;; Kernal tables for opened files, 10 entries each
|
||||
.alias LAT $259 ; logical file numbers
|
||||
.alias FAT $263 ; device numbers
|
||||
.alias SAT $26D ; secondary addresses
|
||||
|
||||
.alias MEMSTR $281
|
||||
.alias MEMSIZ $283 ; NOTE: Mapping the 64 erroniously has the hex as $282, while the DEC is correct
|
||||
|
||||
.alias TIMOUT $285 ; IEEE-488 timeout
|
||||
|
||||
.alias HIBASE $288 ; high byte of start of screen
|
||||
|
||||
.alias RSSTAT $297 ; RS-232 status
|
||||
|
||||
.alias PALNTSC $2A6 ; 0 = NTSC, 1 = PAL
|
||||
// BASIC vectors
|
||||
.label IERROR = $300 // $300-$301 -- NOT IMPLEMENTED --
|
||||
.label IMAIN = $302 // $302-$303 -- NOT IMPLEMENTED --
|
||||
.label ICRNCH = $304 // $304-$305 -- NOT IMPLEMENTED --
|
||||
.label IQPLOP = $306 // $306-$307 -- NOT IMPLEMENTED --
|
||||
.label IGONE = $308 // $308-$309 -- NOT IMPLEMENTED --
|
||||
.label IEVAL = $30A // $30A-$30B -- NOT IMPLEMENTED --
|
||||
|
||||
|
||||
;; Registers for SYS call
|
||||
.alias SAREG $30C
|
||||
.alias SXREG $30D
|
||||
.alias SYREG $30E
|
||||
.alias SPREG $30F
|
||||
.label SAREG = $30C // .A storage, for SYS call
|
||||
.label SXREG = $30D // .X storage, for SYS call
|
||||
.label SYREG = $30E // .Y storage, for SYS call
|
||||
.label SPREG = $30F // .P storage, for SYS call
|
||||
|
||||
.alias USRPOK $310 ; JMP instruction
|
||||
.alias USRADD $311 ; $311 - $312
|
||||
.label USRPOK = $310 // -- NOT IMPLEMENTED -- JMP instruction
|
||||
.label USRADD = $311 // $311-$312 -- NOT IMPLEMENTED --
|
||||
// $313 -- UNUSED -- free for user software
|
||||
|
||||
;; Kernal vectors - interrupts
|
||||
.alias CINV $314
|
||||
.alias CBINV $316
|
||||
.alias NMINV $318
|
||||
// Kernal vectors - interrupts
|
||||
.label CINV = $314 // $314-$315
|
||||
.label CBINV = $316 // $316-$317
|
||||
.label NMINV = $318 // $318-$319
|
||||
|
||||
;; Kernal vectors - routines
|
||||
.alias IOPEN $31A
|
||||
.alias ICLOSE $31C
|
||||
.alias ICHKIN $31E
|
||||
.alias ICKOUT $320
|
||||
.alias ICLRCH $322
|
||||
.alias IBASIN $324
|
||||
.alias IBSOUT $326
|
||||
.alias ISTOP $328
|
||||
.alias IGETIN $32A
|
||||
.alias ICLALL $32C
|
||||
.alias USRCMD $32E
|
||||
.alias ILOAD $330
|
||||
.alias ISAVE $331
|
||||
// Kernal vectors - routines
|
||||
.label IOPEN = $31A // $31A-$31B
|
||||
.label ICLOSE = $31C // $31C-$31D
|
||||
.label ICHKIN = $31E // $31E-$31F
|
||||
.label ICKOUT = $320 // $320-$321
|
||||
.label ICLRCH = $322 // $322-$323
|
||||
.label IBASIN = $324 // $324-$325
|
||||
.label IBSOUT = $326 // $326-$327
|
||||
.label ISTOP = $328 // $328-$329
|
||||
.label IGETIN = $32A // $32A-$32B
|
||||
.label ICLALL = $32C // $32C-$32D
|
||||
.label USRCMD = $32E // $32E-$32F
|
||||
.label ILOAD = $330 // $330-$331
|
||||
.label ISAVE = $332 // $332-$333
|
||||
|
||||
.alias TBUFFR $33C ; $33C-$3FB, tape buffer
|
||||
// $314 $334-$33B -- UNUSED -- free for user software
|
||||
|
||||
.label TBUFFR = $33C // $33C-$3FB, -- NOT IMPLEMENTED --, tape buffer
|
||||
|
||||
// $3FC $3FC-$3FF -- UNUSED -- free for user software
|
||||
@@ -1,5 +1,4 @@
|
||||
|
||||
;; BASIC startup vector
|
||||
|
||||
.alias IBASIC_COLD_START $A000
|
||||
.alias IBASIC_WARM_START $A002
|
||||
// BASIC startup vectors
|
||||
.label IBASIC_COLD_START = $A000
|
||||
.label IBASIC_WARM_START = $A002
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
;; Cartridge ROM locations
|
||||
.alias ICART_COLD_START $8000 ; $8000-$8001, cartridge cold start vector
|
||||
.alias ICART_WARM_START $8002 ; $8002-$8003, cartridge warm start vector (RESTORE key)
|
||||
.alias CART_SIG $8004 ; 5 bytes, signature for cartridge detection
|
||||
// Cartridge ROM locations
|
||||
.label ICART_COLD_START = $8000 // $8000-$8001, cartridge cold start vector
|
||||
.label ICART_WARM_START = $8002 // $8002-$8003, cartridge warm start vector (RESTORE key)
|
||||
.label CART_SIG = $8004 // $8004-$8008, signature for cartridge detection
|
||||
@@ -1,41 +1,41 @@
|
||||
|
||||
;; Kernal jump table
|
||||
.alias JCINT $FF81
|
||||
.alias JIOINIT $FF84
|
||||
.alias JRAMTAS $FF87
|
||||
.alias JRESTOR $FF8A
|
||||
.alias JVECTOR $FF8D
|
||||
.alias JSETMSG $FF90
|
||||
.alias JSECOND $FF93
|
||||
.alias JTKSA $FF96
|
||||
.alias JMEMTOP $FF99
|
||||
.alias JMEMBOT $FF9C
|
||||
.alias JSCNKEY $FF9F
|
||||
.alias JSETTMO $FFA2
|
||||
.alias JACPTR $FFA5
|
||||
.alias JCIOUT $FFA8
|
||||
.alias JUNTLK $FFAB
|
||||
.alias JUNLSN $FFAE
|
||||
.alias JLISTEN $FFB1
|
||||
.alias JTALK $FFB4
|
||||
.alias JREADST $FFB7
|
||||
.alias JSETFLS $FFBA
|
||||
.alias JSETNAM $FFBD
|
||||
.alias JOPEN $FFC0
|
||||
.alias JCLOSE $FFC3
|
||||
.alias JCHKIN $FFC6
|
||||
.alias JCKOUT $FFC9
|
||||
.alias JCLRCHN $FFCC
|
||||
.alias JCHRIN $FFCF
|
||||
.alias JCHROUT $FFD2
|
||||
.alias JLOAD $FFD5
|
||||
.alias JSAVE $FFD8
|
||||
.alias JSETTIM $FFDB
|
||||
.alias JRDTIM $FFDE
|
||||
.alias JSTOP $FFE1
|
||||
.alias JGETIN $FFE4
|
||||
.alias JCLALL $FFE7
|
||||
.alias JUDTIM $FFEA
|
||||
.alias JSCREEN $FFED
|
||||
.alias JPLOT $FFF0
|
||||
.alias JIOBASE $FFF3
|
||||
// Kernal jump table
|
||||
.label JCINT = $FF81
|
||||
.label JIOINIT = $FF84
|
||||
.label JRAMTAS = $FF87
|
||||
.label JRESTOR = $FF8A
|
||||
.label JVECTOR = $FF8D
|
||||
.label JSETMSG = $FF90
|
||||
.label JSECOND = $FF93
|
||||
.label JTKSA = $FF96
|
||||
.label JMEMTOP = $FF99
|
||||
.label JMEMBOT = $FF9C
|
||||
.label JSCNKEY = $FF9F
|
||||
.label JSETTMO = $FFA2
|
||||
.label JACPTR = $FFA5
|
||||
.label JCIOUT = $FFA8
|
||||
.label JUNTLK = $FFAB
|
||||
.label JUNLSN = $FFAE
|
||||
.label JLISTEN = $FFB1
|
||||
.label JTALK = $FFB4
|
||||
.label JREADST = $FFB7
|
||||
.label JSETFLS = $FFBA
|
||||
.label JSETNAM = $FFBD
|
||||
.label JOPEN = $FFC0
|
||||
.label JCLOSE = $FFC3
|
||||
.label JCHKIN = $FFC6
|
||||
.label JCKOUT = $FFC9
|
||||
.label JCLRCHN = $FFCC
|
||||
.label JCHRIN = $FFCF
|
||||
.label JCHROUT = $FFD2
|
||||
.label JLOAD = $FFD5
|
||||
.label JSAVE = $FFD8
|
||||
.label JSETTIM = $FFDB
|
||||
.label JRDTIM = $FFDE
|
||||
.label JSTOP = $FFE1
|
||||
.label JGETIN = $FFE4
|
||||
.label JCLALL = $FFE7
|
||||
.label JUDTIM = $FFEA
|
||||
.label JSCREEN = $FFED
|
||||
.label JPLOT = $FFF0
|
||||
.label JIOBASE = $FFF3
|
||||
Reference in new issue
Block a user