586 lines
26 KiB
NASM
586 lines
26 KiB
NASM
|
;
|
||
|
; Commodore Plus 4 specific constants and memory addresses
|
||
|
;
|
||
|
.proff
|
||
|
|
||
|
.cpu "6502"
|
||
|
|
||
|
io .namespace
|
||
|
|
||
|
.include "ted.asm"
|
||
|
|
||
|
.virtual $ff00
|
||
|
ted .dstruct _ted
|
||
|
.endvirtual
|
||
|
|
||
|
.endnamespace
|
||
|
|
||
|
BASIC_START = $1001
|
||
|
BTOK_SYS = $9e
|
||
|
SCREEN_RAM = $0c00
|
||
|
|
||
|
; ===========================================================================
|
||
|
|
||
|
PDIR = $0000 ; 7501 on-chip data-direction register
|
||
|
PORT = $0001 ; 7501 on-chip 8-bit Input/Output register
|
||
|
SRCHTK = $0002 ; Token 'search' looks for (run-time stack)
|
||
|
ZPVEC1 = $0003 ; Temp (renumber)
|
||
|
ZPVEC2 = $0005 ; Temp (renumber)
|
||
|
CHARAC = $0007 ; Search character
|
||
|
ENDCHR = $0008 ; Flag: scan for quote at end of string
|
||
|
TRMPOS = $0009 ; Screen column from last TAB
|
||
|
VERCK = $000A ; Flag: 0 = load 1 - verify
|
||
|
COUNT = $000B ; Input buffer pointer / No. of subsctipts
|
||
|
DIMFLG = $000C ; Flag: Default Array DIMension
|
||
|
VALTYP = $000D ; Data type: $FF = string $00 = numeric
|
||
|
INTFLG = $000E ; Data type: $80 = integer, $00 = floating
|
||
|
DORES = $000F ; Flag: DATA scan/LIST quote/garbage coll
|
||
|
SUBFLG = $0010 ; Flag: subscript ref / user function coll
|
||
|
INPFLG = $0011 ; Flag: $00 = INPUT, $43 = GET, $98 = READ
|
||
|
TANSGN = $0012 ; Flag TAN siqn / comparison result
|
||
|
CHANNL = $0013 ; Flag: INPUT prompt
|
||
|
LINNUM = $0014 ; Temp: integer value
|
||
|
TEMPPT = $0016 ; Pointer: temporary string stack
|
||
|
LASTPT = $0317 ; Last temp string address
|
||
|
TEMPST = $0019 ; Stack for temporary strings
|
||
|
INDEX1 = $0022 ; Utility pointer area
|
||
|
INDEX2 = $0024 ; Utility pointer area
|
||
|
RESHO = $0026 ;
|
||
|
RESMOH = $0027 ;
|
||
|
RESMO = $0028 ;
|
||
|
RESLO = $0029 ;
|
||
|
TXTTAB = $002B ; Pointer: start of BASIC text
|
||
|
VARTAB = $002D ; Pointer: start of BASIC variables
|
||
|
ARYTAB = $002E ; Pointer: start of BASIC arrays
|
||
|
STREND = $0031 ; Pointer: end of BASIC arrays (+1)
|
||
|
FRFTOP = $0033 ; Pointer: bottom of string storage
|
||
|
FRESPC = $0035 ; Utility string pointer
|
||
|
MEMSIZ = $0037 ; Pointer: highest address used by BASIC
|
||
|
CURLIN = $0039 ; Current BASIC line number
|
||
|
TXTPTR = $003B ;
|
||
|
FNDPNT = $003D ;
|
||
|
DATLIN = $003F ; Current DATA line number
|
||
|
DATPTR = $0041 ; Pointer: Current DATA item address
|
||
|
INPPTR = $0043 ; Vector: INPUT routine
|
||
|
VARNAM = $0045 ; Current BASIC variable name
|
||
|
VARPNT = $0047 ; Pointer: Current BASIC variable data
|
||
|
FORPNT = $0049 ; Pointer: Index variable for FOR/NEXT
|
||
|
OPPTR = $0048 ;
|
||
|
OPMASK = $004D ;
|
||
|
DEFPNT = $004E ;
|
||
|
DSCPNT = $0050 ;
|
||
|
HELPER = $0053 ;
|
||
|
JMPER = $0054 ;
|
||
|
SIZE = $0055 ;
|
||
|
OLDOV = $0056 ;
|
||
|
TEMPF1 = $0057 ;
|
||
|
HIGHDS = $0058 ;
|
||
|
HIGHTR = $005A ;
|
||
|
LOWDS = $005D ;
|
||
|
LoWTR = $005F ;
|
||
|
EXPSGN = $0060 ;
|
||
|
FACEXP = $0061 ; Floating-point accumulator #1: exponent
|
||
|
FACHO = $0062 ; Floating accum. #1: mantissa
|
||
|
FACMOH = $0063 ;
|
||
|
FACMO = $0064 ;
|
||
|
FACLo = $0065 ;
|
||
|
FACSGN = $0066 ; Floating accum. #1: sign
|
||
|
SGNFLG = $0067 ; Pointer: series evaluation constant
|
||
|
BITS = $0068 ; Floating accum. #1: overflow digit
|
||
|
ARGEXP = $0069 ; Floating-point accumulator #2: exponent
|
||
|
ARGHO = $006A ; Floating accum. #2: mantissa
|
||
|
ARGMOH = $006B ;
|
||
|
ARGMO = $006C ;
|
||
|
ARGLO = $006D ;
|
||
|
ARGSGN = $006E ; Floating accum. #2: sign
|
||
|
ARISGN = $006F ; Sign comparison result: accum. #1 vs #2
|
||
|
FACOV = $0070 ; Floating accum. #1. low-order (rounding)
|
||
|
FBUFPT = $0071 ; Pointer: cassette buffer
|
||
|
AUTINC = $0073 ; Increment value for auto (0 = off)
|
||
|
MVDFLG = $0075 ; Flag if 10K hires allocated
|
||
|
KEYNUM = $0076 ;
|
||
|
KEYSIZ = $0077 ;
|
||
|
SYNTMP = $0078 ; Used as temp Eor indirect loads
|
||
|
DSDESC = $0079 ; Descriptor for DSS
|
||
|
TOS = $007C ; Top of run time stack
|
||
|
TMPTON = $007E ; Temps used by music (tone & volume)
|
||
|
VOICNO = $0080 ;
|
||
|
RUNMOD = $0081 ;
|
||
|
POINT = $0082 ;
|
||
|
GRAPHM = $0083 ; Current graphic mode
|
||
|
COLSEL = $0084 ; Current color selected
|
||
|
MC1 = $0085 ; Multicolor 1
|
||
|
FG = $0086 ; Foreground color
|
||
|
SCXMAX = $0087 ; Maximum # of columns
|
||
|
SCYMAX = $0088 ; Maximum # of rows
|
||
|
LTFLAG = $0089 ; Paint-left flag
|
||
|
RTFLAG = $008A ; Paint-Right flag
|
||
|
STOPNH = $008B ; Stop paint if not BG (Not same Color)
|
||
|
GRAPNT = $008C ;
|
||
|
VTEMP1 = $008E ;
|
||
|
VTEMP2 = $008F ;
|
||
|
STATUS = $0090 ; Kernal I/O status word: ST
|
||
|
STREY = $0091 ; Flag: STOP key / RVS key
|
||
|
SPVERR = $0092 ; Temp
|
||
|
VERFCK = $0093 ; Flag: 0 = load, 1 = verify
|
||
|
C3PO = $0094 ; Plag: serial bus - output char buffered
|
||
|
BSOUR = $0095 ; Buffered character for serial bus
|
||
|
XSAV = $0096 ; Temp for basin
|
||
|
LDTND = $0097 ; # of open files / index to file table
|
||
|
DFLTN = $0098 ; Default input device (0)
|
||
|
DFLTO = $0099 ; Default output (CMD) device (3)
|
||
|
MSGFLG = $009A ; Flag: $80 = direct mode $00 = program
|
||
|
SAL = $009B ; Tape pass 1 error log
|
||
|
SAH = $009C ; Tape pass 2 error log
|
||
|
EAL = $009D ;
|
||
|
EAH = $009E ;
|
||
|
T1 = $009F ; Temp data area
|
||
|
T2 = $00A1 ; Temp data area
|
||
|
TIME = $00A3 ; Real-time jiffy clock (approx) 1/60 sec
|
||
|
R2D2 = $00A6 ; Serial bus usage (EOI on output)
|
||
|
TPBYTE = $00A7 ; Byte to be written/read on/off tape
|
||
|
BSOUR1 = $00A8 ; Temp used by serial routine
|
||
|
FPVERR = $00A9 ;
|
||
|
DCOUNT = $00AA ;
|
||
|
FNLEN = $00A8 ; Length of current file name
|
||
|
LA = $00AC ; Current logical fiie number
|
||
|
SA = $00AD ; Current seconda.y address
|
||
|
FA = $00AE ; Current device number
|
||
|
FNADR = $00AF ; Pointer: current file name
|
||
|
ERRSUM = $00B1 ;
|
||
|
STAL = $00B2 ; I/O start address
|
||
|
STAH = $00B3 ;
|
||
|
MEMUSS = $00B4 ; Load ram base
|
||
|
TAPEBS = $00B6 ; Base pointer to cassette base
|
||
|
TMP2 = $00B8 ;
|
||
|
WRBASE = $00BA ; Pointer to data for tape writes
|
||
|
IMPARM = $00BC ; Pointer to immediate string for primms
|
||
|
FETPTR = $00BE ; Pointer to byte to be fetched in bank fetc
|
||
|
SEDSAL = $00C0 ; Temp for scrolling
|
||
|
RVS = $00C2 ; RVS field flag on
|
||
|
INDX = $00C3 ;
|
||
|
LSXP = $00C4 ; X position at start
|
||
|
LSTP = $00C5 ;
|
||
|
SFDX = $00C6 ; Flag: shift mode for print
|
||
|
CRSW = $00C7 ; Flag: INPUT or GET from keyboard
|
||
|
PNT = $00C8 ; Pointer: current screen line address
|
||
|
PNTR = $00CA ; Cursor column on current line
|
||
|
QTSW = $00CB ; Flag: editor in quote mode, $00 = no
|
||
|
SEDT1 = $00CC ; Editor temp use
|
||
|
TBLX = $00CD ; Current cursor physical line number
|
||
|
DATAX = $00CE ; Temp data area
|
||
|
INSRT = $00CF ; Flag: insert mode, >0 = # INSTs
|
||
|
CIRSEG = $00E9 ; Screen line link table / editor temps
|
||
|
USER = $00EA ; Screen editor color IP
|
||
|
KEYTAB = $00EC ; Key scan table indirect
|
||
|
TMPKEY = $00EE ;
|
||
|
NDX = $00EF ; Index to keyboard queue
|
||
|
STPFLG = $00F0 ; Pause flag
|
||
|
TO = $00F1 ; Monitor ZP storage
|
||
|
CHRPTR = $00F3 ;
|
||
|
BUFEND = $00F4 ;
|
||
|
CHKSUM = $00F5 ; Temp for checksum calculation
|
||
|
LENGTH = $00F6 ;
|
||
|
PASS = $00F7 ; Which pass we are doing str
|
||
|
TYPE = $00F8 ; Type of block
|
||
|
USE4DY = $00F9 ; (B.7 = 1)=> for wr, (B.6 = 1)=> for rd
|
||
|
XSTOP = $00FA ; Save xreg for quick stopkey test
|
||
|
CURBNK = $00FB ; Current bank configuration
|
||
|
XoN = $00FC ; Char to send for a x-on (RS232)
|
||
|
XoFF = $00FD ; Char to send for a x-off (RS232)
|
||
|
SEDT2 = $00FE ; Editor temporary use
|
||
|
LOFBUF = $00FF ;
|
||
|
|
||
|
|
||
|
FBUFFR = $0100 ;
|
||
|
SAVEA = $0110 ; Temp Locations for
|
||
|
SAVEY = $0111 ; ... for Save and
|
||
|
SAVEX = $0112 ; ... Restore
|
||
|
COLKEY = $0113 ; Color/luminance table in RAM
|
||
|
SYSSTK = $0124 ; System stack
|
||
|
BUF = $0200 ; Basic/monitor input buffer
|
||
|
OLDLIN = $0259 ; Basic storage
|
||
|
OLDTXT = $025B ; Basic storage
|
||
|
XCNT = $025D ; DOS loop counter
|
||
|
PNBUFR = $025E ; Area for filename
|
||
|
DOSF1L = $026E ; DOS filename 1 length
|
||
|
DOSDS1 = $026F ; DOS disk drive 1
|
||
|
DOSF1A = $0270 ; DOS filename 1 addr
|
||
|
DOSF2L = $0272 ; DOS filename 2 length
|
||
|
DOSDS2 = $0273 ; DOS disk drive 2
|
||
|
DOSF2A = $0274 ; DOS filename 2 addr
|
||
|
DOSLA = $0276 ; DOS logical address
|
||
|
DOSEA = $0277 ; DOS phys addr
|
||
|
DOSSA = $0278 ; DOS secordary address
|
||
|
DOSDID = $0279 ; DOS disk identifier
|
||
|
DIDCHK = $0278 ; DOS DID flag
|
||
|
DOSSTR = $027C ; DOS output string buffer
|
||
|
DOSSPC = $027D ; Area used to build DOS string
|
||
|
|
||
|
XPOS = $02AD ; Current x position
|
||
|
YPOS = $02AE ; Current y position
|
||
|
XDEST = $02B1 ; X coordinate destination
|
||
|
YDEST = $02B3 ; Y coordinate destination
|
||
|
XABS = $02B5 ;
|
||
|
YABS = $02B7 ;
|
||
|
XSGN = $02B9 ;
|
||
|
YSGN = $02BB ;
|
||
|
FCT1 = $02BD ;
|
||
|
FCT2 = $02BF ;
|
||
|
ERRVAL = $02C1 ;
|
||
|
LESSER = $02C3 ;
|
||
|
GREATR = $02C4 ;
|
||
|
ANGSGN = $02C5 ; Sign of angle
|
||
|
SINVAL = $02C6 ; Sine of value of angle
|
||
|
COSVAL = $02C8 ; Cosine of value of angle
|
||
|
ANGCNT = $02CA ; Temps for angle distance routines
|
||
|
|
||
|
BNR = $02CD ; Pointer to begin no.
|
||
|
ENR = $02CE ; Pointer to end no.
|
||
|
DOLR = $02CF ; Dollar flag
|
||
|
FLAG = $02D0 ; Comma flag
|
||
|
SWE = $02D1 ; Counter
|
||
|
USGN = $02D2 ; Sign exponent
|
||
|
UEXP = $02D3 ; Pointer to exponent
|
||
|
VN = $02D4 ; # of digits before decimal point
|
||
|
CHSN = $02D5 ; Justify flag
|
||
|
VF = $02D6 ; # of pos before decimal point (field)
|
||
|
NF = $02D7 ; # of pos after decimal point (field)
|
||
|
POSP = $02D8 ; +/- flag (field)
|
||
|
FESP = $02D9 ; Exponent flag (field)
|
||
|
ETOF = $02DA ; Switch
|
||
|
CFORM = $02D8 ; Char counter (field)
|
||
|
SNO = $02DC ; Sign no.
|
||
|
BLFD = $02DD ; Blank/star flag
|
||
|
BEGFD = $02DE ; Pointer to beginning of field
|
||
|
LFOR = $02DF ; Length of format
|
||
|
ENDFD = $02E0 ; Pointer to end of field
|
||
|
|
||
|
XCENTR = $02CC
|
||
|
YCENTR = $02CE
|
||
|
XDIST1 = $02D0
|
||
|
YDIST1 = $02D2
|
||
|
XDIST2 = $02D4
|
||
|
YDIST2 = $02D6
|
||
|
|
||
|
COLCNT = $02DA ; Characters column counter
|
||
|
ROWCNT = $02DB ; Characters row counter
|
||
|
STRCNT = $02DC
|
||
|
|
||
|
|
||
|
XCORD1 = $02CC
|
||
|
YCORD1 = $02CE
|
||
|
BOXANG = $02D0 ; Rotation angle
|
||
|
XCOUNT = $02D2
|
||
|
YCOUNT = $02D4
|
||
|
BXLENG = $02D6 ; Length of a side
|
||
|
XCORD2 = $02D8
|
||
|
YCORD2 = $02DA
|
||
|
|
||
|
XCIRCL = $02CC ; Circle center, x coordinate
|
||
|
YCIRCL = $02CE ; Circle center, y coordinate
|
||
|
XRADUS = $02D0 ; X radius
|
||
|
YRADUS = $02D2 ; Y radius
|
||
|
ROTANG = $02D4 ; Rotation angle
|
||
|
ANGBEG = $02D8 ; Arc angle start
|
||
|
ANGEND = $02DA ; Arc angle end
|
||
|
XRCOS = $02DC ; X radius * cos (rotation angle)
|
||
|
YRSIN = $02DE ; Y radius * sin (rotation angle)
|
||
|
XRSIN = $02E0 ; X radius * sin (rotation angle)
|
||
|
YRCOS = $02E2 ; Y radius * cos (rotation angle)
|
||
|
|
||
|
|
||
|
KEYLEN = $02CD
|
||
|
KEYNXT = $02CE
|
||
|
STRS2 = $02CE ; String length
|
||
|
GETTYP = $02D0 ; Replace string mode
|
||
|
STRPTR = $02D1 ; String position counter
|
||
|
OLDBYT = $02D2 ; Old bit map byte
|
||
|
NEWBYT = $02D3 ; New string or bit map byte
|
||
|
XSIZE = $02D5 ; Shape column length
|
||
|
YSIZE = $02D7 ; Shape row length
|
||
|
XSAVE = $02D9 ; Temp for column length
|
||
|
STRADR = $02D8 ; Save shape string descriptor
|
||
|
BITIDX = $02DD ; Bit index into byte
|
||
|
SAYSIZ = $02DE ; Temporary work locations
|
||
|
|
||
|
CHRPAG = $02E4 ; High byte addr of char ROM for char cmd
|
||
|
LITCNT = $02E5 ; Temp for gshape
|
||
|
SCALEM = $02E6 ; Scale mode flag
|
||
|
WIDTH = $02E7 ; Double width flag
|
||
|
FILFLG = $02E8 ; Box fill flag
|
||
|
BITMSK = $02E9 ; Temp for bit mask
|
||
|
NUMCNT = $02EA
|
||
|
TRCFLG = $02EB ; Flags trace mode
|
||
|
|
||
|
T3 = $02EC
|
||
|
T4 = $02ED
|
||
|
VTEMP3 = $02EF ; Graphic temp storage
|
||
|
VTEMP4 = $02F0
|
||
|
VTEMP5 = $02F1
|
||
|
|
||
|
ADRAY1 = $02E2 ; Ptr to routine: convert float to integer
|
||
|
ADRAY2 = $02F4 ; Ptr to routine: convert integer to float
|
||
|
|
||
|
BNKVEC = $02FE ; Vector for function cartridge users
|
||
|
IERROR = $0300 ; Indirect Error (Output Error in .X)
|
||
|
IMAIN = $0302 ; Indirect Main (System Direct Loop)
|
||
|
ICRNCH = $0304 ; Indirect Crunch (Tokenization Routine)
|
||
|
IOPLOP = $0306 ; Indirect List (Char List)
|
||
|
IGONE = $0308 ; Indirect Gone (Character Dispatch)
|
||
|
IEVAL = $030A ; Indirect Eval (Symbol Evaluation)
|
||
|
IESCLK = $030C ; Escape token crunch
|
||
|
IESCPR = $030E ;
|
||
|
IESCEX = $0310 ;
|
||
|
ITIME = $0312 ;
|
||
|
CINV = $0314 ; IRQ Ram Vector
|
||
|
CBINV = $0316 ; BRK Instr RAM Vector
|
||
|
IOPEN = $0318 ; Indirects for Code
|
||
|
ICLOSE = $031A ;
|
||
|
ICHKIN = $031C ;
|
||
|
ICKOUT = $031E ;
|
||
|
ICLRCH = $0320 ;
|
||
|
IBASIN = $0322 ;
|
||
|
IBSOUT = $0324 ;
|
||
|
ISTOP = $0326 ;
|
||
|
IGETIN = $0328 ;
|
||
|
ICLALL = $032A ;
|
||
|
USRCMD = $032C ;
|
||
|
ILOAD = $032E ;
|
||
|
ISAVE = $0330 ; Savesp
|
||
|
|
||
|
TAPBUF = $0333 ; Cassette tape buffer
|
||
|
WRLEN = $03F3 ; Length of data to be written to tape
|
||
|
RDCNT = $03F5 ; Length of data to be read from tape
|
||
|
INPQUE = $03F7 ; RS-232 input queue
|
||
|
ESTARL = $0437
|
||
|
ESTAKH = $0455
|
||
|
|
||
|
CHRGET = $0473
|
||
|
CHRGOT = $0479
|
||
|
QNUM = $0485
|
||
|
|
||
|
INDSUB = $0494 ; Shared ROM fetch sub
|
||
|
ZERO = $04A2 ; Numeric constant for Basic
|
||
|
|
||
|
INDTXT = $04A5 ; Txtptr
|
||
|
INDIN1 = $04B0 ; Index & Index1
|
||
|
INDIN2 = $04BB ; Index2
|
||
|
INDST1 = $04C6 ; Strng1
|
||
|
INDLOW = $04D1 ; Lowtr
|
||
|
INDFMO = $04DC ; Facmo
|
||
|
|
||
|
PUFILL = $04E7 ; Print using fill symbol [space]
|
||
|
PUCOMA = $04E8 ; Print using comma symbol [;]
|
||
|
PUDOT = $04E9 ; Print using D.P. symbol [.]
|
||
|
PUMONY = $04EA ; Print using monetary symbol [$]
|
||
|
|
||
|
TMPDES = $04EB ; Temp for instr
|
||
|
ERRNUM = $04EF ; Last error number
|
||
|
ERRLIN = $04F0 ; Line # of last error
|
||
|
TRAPNO = $04F2 ; Line to go on error
|
||
|
TMPTRP = $04F4 ; Hold trap no. temporarily
|
||
|
ERRTXT = $04F5
|
||
|
OLDSTR = $04F7
|
||
|
|
||
|
TMPTXT = $04F8
|
||
|
TMPLIN = $04FA
|
||
|
|
||
|
MTIMLO = $04FC ; Table of pending jiffies (2's comp)
|
||
|
MTIMHI = $04FE
|
||
|
USRPOK = $0500
|
||
|
KERNDX = $0503
|
||
|
DEJAVU = $0508 ; 'cold' or 'warm' start status
|
||
|
|
||
|
LAT = $0509 ; Logical file numbers
|
||
|
FAT = $0513 ; Primary device numbers
|
||
|
SAT = $051D ; Secondary addresses
|
||
|
|
||
|
KEYD = $0527 ; IRQ keyboard buffer
|
||
|
MEMSTR = $0531 ; Start of memory [1000]
|
||
|
|
||
|
MSIZ = $0533 ; Top of memory [FD00]
|
||
|
TIMOUT = $0535 ; IEEE timeout flag
|
||
|
|
||
|
FILEND = $0536 ; File end reached = 1, 0 otherwise
|
||
|
CTALLY = $0537 ; # of chars left in buffer (for R & W)
|
||
|
CBUFVA = $0538 ; # of total valid chars in buffer (R)
|
||
|
TPTR = $0539 ; Ptr to next char in buffer (for R & W)
|
||
|
FLTYPE = $053A ; Contains type of current cass file
|
||
|
|
||
|
COLOR = $053B ; Active attribute byte
|
||
|
FLASH = $053C ; Character flash flag
|
||
|
HIBASE = $053E ; OC Base location of screen (top) [0C]
|
||
|
XMAX = $053F ;
|
||
|
RPTFLG = $0540 ; Key repeat flag
|
||
|
KOUUT = $0541 ;
|
||
|
DELAY = $0542 ;
|
||
|
SHFLAG = $0543 ; Shift flag byte
|
||
|
LSTSHF = $0544 ; Last shift pattern
|
||
|
KEYLOG = $0545 ; Indirect for keyboard table setup
|
||
|
MODE = $0547 ; shift, C=
|
||
|
AUTODN = $0548 ; Auto scroll down flag (0=on,0off)
|
||
|
LINTMP = $0549
|
||
|
ROLFLG = $054A
|
||
|
|
||
|
FORMAT = $054B ; Monitor non-zpage storage
|
||
|
MSAL = $054C
|
||
|
WRAP = $054F
|
||
|
TMPC = $0550
|
||
|
DIFF = $0551
|
||
|
PCH = $0552
|
||
|
PCL = $0553
|
||
|
FLGS = $0554
|
||
|
ACC = $0555
|
||
|
XR = $0556
|
||
|
YR = $0557
|
||
|
SP = $0558
|
||
|
INYL = $0559
|
||
|
INVH = $055A
|
||
|
CMPFLG = $055B ; Used by various monitor routines
|
||
|
BAD = $055C
|
||
|
|
||
|
KYNDX = $055D ; Used for programmable keys
|
||
|
KEYIDX = $055E ;
|
||
|
KEYBUF = $055F ; Table of P.F. lengths
|
||
|
PKY9UF = $0567 ; P.F. Key storage area
|
||
|
|
||
|
KDATA = $05E7 ; Temp for data write to kennedy
|
||
|
RDYCMD = $05E8 ; Select for kennedy read or write
|
||
|
KDYNUM = $05E9 ; Kennedy's dev #
|
||
|
RDYPRS = $05EA ; Rennedy present = $ff, else = $00
|
||
|
KDYTYP = $05EB ; Temp for type of open for kennedy
|
||
|
|
||
|
|
||
|
SAVRAM = $05EC ; 1 page used by banking routines
|
||
|
PAT = $05EC ; Physical Address Table
|
||
|
LNGJMP = $05F0 ; Long jump address
|
||
|
FETARG = $05F2 ; Long jump accumulator
|
||
|
FETXRG = $05F3 ; Long jump x register
|
||
|
FETSRG = $05F4 ; Long jump status register
|
||
|
|
||
|
AREAS = $05F5 ; RAM areas for banking
|
||
|
|
||
|
ASPECH = $065E ; RAM area for speech
|
||
|
|
||
|
STKTOP = $06EC ; BASIC run-time stack
|
||
|
|
||
|
WROUT = $07B0 ; Byte to be written on tape
|
||
|
PARITY = $07B1 ; Temp for parity calc
|
||
|
|
||
|
TT1 = $07B2 ; Temp for write-header
|
||
|
TT2 = $07B3 ; Temp for write-header
|
||
|
RDBITS = $07B5 ; Local index for READBYTE routine
|
||
|
ERRSP = $07B6 ; Pointer into the error stack
|
||
|
FPERRS = $07B7 ; Number of first pass errors
|
||
|
|
||
|
DSAMP1 = $07B8 ; Time constant
|
||
|
DSAMP2 = $07BA ; Time constant
|
||
|
ZCELL = $07BC ; Time constant
|
||
|
|
||
|
SRECOV = $07BE ; Stack marker for stopkey recover
|
||
|
DRECOV = $07BF ; Stack marker for dropkey recover
|
||
|
TRSAVE = $07C0 ; params passed to RDBLOK
|
||
|
RDETMP = $07C4 ; Temp stat save for RDBLOK
|
||
|
LDRSCN = $07C5 ; # consec shorts to find in leader
|
||
|
CDERRM = $07C6 ; # Errors fatal in RD countdown
|
||
|
VSAVE = $07C7 ; Temp for Verify command
|
||
|
T1PIPE = $07C8 ; Pipe temp for T1
|
||
|
ENEXT = $07CC ; Read error propagate
|
||
|
|
||
|
|
||
|
UOUTQ = $07CD ; User chracter to send
|
||
|
UOUTFG = $07CE ; 0 = empty ; 1 = full
|
||
|
SOUT9 = $07CF ; System character to send
|
||
|
SOUNFG = $07D0 ; 0 = empty ; 1 = full
|
||
|
INOFPT = $07D1 ; Pntr to front of input queue
|
||
|
INQRPT = $07D2 ; Pntr to rear of input queue
|
||
|
INQCNT = $07D3 ; # of chars in input queue
|
||
|
ASTAT = $07D4 ; Temp status for ACIA
|
||
|
AINTMP = $07D5 ; Temp for input routine
|
||
|
ALSTOP = $07D6 ; FLG for local pause
|
||
|
ARSTOP = $07D7 ; FLG for remote pause
|
||
|
APRES = $07D8 ; FLG to indicate presence of ACIA
|
||
|
|
||
|
RLUDES = $07D9 ; Indirect routine downloaded
|
||
|
SCBOT = $07E5 ; Screen bottom (0...24)
|
||
|
SCTOP = $07E6 ; Screen top
|
||
|
SCLF = $07E7 ; Screen left (0...39)
|
||
|
SCRT = $07E8 ; Screen right
|
||
|
SCRDIS = $07E9 ; Negative = scroll out
|
||
|
INSFLG = $07EA ; Insert mode: FF = on, 00 = off
|
||
|
LSTCHR = $07EB
|
||
|
LOGSCR = $07EC
|
||
|
TCOLOR = $07ED
|
||
|
BITABL = $07EE
|
||
|
|
||
|
SAREG = $07F2 ; Registers for SYS command
|
||
|
SXREG = $07F3
|
||
|
SYREG = $07F4
|
||
|
SPREG = $07F5
|
||
|
|
||
|
LSTX = $07F6 ; Key scan index
|
||
|
STPDSB = $07F7 ; Flag to disable CTRL-S pause
|
||
|
RAMROM = $07F8 ; MSB for monitor fetches from ROM=0;RAM=1
|
||
|
|
||
|
COLSW = $07F9 ; MSB for color/lim table in RAM=0;ROM=1
|
||
|
FFRMSK = $07FA ; ROM mask for split screen
|
||
|
VMBMSK = $07FB ; VM base mask for split screen
|
||
|
LSEM = $07FC ; Motor lock semaphore for cassette
|
||
|
PALCNT = $07FD ; PAL tod
|
||
|
|
||
|
|
||
|
TEDATR = $0800 ; TED attribute bytes
|
||
|
TEDSCN = $0C00 ; TED character pointers
|
||
|
BASBGN = $1000 ; Start of BASIC text area
|
||
|
BMLUM = $1800 ; Luminance for bit map screen
|
||
|
BMCOLR = $1C00 ; Color for bit map
|
||
|
|
||
|
; KERNAL JUMP TABLE
|
||
|
|
||
|
CINT = $ff81 ; Initialize screen editor
|
||
|
IOINIT = $ff84 ; Initialize I/O devices
|
||
|
RAMTAS = $ff87 ; Ram test
|
||
|
RESTOR = $ff8a ; Restore vectors to initial values
|
||
|
VECTOR = $ff8d ; Change vectors for user
|
||
|
SETMSG = $ff90 ; Control O.S. messages
|
||
|
SECND = $ff93 ; Send SA after LISTEN
|
||
|
TKSA = $ff96 ; Send SA after TALK
|
||
|
MEMTOP = $ff99 ; Set/Read top of memory
|
||
|
MEMBOT = $ff9c ; Set/Read bottom of memory
|
||
|
SCNKEY = $ff9f ; Scan keyboard
|
||
|
SETTMO = $ffa2 ; Set timeout in DMA disk
|
||
|
ACPTR = $ffa5 ; Handshake serial bus or DMA disk byte in
|
||
|
CIoUT = $ffa8 ; Handshake serial bus or DMA disk byte out
|
||
|
UNTLR = $ffab ; Send UNTALK out serial bus or DMA disk
|
||
|
UNLSN = $ffae ; Send UNLISTEN out serial bus or DMA disk
|
||
|
LISTN = $ffb1 ; Send LISTEN out serial bus or DMA disk
|
||
|
TALK = $ffb4 ; Send TALK out serial bus or DMA disk
|
||
|
READST = $ffb7 ; Return I/O STATUS byte
|
||
|
SETLFS = $ffba ; Set LA, FA, SA
|
||
|
SETNAM = $ffbd ; Set length and FN address
|
||
|
OPEN = $ffc0 ; Open logical file
|
||
|
CLOSE = $ffc3 ; Close logical file
|
||
|
CHKIN = $ffc6 ; Open channel in
|
||
|
CHOUT = $ffc9 ; open channel out
|
||
|
CLRCHN = $ffcc ; Close I/O channels
|
||
|
BASIN = $ffcf ; Input from channel
|
||
|
CHRIN = BASIN
|
||
|
BSOUT = $ffd2 ; output to channel
|
||
|
CHROUT = BSOUT
|
||
|
LOADSP = $ffd5 ; Load from file
|
||
|
SAYESP = $ffd8 ; Save to file
|
||
|
SETTIM = $ffdb ; Set internal clock
|
||
|
RDTIM = $ffde ; Read internal clock
|
||
|
STOP = $ffe1 ; Scan STOP key
|
||
|
GETIN = $ffe4 ; Get character from queue
|
||
|
CLALL = $ffe7 ; Close all files
|
||
|
UDTIM = $ffea ; Increment clock
|
||
|
SCRORG = $ffed ; Screen org.
|
||
|
PLOT = $fff0 ; Read/Set X,Y coord of cursor
|
||
|
IOBASE = $fff3 ; Return location of start of I/O
|
||
|
|
||
|
.pron
|
||
|
|
||
|
; vim: syntax=64tass
|