home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CBM Funet Archive
/
cbm-funet-archive-2003.iso
/
cbm
/
maps
/
C128ram.doc
< prev
next >
Wrap
Text File
|
1995-04-26
|
50KB
|
1,752 lines
;cOMMODORE 128 ram mEMORY mAP
;v1.3B18 nOV 1994
c128 mEMORY mAP
tHIS IS AS COMPLETE AS POSSIBLE COMPILATION OF TWO SEPARATE MEMORY MAPS,
AND A FEW RANDOM SOURCES WHICH NATURALLY DO DIFFER FROM EACH OTHER.
c128 ram
aLL bANKS
0000i/o DIRECTION REGISTER
0001i/o PORT, SIMILAR TO c64
0002tOKEN 'search' LOOKS FOR, bANK nUMBER, jUMP TO sys aDDRESS
0003-0004sys ADDRESS, mlm REGISTER pc
0005-0009sys AND mlm REGISTER SAVE (sr, a, x, y, sp)
0005sr tEMP
0006ac tEMP
0007xr tEMP
0008yr tEMP
0009sp tEMP, iNTEGER
000AsCAN-QUOTES FLAG
000Btab COLUMN SAVE
000CfLAG: 0 = load, 1 = verify
000DiNPUT BUFFER POINTER / NUMBER OF SUBSCRIPTS
000EdEFAULT dim FLAG
000FdATA tYPE: ff = STRING, 00 = NUMERIC
0010dATA tYPE: 80 = INTEGER, 00 = FLOATING POINT
0011data SCAN / list QUOTE / MEMORY FLAG
0012sUBSCRIPT / fnXX FLAG
0013fLAG: 0 = input, $40 = get, $98 = read
0014atn SIGN / cOMPARISON EVALUATION FLAG
0015cURRENT i/o PROMPT FLAG
0016-0017iNTEGER VALUE
0018pOINTER: TEMPORARY STRING STACK
0019-0023sTACK FOR TEMPORARY STRINGS
0024-0027uTILITY POINTER AREA
0028-002CpRODUCT AREA FOR MULTIPLICATION
002D-002EpOINTER: sTART-OF-basic (BANK 0) [1c01]
002F-0030pOINTER: sTART-OF-VARIABLES (BANK 1) [0400]
0031-0032pOINTER: sTART-OF-ARRAYS
0033-0034pOINTER: eND-OF-ARRAYS
0035-0036pOINTER STRING-STORAGE (MOVING DOWN)
0037-0038uTILITY STRING POINTER
0039-003ApOINTER: lIMIT-OF-MEMORY (BANK 1) [ff00]
003B-003CcURRENT basic LINE NUMBER
003D-003EtEXTPOINTER: basic WORK POINT (CHRGET)
003F-0040uTILITY pOINTER
0041-0042cURRENT data LINE NUMBER
0043-0044cURRENT data ADDRESS
0045-0046iNPUT VECTOR
0047-0048cURRENT VARIABLE NAME
0049-004AcURRENT VARIABLE ADDRESS
004B-004CvARIABLE POINTER FOR for/next
004D-004Ey-SAVE, OP-SAVE, basic POINTER SAVE
004FcOMPARISON SYMBOL ACCUMULATOR
0050-0055mISCELLANEOUS WORK AREA, POINTERS, AND SO ON
0056-0058jUMP VECTOR FOR FUNCTIONS
0059-0062mISCELLANEOUS NUMERIC WORK AREA
0060-0062mlm aDDRESS 0
0063-0065mlm aDDRESS 1
0066-0068mlm aDDRESS 2
0063aCCUM #1 EXPONENT
0064-0067aCCUM #1 MANTISSA
0068aCCUM #1 SIGN
0069sERIES EVALUATION CONSTANT POINTER
006A-006FaCCUM #2 EXPONENT, AND SO ON
0070sIGN COMPARISON aCC #1 VERSUS #2
0071aCCUM #1 LO-ORDER (ROUNDING)
0072-0073cASSETTE BUFFER LEN / sERIES POINTER
0074-0075aUTO LINE NUMBER INCREMENT
0076gRAPHICS FLAG: ff = gRAPHICS ALLOCATED, 00 = nOT ALLOCATED
0077cOLOR SOURCE NUMBER
0078-0079tEMPORARY COUNTERS
007A-007Cds$ DESCRIPTOR
007D-007Ebasic PSEUDO-STACK POINTER
007FfLAG: 0 = DIRECT MODE
0080-0081dos, using WORK FLAGS
0082sTACK POINTER SAVE FOR ERRORS
0083gRAPHIC COLOR SOURCE
0084mULTICOLOR 1 (1)
0085mULTICOLOR 2 (2)
0086gRAPHIC FOREGROUND COLOR (13)
0087-008AgRAPHIC SCALE FACTORS, x & y
008B-008FgRAPHIC WORK VALUES
0090sTATUS WORD st
0091kEYSWITCH 1a: stop AND rvs FLAGS
7stop
6q
5c=
4sPACE
32
2ctrl
1<-
01
0092tIMING CONSTANT FOR TAPE ($80)
0093wORK VALUE, MONITOR, load / save: 0 = load, 1 = verify
0094sERIAL OUTPUT, DEFERRED CHARACTER FLAG
0095sERIAL DEFERRED CHARACTER
0096cASSETTE WORK VALUE
0097rEGISTER SAVE
0098hOW MANY OPEN FILES
0099iNPUT DEVICE, NORMALLY 0
009AoUTPUT cmd DEVICE, NORMALLY 3
009B-009CtAPE PARITY, OUTPUT-RECEIVED FLAG
009Di/o MESSAGES: 192 = ALL, 128 = COMMANDS, 64 = ERRORS, 0 = NIL
009E-009FtAPE ERROR POINTERS
00A0-00A2jIFFY CLOCK hml
00A3-00A4tEMP DATA AREA
00A5-00A6i/o WORK BYTES (TAPE)
00A7-00ABrs-232c rECEIVE, mISC wORK vALUES
00A7rs-232 iNPUT bIT sTORAGE, cASSETTE sHORT cOUNT
00A8rs-232 bIT cOUNT iN, cASSETTE rEAD eRROR
00A9rs-232 fLAG fOR sTART bIT cHECK, cASSETTE rEADING zEROES
00AArs-232 bYTE bUFFER, cASSETTE rEAD mODE
00ABrs-232 pARITY sTORAGE, cASSETTE sHORT cNT
00AC-00ADpOINTER FOR TAPE BUFFER AND SCREEN SCROLLING
00AE-00AFtAPE END ADDRESS / eND OF PROGRAM
00B0-00B1tAPE TIMING CONSTANTS
00B2-00B3pOINTER: sTART OF TAPE BUFFER
00B4-00B6rs-232 sEND, mISC WORK VALUES
00B4rs-232 bIT cOUNT
00B5rs-232 nEXT bIT tO bE sENT
00B6rs-232 bYTE bUFFER
00B7nUMBER OF CHARACTERS IN FILE NAME
00B8cURRENT LOGICAL FILE
00B9cURRENT SECONDARY ADDRESS
00BAcURRENT DEVICE
00BB-00BCpOINTER TO FILE NAME
00BDrs-232 trns pARITY bUFFER
00BEcASSETTE rEAD bLOCK cOUNT
00BFsERIAL wORD bUFFER
00C0cASSETTE mANUAL/cNTROLLED sWITCH (uPDATED DURING irq)
00C1-00C2i/o sTART aDDRESS
00C3-00C4cASSETTE load tEMPS (2 BYTES)
00C5tAPE rEAD/wRITE dATA
00C6-00C7banks: i/o DATA, FILENAME
00C8-00C9rs-232 INPUT BUFFER ADDRESSES [0C00]
00CA-00CBrs-232 OUTPUT BUFFER ADDRESSES [0D00]
00CC-00CDkEYBOARD DECODE POINTER (BANK 15) [FA80]
00CE-00CFpRINT STRING WORK POINTER
00D0nUMBER OF CHARACTERS IN KEYBOARD BUFFER
00D1nUMBER OF PROGRAMMED CHARS WAITING
00D2pROGRAMMED KEY CHARACTER INDEX
00D3kEY SHIFT FLAG:
0nO SHIFT
1sHIFT
2c=
4cONTROL
8aLT
15cAPS lOCK
00D4cURRENT KEY CODE: 88 = NO KEY
00D5pREVIOUS KEY CODE: 88 = NO KEY
00D6iNPUT FROM SCREEN / FROM KEYBOARD
00D740 / 80 COLUMNS: 0 = 40 COLUMN SCREEN
00D8gRAPHICS MODE CODE
0000gRAPHIC 0
00111
01122
10133
11144
00D9cHARACTER BASE: 0 = rom, 4 = ram
00DA-00DFmISC eDITOR WORK AREA
00E0-00E1pOINTER TO SCREEN LINE / CURSOR
00E2-00E3cOLOR LINE POINTER
00E4cURRENT SCREEN BOTTOM MARGIN
00E5cURRENT SCREEN TOP MARGIN
00E6cURRENT SCREEN LEFT MARGIN
00E7cURRENT SCREEN RIGHT MARGIN
00E8-00E9iNPUT CURSOR LOG (ROW, COLUMN)
00EAeND-OF-LINE FOR INPUT POINTER
00EBrOW WHERE CURSOR LIVES
00ECpOSITION OF CURSOR ON SCREEN LINE
00EDmAXIMUM SCREEN LINES (24)
00EEmAXIMUM SCREEN COLUMNS (39)
00EFcURRENT i/o CHARACTER
00F0pREVIOUS CHARACTER PRINTED
00F1cHARACTER COLOR
00F2tEMPORARY COLOR SAVE
00F3sCREEN REVERSE FLAG
00F4qUOTES FLAG (eDITOR)
;0 = DIRECT CURSOR, ELSE PROGRAMMED
00F5nUMBER OF insertS OUTSTANDING
00F6255 = aUTO iNSERT ENABLED
00F7tEXT MODE LOCKOUT (shft-c=): 0 = ENABLED, 128 = DISABLED
00F8sCROLLING: 0 = ENABLED, 128 = DISABLED
00F9bELL (ctrl-g): 0= ENABLE, 128 = DISABLE
00FA-00FEnOT USED
00FFbASIC sCRATCH
0100-01FFpROCESSOR sTACK aREA
0100-013EtAPE ERROR LOG
0100-0124dos WORK AREA
0100tAPE rEAD eRRORS, aREA TO BUILD FILENAME IN (16 BYTES)
0110dos lOOP cOUNTER
0111dos fILENAME 1 lEN
0112dos dISK dRIVE 1
0113dos fILENAME 2 lEN
0114dos dISK dRIVE 2
0115dos fILENAME 2 aDDR
0117bload/bsave sTARTING aDDRESS
0119bload/bsave eNDING aDDRESS
011bdos lOGICAL aDDR [00]
011cdos pHYS aDDR [08]
011ddos sEC. aDDR [6f]
011edos rECORD lENGTH
0120dos dISK id
0122dos dsk id flg space uSED BY print using
0123pOINTER TO bEGIN. no.
0124pOINTER TO eND no.
0125-0138print / using WORK AREA
0125dOLLAR fLAG
0126cOMMA fLAG, play: voxtum FLAG
0127cOUNTER
0128sIGN eXPONENT
0129pOINTER TO eXPONENT
012a# oF dIGITS bEFORE dECIMAL pOINT
012bjUSTIFY fLAG
012c# oF pOS bEFORE dECIMAL pOINT (fIELD)
012d# oF pOS aFTER dECIMAL pOINT (fIELD)
012e+/- fLAG (fIELD)
012feXPONENT fLAG (fIELD)
0130sWITCH
0131cHAR cOUNTER (fIELD)
0132sIGN nO
0133bLANK/sTAR fLAG
0134pOINTER TO bEGIN OF fIELD
0135lENGTH OF fORMAT
0136pOINTER TO eND oF fIELD
0137sYSTEM sTACK ($0137-$01ff)
0200-03FFvECTORS, BUFFERS, kERNAL ram
0200-02A1basic & mONITOR INPUT BUFFER
02A2-02AE674-686kERNAL ram
02A2-02AEbANK pEEK sUBROUTINE
02AF-02BDbANK pOKE sUBROUTINE
02BE-02CCbANK cOMPARE sUBROUTINE
02CD-02E2jsr TO aNOTHER bANK
02E3-02FBjmp TO aNOTHER bANK
02FC-02FDfUNCTION eXECUTE hOOK[4C78]
0300-0301eRROR mESSAGE lINK[4d3f]
0302-0303basic wARM sTART lINK[4dc6]
0304-0305cRUNCH basic tOKENS lINK [430d]
0306-0307pRINT tOKENS lINK[5151]
0308-0309sTART nEW basic cODE lINK [4aa2]
030A-030BgET aRITHMETIC eLEMENT lINK [78da]
030C-030DcRUNCH fe hOOK[4321]
030E-030FlIST fe hOOK[51cd]
0310-0311eXECUTE fe hOOK [4ba9]
0312-0313uNUSED
0314-0315irq vECTOR[fa65]
0316-0317bREAK iNTERRUPT vECTOR[b003]
0318-0319nmi iNTERRUPT vECTOR[fa40]
031A-031Bopen vECTOR[efbd]
031C-031Dclose vECTOR[f188]
031E-031FsET iNPUT vECTOR[f106]
0320-0321sET oUTPUT vECTOR[f14c]
0322-0323rESTORE i/o vECTOR[f226]
0324-0325iNPUT vECTOR[ef06]
0326-0327oUTPUT vECTOR[ef79]
0328-0329tEST stop kEY[f66e]
032A-03ABget vECTOR[eeeb]
032C-032DaBORT i/o vECTOR[f222]
032E-032FmACHINE lANG mONITOR lINK [b006]
0330-0331load lINK[f26c]
0332-0333save lINK[f54e]
;i/o vECTORS
0334-0335pRINT cONTROL cODE lINK [c7b9]
0336-0337pRINT hIGH ascii cODE lINK [c805]
0338-0339pRINT esc sEQUENCE lINK [c9c1]
033A-033BkEYSCAN lINK[c5e1]
033C-033DsTORE kEY[c6ad]
033E-033FpOINTER TO kbd dECODING tABLE: uNSHIFTED [fa80 / fd29]
0340-0341pOINTER TO kbd dECODING tABLE: sHIFTED [fad9 / fd82]
0342-0343pOINTER TO kbd dECODING tABLE: cOMMODORE [fb32 / fddb]
0344-0345pOINTER TO kbd dECODING tABLE: cONTROL [fb8b / fe34] 1)
0346-0347pOINTER TO kbd dECODING tABLE: aLT [fa80 / fd29]
0348-0349pOINTER TO kbd dECODING tABLE: aSCII/din [fb4e / fd29]
1) tHE VALUE fe34 IS USED IN gERMAN VERSION, IT DOESN'T CHANGE IN OTHERS.
034A-0353irq kEYBOARD bUFFER (10 bYTES) ff = nO KEY
0354-035DbITMAP oF tab sTOPS (10 bYTES)
035E-0361bITMAP oF lINE wRAPS
0362-036BlOGICAL fILE nUMBER tABLE
036C-0375dEVICE nUMBER tABLE
0376-037FsECONDARY aDDRESSE tABLE
0380-039Echrget sUBROUTINE
0386chrgot eNTRY
039F-03AAfETCH fROM ram bANK 0
03AB-03B6fETCH fROM ram bANK 1
03B7-03BFiNDEX1 iNDIRECT fETCH fROM ram bANK 1
03C0-03C8iNDEX2 iNDIRECT fETCH fROM ram bANK 0
03C9-03D1tXTPTR fETCH fROM ram bANK 0
03D2-03D4nUMERIC cONSTANT fOR basic
03D5cURRENT bANK fOR sys, poke, peek
03D6-03D9instr wORK vALUES
03DAbANK pOINTER fOR sTRING/nUMBER convert rtn
03DB-03DDsPRITE: wORK BYTES FOR sshape
03DFfac#1 oVERFLOW
03E0-03E1sPRITE: wORK BYTES FOR sprsav
03E2gRAPHIC fOREGROUND/ bACKGROUND cOLOR nYBBLES
03E3gRAPHIC fOREGROUND/ mULTICOLOR 1 cOLOR nYBBLES
03F0-03F6dma lINK cODE
FF00mmu cONFIGURATION rEGISTER
FF01mmu lcr: bANK 0
FF02mmu lcr: bANK 1
FF03mmu lcr: bANK 14
FF04mmu lcr: bANK 14 oVER ram 1
pAGE fOUR & hIGHER dECLARATIONS (bEGINNING oF bANKABLE ram)
bANK 0
0400-07E7vic 40-cOLUMN tEXT sCREEN
07E8-07FFsPRITE iDENTITY pOINTERS fOR tEXT mODE
0800-09FFbasic pSEUDO sTACK (GOSUB AND LOOP ADDRESSES AND COMMANDS)
0A00-0A01vECTOR TO rESTART sYSTEM (basic wARM) [4003]
0A02kernal wARM/cOLD iNIT'N sTATUS bYTE
0A03pal/ntsc sYSTEM fLAG
0A04fLAGS reset VS. nmi sTATUS FOR INIT'N RTNS
0A05-0A06pTR TO bOTTOM OF aVAIL. mEMORY IN sYSTEM bANK
0A07-0A08pTR TO tOP OF aVAILABLE mEMORY IN sYSTEM bANK
0A09tAPE hANDLER PRESERVES irq iNDIRECT HERE
0A0Btod sENSE DURING TAPE OPERATIONS
0A0Ccia 1 iNTERRUPT lOG
0A0Dcia 1 tIMER eNABLED
0A0F-0A17rs-232 wORK vALUES
0A0Frs-232 eNABLES
0A10rs-232 cONTROL rEGISTER
0A11rs-232 cOMMAND rEGISTER
0A12rs-232 uSER bAUD rATE
0A14rs-232 sTATUS rEGISTER
0A15rs-232 nUMBER OF bITS tO sEND
0A16rs-232 bAUD rATE fULL bIT tIME (cREATED BY open)
0A18rs-232 rECEIVE pOINTER
0A19rs-232 iNPUT pOINTER
0A1Ars-232 tRANSMIT pOINTER
0A1Brs-232 sEND pOINTER
0A1D-0A1FsLEEP cOUNTDOWN, ffff = DISABLE
0A20kEYBOARD bUFFER sIZE (10)
0A21sCREEN fREEZE fLAG
0A22kEY rEPEAT: 128 = ALL, 64 = NONE
0A23kEY rEPEAT tIMING
0A24kEY rEPEAT pAUSE
0A25gRAPHICS / tEXT tOGGLE lATCH
0A2640-cOL cURSOR mODE
0A27-0A2A40-cOL bLINK vALUES
0A2B80-cOL cURSOR mODE
0A2C40-cOL vIDEO $d018 iMAGE
0A2Dvic bIT-mAP bASE pOINTER
0A2E-0A2F80-cOL pAGES-sCREEN, cOLOR
0A40-0A5A40/80 pOINTER sWAP (TO e0-fa)
0A60-0A6D40/80 dATA sWAP (0354-0361)
0A80 cOMPARE bUFFER (32 BYTES)
0AA0-0AA1mlm
0AABasm/dis
0AACfOR aSSEMBLER
0AAFbYTE tEMP USED ALL OVER
0AB0bYTE tEMP USED ALL OVER
0AB1bYTE tEMP FOR aSSEMBLER
0AB2sAVE .x HERE DURING iNDIRECT sUBROUTINE cALLS
0AB3dIRECTION iNDICATOR fOR 'transfer'
0AB4pARSE nUMBER cONVERSION
0AB5pARSE nUMBER cONVERSION
0AB7pARSE nUMBER cONVERSION
0AC0pat cOUNTER
0AC1-0AC4rom pHYSICAL aDDRESS tABLE
0AC5fLAG: kbd
0B00-0BBFcASSETTE bUFFER
0BC0-0BFF?
0C00-0DFFrs-232 iNPUT, oUTPUT bUFFERS
0E00-0FFFsYSTEM sPRITES (56-63)
1000-1009pROGRAMMED kEY lENGHTS
100A-10FFpROGRAMMED kEY dEFINITIONS
1100-1130dos cOMMAND sTAGING aREA
1131-116EgRAPHICS wORK aREA
1131cURRENT x pOSITION
1133cURRENT y pOSITION
1135x-cOORDINATE dESTINATION
1137y-cOORDINATE dESTINATION
1139lINE dRAWING vARIABLES
1149sIGN oF aNGLE
114AsINE oF vALUE oF aNGLE
114CcOSINE OF vALUE OF aNGLE
114EtEMPS fOR aNGLE dISTANCE rOUTINES
1150circle cENTER, x cOORDINATE, box point 1 x-cOORD.
1152circle cENTER, y cOORDINATE, box point 1 y-cOORD.
1154x rADIUS, box rOTATION aNGLE
1156y rADIUS
1158circle rOTATION aNGLE
115Abox: lENGTH OF A SIDE
115CaRC aNGLE sTART
115EaRC aNGLE eND, cHAR'S cOL. cOUNTER
1160x rADIUS * cos(rOTATION aNGLE)
1162y rADIUS * sin(rOTATION aNGLE)
1164x rADIUS * sin(rOTATION aNGLE)
1166y rADIUS * cos(rOTATION aNGLE)
1168high byte: addr of charrom fOR 'char' cmd.
1169tEMP fOR gshape
116Ascale mODE fLAG
116BdOUBLE wIDTH fLAG
116CbOX fILL fLAG
116DtEMP fOR bIT mASK
116FtRACE mODE: ff = ON
1170-1173rENUMBERING pOINTERS
1174-1177dIRECTORY wORK pOINTERS
1178-1197gRAPHICS iNDEX
117A-117BfLOAT-FIXED vECTOR [849f]
117C-117DfIXED-FLOAT vECTOR [793c]
117E-11D5sPRITE mOTION tABLES (8 X 11 BYTES)
11D6-11E5sPRITE x/y pOSITIONS
11E6sPRITE x-hIGH pOSITIONS
11E7-11E8sPRITE bUMB mASKS (SPRITE - BACKGND)
11E9-11EAlIGHT pEN vALUES, x AND y
11EBchrgen rom pAGE, tEXT mODE [d8]
11ECchrgen rom pAGE, gRAPHICS mODE [d0]
11EDsECONDARY aDDRESS fOR record
11EE-11FFuNUSED
1200-1201pREVIOUS basic lINE
1202-1203pOINTER: basic sTATEMENT FOR continue
1204print using fILL sYMBOL
1205print using cOMMA sYMBOL
1206print using d.p. sYMBOL
1207pRINT uSING mONETARY sYMBOL
1208uSED BY eRROR tRAPPING rOUTINE - lAST eRR nO
1209-120AlINE # OF lAST eRROR. ffff IF nO eRROR
120B-120Ctrap aDDRESS, ffff = NONE
120DhOLD tRAP # OF tEMPOR.
1210-1211eND OF bASIC, bANK 0
1212-1213bASIC pROGRAM lIMIT [ff00]
1214-1217do wORK pOINTERS
1218-121Ausr pROGRAM jUMP [7d28]
121B-121Frnd sEED vALUE
1220dEGREES pER circle sEGMENT
1221'cOLD' OR 'wARM' rESET sTATUS
1222sOUND tEMPO
1223-1224rEMAINING nOTE lENGTH lo/hi, vOICE 1
1225-1226rEMAINING nOTE lENGTH lo/hi, vOICE 2
1227-1228rEMAINING nOTE lENGTH lo/hi, vOICE 3
1229-122AnOTE lENGTH lo/hi
122BoCTAVE
122CfLAG: 01 = sHARP, ff = fLAT
122D-122EpITCH
122FmUSIC sEQUENCER (vOICE nUMBER)
1230wAVE
1233fLAG: pLAY dOTTED nOTE
1234-1237nOTE iMAGE
1239-123EcURRENT eNVELOPE pATTERN
123F-1270eNVELOPE tABLES
123F-1248ad(sr) pATTERN
1249-1252(ad)sr pATTERN
1253-125CwAVEFORM pATTERN
125D-1266pULSE wIDTH lO pATTERN
1267-1270pULSE wIDTH hI pATTERN
1271-1274nOTE: XX, XX, VOLUME
1275pREVIOUS vOLUME iMAGE
1276-1278cOLLISION irq tASK tABLE
1279-127EcOLLISION irq aDDRESS tABLES
127FcOLLISION mASK
1280cOLLISION wORK vALUE
1281sound vOICE
1282sound tIME lo
1285-1287sound tIME hi
1288-128Asound mAX lo
128Bsound mAX hi
128Esound mIN lo
1291sound mIN hi
1294sound dIRECTION
1297sound sTEP lo
129Asound sTEP hi
129Dsound fREQ lo
12A0sound fREQ hi
12A3tEMP tIME lo
12A4tEMP tIME hi
12A5tEMP mAX lo
12A6tEMP mAX hi
12A7tEMP mIN lo
12A8tEMP mIN hi
12A9tEMP dIRECTION
12AAtEMP sTEP lo
12ABtEMP sTEP hi
12ACtEMP fREQ lo
12ADtEMP fREQ hi
12AEtEMP pULSE lo
12AFtEMP pULSE hi
12B0tEMP wAVEFORM
12B1-12B2pen/pot wORK vALUES
12B7uSED by sprdef & savspr
12FAuSED by sprdef & savspr
12FBuSED by sprdef & savspr
12FCsPRITE nUMBER. uSED by sprdef & savspr
12FDuSED BY basic irq TO BLOCK ALL BUT ONE irq CALL
12FF?
1300-17FFuNUSED
1800-1BFFrESERVED FOR kEY fUNCTIONS
1C00-FBFFbasic ram mEMORY (tEXT)
1C00-1FF7vIDEO cOLOR mATRIX fOR gRAPHICS mODE
1FF8-1FFFsPRITE iDENTITY pOINTERS fOR gRAPHICS mODE
2000-3FFFsCREEN mEMORY fOR gRAPHICS mODE
4000-FBFFbasic ram mEMORY (WITH GRAPHICS ENABLED)
bANK 1
0400-FBFFbasic vARIABLES, aRRAYS, aND sTRINGS
bANK 14
tHE SAME AS bANK 15, EXCEPT:
D000-DFFFcHARACTER gENERATOR rom
bANK 15
4000-CFFFbasic rom
D000-D030vic, 40 cOL vIDEO cHIP 8564 (ntsc) OR 8566 (pal)
D400-D41Csid sOUND cHIP 6581
D500-D50Bmmu, mEMORY mANAGEMENT uNIT 8722
D600-D601vdc, 80 cOL vIDEO cONTROLLER 8563
D800-D8E7cOLOR nYBBLES fOR vic tEXT sCREEN
DC00-DC0Fcia 1 (irq), 6526
DD00-DD0Fcia 2 (nmi), 6526
DF00-DF0Adma sLOT
E000-FFFFkernal rom
FF00-FF04mmu
FF05-FFFFtRANSFER, jUMP tABLE
*****
502 commodore 128
tHIS CHAPTER PROVIDES THE MEMORY MAPS FOR BOTH c128 AND c64 MODES. a MEMORY
MAP TELLS YOU EXACTLY HOW MEMORY IS LAID OUT INTERNALLY IN BOTH ram AND rom.
iT TELLS YOU EXACTLY WHAT RESIDES IN EACH MEMORY LOCATION. tHE MEMORY MAP
DIRECTS YOU IN FINDING ADDRESS VECTORS FOR ROUTINES AND ENTRY POINTS AND PROVI-
DES INFORMATION ABOUT THE GENERAL LAYOUT OF THE COMPUTER. tHE MEMORY MAP IS
PROBABLY THE MOST VITAL PROGRAMMING TOOL.
rEFER TO THE MEMORY MAP WHENEVER YOU NEED DIRECTIONS THROUGHOUT THE MEMORY OF
YOUR cOMMODORE 128. aDDRESSES LISTED WITH MORE THAN ONE ADDRESS LABEL ARE USED
FOR MORE THAN ONE PURPOSE. tO basic, THE VARIABLE HAS ONE PURPOSE; TO THE mAC-
HINE lANGUAGE mONITOR, IT MAY HAVE ANOTHER.
tHE CONVENTIONS USED FOR THE MEMORY MAPS ARE AS FOLLOWS:
cOLUMN 1cOLUMN 2cOLUMN3cOLUMN 4
memory
addresshexadecimaldecimal
labeladdressaddressdescription
sEE aPPENDIX k FOR THE z80 MEMORY MAP FOR cp/m ON THE cOMMODORE 128.
c128 memory map
memory address address
labelhexdecdescription
d6510000006510 dATA dIRECTION rEGISTER
r6s10000116510 dATA rEGISTER
bank00022tOKEN 'search' LOOKS FOR, OR bANK #
pc_hi00033aDDRESS FOR basic sys COMMAND OR monitor AND
long call/jump rOUTINES
pc_lo00044aDDRESS
s_reg00055status reg tEMP
a_reg00066.a reg tEMP
x_reg00077.x reg tEMP
y_reg00088.y reg tEMP
stkptr00099sTACK pOINTER tEMP
basic zero page storage
integr00099
characsEARCH cHARACTER
endchr000a10fLAG: sCAN fOR qUOTE AT eND oF sTRING
trmpos000b11sCREEN cOLUMN FROM lAST tAB
vercic000c12fLAG: 0 = load, 1 = verify
count000d13iNPUT bUF.PTR / # OF sUBSCRIPTS
dimflg000e14fLAG: dEFAULT aRRAY dIMENSION
valtyp000f15data tYPE: $ff=sTRING, $00 = nUMERIC
intflg001016data tYPE: $00=fLOAT.pT, $80 = iNTEGER
garbfl001117fLAG: data sCAN/ list qUOTE/ gARBAGE cOLLECTION
dores
subflg001218fLAG: sUBSCRIPT rEF. / uSER fUNC. cALL
inpflg001319fLAG: $00=input, $40=get, $98 = read
domask001420
tansgnfLAG: tan sIGN / cOMPARISON rESULT
channl001521
poker001622
linnumtEMP iNTEGER vALUE
temppt001824pOINTER: tEMP sTRING sTACK
lastpt001925lAST tEMP sTRING aDDRESS
tempst001b27sTACK fOR tEMP sTRINGS
index002436uTILITY pOINTER aREA
index1
index2002638
resho002840fLOATING pT. pRODUCT OF mULTIPLY
resmoh002941
addend002a42
resmo
reslo002b43
txttab002d45pOINTER: sTART oF basic tEXT
vartab002f47pOINTER: sTART oF basic vARIABLES
arytab003149pOINTER: sTART oF basic aRRAYS
strend003351pOINTER: eND oF basic aRRAYS + 1
fretop003553pOINTER: bOTTOM OF sTRING sTORAGE
frespc003755uTILITY sTRING pOINTER
max_mem_1003957tOP OF sTRING/vARIABLE bANK (bANK 1)
curlin003b59cURRENT basic lINE nUMBER
txtptr003d61pOINTER TO basic tEXT USED BY chrget,ETC.
form003f63uSED BY print using
fndpntpOINTER TO iTEM fOUND bY sEARCH
datlin004165cURRENT data lINE nUMBER
datptr004367cURRENT data iTEM aDDRESS
inpptr004569vECTOR: input rOUTINE
varnam004771cURRENT basic vARIABLE nAME
fdecpt004973
varpntpOINTER: cURRENT basic vARIABLE data
lstpnt004b75
forpntpOINTER: iNDEX vARIABLE fOR for/next
andmsk
eormsk004c76
vartxt004d77
opptr
opmask004f79
grbpnt005080
tempf3
defpnt
dscpnt005282
005484
helper005585fLAGS 'help' OR 'list'
jmper005686
005787
oldov005888
tempf1005989
ptarg1mULTIPLY DEFINED FOR instr
ptarg2005b91
strL005d93
str2006096
positn006399
match0064100
arypnt005a90
highds
hightr005c92
tempf2005e94
deccnt005f95nUMBER OF dIGITS AFTER THE dECIMAL pOINT
tenexp006096
t0ml monitor z.p. sTORAGE IN fac
grbtop006197
dptflgdECIMAL pOINT fLAG
lowtr
expsgn006298
fac006399
dsctmp
left_flagpAINT-lEFT fLAG
facexpfac#1 eXPONENT
tLmonitor z.p. sTORAGE IN fac
right_flag0064100pAINT-rIGHT fLAG
fachofac#1 mANTISSA
facmoh0065101
indice0066102
facmo
t2monitor z.p. sTORAGE IN fac
faclo0067103
facsgn0068104fac#1 sIGN
degree0069105
sgnflgpOINTER: sERIES-eVAL. cONSTANT
argexp006a106fac#2 eXPONENT
argho006b107fac#2 mANTISSA
argmoh006c108
init_as_0jUST A COUNT FOR init
argmo006d109
arglo006e110
argsgn006f111fac#2 sIGN
strngi0070112
arisgnsIGN cOMPARISON rESULT: fac#1 VS #2
facov0071113fac#1 lOW-oRDER (rOUNDING)
strng20072114
polypt
curtol
fbufptpOINTER: cASSETTE bUFFER
autinc0074116iNC. vAL FOR auto (0 = oFF)
mvdflg0076118fLAG iF 10k hires aLLOCATED
z_p_temp_10077119print using'S lEADING zERO cOUNTER
movspr & sPRITE tEMPORARY
mid$ tEMPORARY
hulp0078120cOUNTER
keysiz
syntmp0079121uSED AS tEMP fOR iNDIRECT
dsdesc007a122dESCRIPTOR FOR ds$
txtptrmonitor z.p. sTORAGE
tos007d125tOP OF rUN tIME sTACK
runmod007f127fLAGS rUN/dIRECT mODE
parsts0080128dos pARSER sTATUS wORD
pointusing'S pOINTER TO dEC.pT
parstx0081129
oldstk0082130
basic z-p storage for graphic commands
colsel0083131cURRENT color sELECTED
multicolor0084132
multicolor_20085133
foreground0086134
scale_x0087135sCALE fACTOR iN x
scale_y0089137sCALE fACTOR iN y
stopnb008b139sTOPPAINT IF NOT bACKGROUND/nOT SAME COLOR
grapnt008c140
vtempi008e142
vtemp2008f143
kernal/editor storage
status0090144i/o oPERATION sTATUS bYTE
stkey0091145stop key fLAG
svxt0092146tAPE tEMPORARY
verck0093147load OR verify fLAG
c3p00094148sERIAL bUFFERED cHAR fLAG
bsour0095149cHAR bUFFER fOR sERIAL
syno0096150cASSETTE sYNC #
xsav0097151tEMP fOR basin
ldtnd0098152iNDEX TO lOGICAL fILE
dfltn0099153dEFAULT iNPUT dEVICE #
dflto009a154dEFAULT oUTPUT dEVICE #
prty009b155cASSETTE pARITY
dpsw009c156cASSETTE dIPOLE sWITCH
msgflg009d157os mESSAGE fLAG
ptr1009e158cASSETTE eRROR pASS1
t1tEMPORARY 1
ptr2009f159cASSETTE eRROR pASS2
t2tEMPORARY 2
time00a016024 hOUR cLOCK iN 1/60TH sECONDS
r2d200a3163sERIAL bUS uSAGE
pcntrcASSETTE
bsour100a4164tEMP USED BY sERIAL rOUTINE
firt
count00a5165tEMP USED BY sERIAL rOUTINE
cntdncASSETTE sYNC cOUNTDOWN
bufpt00a6166cASSETTE bUFFER pOINTER
inbit00a7167rs-232 rcvr iNPUT bIT sTORAGE
shcnlcASSETTE sHORT cOUNT
bitci00a8168rs-232 rcvr bIT cOUNT iN
rercASSETTE rEAD eRROR
rinone00a9169rs-232 rcvr fLAG fOR sTART bIT cHECK
rezcASSETTE rEADING zEROES
ridata00aa170rs-232 rcvr bYTE bUFFER
rdflgcASSETTE rEAD mODE
riprty00ab171rs-232 rcvr pARITY sTORAGE
shcnhcASSETTE sHORT cNT
sal00ac172pOINTER: tAPE bUFFER / sCREEN sCROLLING
sah00ad173
eal00ae174tAPE eND aDDRESSES / eND OF pROGRAM
eah00af175
cmp000b0176tAPE tIMING cONSTANTS
temp00b1177
tape100b2178aDDRESS OF tAPE bUFFER
bitts00b4180rs-232 trns bIT cOUNT
snsw1
nxtbit00b5181rs-232 trns nEXT bIT tO bE sENT
diff
rodata00b6182rs-232 trns bYTE bUFFER
prp
fnlen00b7183length cURRENT fILE n sTR
la00b8184cURRENT fILE lOGICAL aDDR
sa00b9185cURRENT fILE 2ND aDDR
fa00ba186cURRENT fILE pRIMARY aDDR
fnadr00bb187aDDR cURRENT fILE nAME sTR
roprty00bd189rs-232 trns pARITY bUFFER
ochar
fsblk00be190cASSETTE rEAD bLOCK cOUNT
drive00bf191
mychsERIAL wORD bUFFER
cas100c0192cASSETTE mANUAL/cNTRLED sWITCH (uPDATED DURING irq)
track00c1193
stali/o sTART aDDRESS (lo)
sector00c2194
stahi/o sTART aDDRESS (hi)
memuss00c3195cASSETTE load tEMPS (2 BYTES)
data00c5197tAPE rEAD/wRITE dATA
ba00c6198bANK fOR cURRENT load/save/verify oPERATION
fnbank00c7199bANK wHERE cURRENT fn IS FOUND (AT 'fnadr')
ribuf00c8200rs-232 iNPUT bUFFER pOINTER
robuf00ca202rs-232 oUTPUT bUFFER pOINTER
global screen editor variables
keytab00cc204kEYSCAN tABLE pOINTER
imparm00ce206primm uTILITY sTRING pOINTER
ndx00d0208iNDEX TO kEYBOARD qUEUE
kyndx00d1209pENDING fUNCTION kEY fLAG
keyidx00d2210iNDEX iNTO pENDING fUNCTION kEY sTRING
shflag00d3211kEYSCAN sHIFT kEY sTATUS
sfdx00d4212kEYSCAN cURRENT kEY iNDEX
lstx00d5213kEYSCAN lAST kEY iNDEX
crsw00d6214<cr> iNPUT fLAG
mode00d721540/80 cOLUMN mODE fLAG
graphm00d8216tEXT/gRAPHIC mODE fLAG
charen00d9217ram/rom vic cHARACTER fETCH fLAG (bIT-2)
the following locations are shared by several editor routines.
sedsal00da218pOINTERS fOR movlin
bitmsk00da218tEMPORARY fOR tab & line wrap rOUTINES
saver00db219aNOTHER tEMPORARY pLACE tO sAVE a rEG.
sedeal00dc220
sedt100de222savpos
sedt200df223
keysiz00da218pROGRAMMABLE kEY vARIABLES
keylen00db219
keynum00dc220
keynxt00dd221
keybnk00de222
keytmp00df223
local screen editor variables.
tHESE ARE SWAPPED OUT TO $0A40 WHEN SCREEN (40/80) MODE CHANGES.
pnt00e0224pOINTER TO cURRENT lINE (tEXT)
user00e2226pOINTER TO cURRENT lINE (aTTRIBUTE)
scbot00e4228wINDOW lOWER lIMIT
sctop00e5229wINDOW uPPER lIMIT
sclf00e6230wINDOW lEFT mARGIN
scrt00e7231wINDOW rIGHT mARGIN
lsxp00e8232cURRENT iNPUT cOLUMN sTART
lstp00e9233cURRENT iNPUT lINE sTART
indx00ea234cURRENT iNPUT lINE eND
tblx00eb235cURRENT cURSOR lINE
pntr00ec236cURRENT cURSOR cOLUMN
lines00ed237mAXIMUM nUMBER OF sCREEN lINES
columns00ee238mAXIMUM nUMBER OF sCREEN cOLUMNS
datax00ef239cURRENT cHARACTER TO pRINT
lstchr00f0240pREVIOUS cHAR pRINTED (fOR <esc> tEST)
color00f1241cURR aTTRIBUTE TO pRINT (dEFAULT fgnd cOLOR)
tcolor00f2242sAVED aTTRIB TO pRINT ('insert' & 'delete')
rvs00f3243rEVERSE mODE fLAG
qtsw00f4244qUOTE mODE fLAG
insrt00f5245iNSERT mODE fLAG
insflg00f6246aUTO-iNSERT mODE fLAG
locks00f7247dISABLES <sHIFT><c*>, <ctrl> s
scroll00f8248dISABLES sCREEN sCROLL, lINE lINKER
beeper00f9249dISABLES <ctrl> g
frekzp00fa250fREE zERO pAGE RESERVED FOR APPLICATIONS
SOFTWARE ($fa-$fe)
lofbuf00ff255
basic/dos interface vars
bad0100256tAPE rEAD eRRORS
fbuffraREA TO BUILD FILENAME IN (16 BYTES)
xcnt0110272dos lOOP cOUNTER
dosf1l0111273dos fILENAME 1 lEN
dosds10112274dos dISK dRIVE 1
dosf2l0113275dos fILENAME 2 lEN
dosds20114276dos dISK dRIVE 2
dosf2a0115277dos fILENAME 2 aDDR
dosofl0117279bload/bsave sTARTING aDDRESS
dosofh0119281....AND eNDING aDDRESS
dosla011b283dos lOGICAL aDDR
dosfa011c284dos pHYS aDDR
dossa011d285dos sEC. aDDR
dosrcl011e286dos rECORD lENGTH
dosbnk011f287
dosdid0120288dos dISK id
didchk0122290dos dsk id flg space uSED BY print using
bnr0123291pOINTER TO bEGIN. no.
enr0124292pOINTER TO eND no.
dolr0125293dOLLAR fLAG
flag0126294cOMMA fLAG
swe0127295cOUNTER
usgn0128296sIGN eXPONENT
uexp0129297pOINTER TO eXPONENT
vn012a298# oF dIGITS bEFORE dECIMAL pOINT
chsn012b299jUSTIFY fLAG
vf012c300# oF pOS bEFORE dECIMAL pOINT (fIELD)
nf012d301# oF pOS aFTER dECIMAL pOINT (fIELD)
posp012e302+/- fLAG (fIELD)
fesp012f303eXPONENT fLAG (fIELD)
etof0130304sWITCH
cform0131305cHAR cOUNTER (fIELD)
sno0132306sIGN nO
blfd0133307bLANK/sTAR fLAG
begfd0134308pOINTER TO bEGIN OF fIELD
lfor0135309lENGTH OF fORMAT
endfd0136310pOINTER TO eND oF fIELD
systk0137311sYSTEM sTACK ($0137-$01ff)
buf0200512iNPUT bUFFER: basic & monitor
fetch02a2674lda(-),y fROM aNY bANK
fetchvec02aa682
stash02af687sta(-),y TO aNY bANK
stavec02b9697
cmpare02c8702cmp(-),y TO aNY bANK
cmpvec02c8712
jsrfar02cd716jsr xxxx TO aNY bANK & rETURN
jmpfar02e3739jmp xxxx TO aNY bANK
vectors
esc_fn_vec02fc764vECTOR fOR aDDITIONAL fUNCTION rOUTINES
k ec02fe766vECTOR fOR fUNCTION cART.
ierror0300uSERS
0302(err in .x)
icrnch0304772vECTOR TO cRUNCH
774vECTOR TO lIST basic tEXT
776vECTOR TO gONE (basic cHAR
778vECTOR TO basic tOKEN
780vECTOR TO eSCAPE-tOKEN
030e782list
iescex0310784... aND eXECUTE.
iiro0314788irq ram vECTOR
ibrk0316790brk instr ram vECTOR
inmi0318792nmi vECTOR
iopen031a794kernal open rOUTINE vECTOR
796kernal close rOUTINE vECTOR
798kernal chkin rOUTINE vECTOR
800kernal chkout rOUTINE
clrch0322vECTOR
vector
ibasin0324804kernal chrin rOUTINE vECTOR
ibsout0326806kernal chrout rOUTINE vECTOR
istop0328808kernal stop rOUTINE vECTOR
igetin032a810kernal getin rOUTINE vECTOR
iclall032c812kernal clall rOUTINE vECTOR
exmon032e814mONITOR cOMMAND vECTOR
iload0330816kernal load rOUTINE vECTOR
isave0332818kernal save rOUTINE vECTOR
editor indirect vectors
ctlvec0334820eDITOR: print 'contrl' iNDIRECT
shfvec0336822eDITOR: print 'shiftd' iNDIRECT
escvec0338824eDITOR: print 'escape' iNDIRECT
keyvec033a826eDITOR: kEYSCAN lOGIC iNDIRECT
keychk033c828eDITOR: sTORE kEY iNDIRECT
decode033e830vECTORS TO kEYBOARD mATRIX dECODE tABLES
keyd034a842irq kEYBOARD bUFFER (10 bYTES)
tabmap0354852bITMAP oF tab sTOPS (10 bYTES, $0354-d)
bitabl035e862bITMAP oF lINE wRAPS
tabmap AND bitabl GET SWAPPED TO $0a60 WHEN
SCREEN 40/80 MODE IS CHANGED.
lat0362866lOGICAL fILE nUMBERS
fat036c876pRIMARY dEVICE nUMBERS
sat0376886sECONDARY aDDRESSES
chrget0380896
chrgot0386902
qnum0390912
indirect load subroutine area
indsub_ram0039f927sHARED rom fETCH sUB
indsub_ram103ab939sHARED rom fETCH sUB
indin1_ram103b7950iNDEX1 iNDIRECT fETCH
indin203c0959iNDEX2 iNDIRECT fETCH
indixt03c9968tXTPTR
zero03d2977nUMERIC cONSTANT fOR basic
current_bank03d5979cONTEXT fOR sys,poke,peek fROM bANK cMMD
tmpdes03d6980tEMP fOR instr
fin_bank03da984bANK pOINTER fOR sTRING/nUMBER convert rtn
savsiz03db985tEMP wORK lOCATIONS FOR sshape
bits03df989fac#1 overflow digit
sprtmp_103e0990tEMP fOR sprsav
sprtmp_203e1991
fg_bg03e2992pACKED fOREGROUND/ bACKGROUND cOLOR nYBBLES
fg_mc103e3993pACKED fOREGROUND/ mULTICOLOR 1 cOLOR nYBBLES
pAGE fOUR & hIGHER dECLARATIONS (bEGINNING oF bANKABLE ram)
vicscn04001024video matrix #1: vic 40-cOLUMN tEXT sCREEN
$0400-$07ff
08002048basic run-time stack (512 bytes)
$0800-$09ff
absolute kernal variables
system_vector0a002560vECTOR TO rESTART sYSTEM (basic wARM)
dejavu0a022562kernal wARM/cOLD iNIT'N sTATUS bYTE
palnts0a032563pal/ntsc sYSTEM fLAG
init_status0a042564fLAGS reset VS. nmi sTATUS FOR INIT'N RTNS
memstr0a052565pTR TO bOTTOM OF aVAIL. mEMORY IN sYSTEM bANK
memsiz0a072567pTR TO tOP OF aVAILABLE mEMORY IN sYSTEM bANK
irqtmp0a092569tAPE hANDLER PRESERVES irq iNDIRECT HERE
caston0aob2571tod sENSE DURING TAPE OPERATIONS
kika260aoc2572tAPE rEAD tEMPORARY
stupid0aod2573tAPE rEAD d1irq iNDICATOR
timout0aoe2574fAST sERIAL tIMEOUT fLAG
enabl0a0f2575rs-232 eNABLES
m51ctr0a102576rs-232 cONTROL rEGISTER
msicdr0a112577rs-232 cOMMAND rEGISTER
msiajb0a122578rs-232 uSER bAUD rATE
rsstat0a142580rs-232 sTATUS rEGISTER
bitnum0a152581rs-232 nUMBER OF bITS tO sEND
baudof0a162582rs-232 bAUD rATE fULL bIT tIME (cREATED BY open)
ridbe0a182584rs-232 iNPUT bUFFER iNDEX TO eND
ridbs0a192585rs-232 iNPUT bUFFER iNDEX TO sTART
rodbs0a1a2586rs-232 oUTPUT bUFFER iNDEX TO sTART
rodbe0a1b2587rs-232 oUTPUT bUFFER iNDEX TO eND
serial0a1c2588fAST sERIAL iNTERNAL/eXTERNAL fLAG
timer0a1d2589dECREMENTING jIFFIE rEGISTER
global absolute screen editor declarations
xmax0a202592kEYBOARD qUEUE mAXIMUM sIZE
pause0a212593ctrl-s fLAG
rptflg0a222594eNABLE kEY rEPEATS
kount0a232595dELAY bETWEEN kEY rEPEATS
delay0a242596dELAY bEFORE A kEY sTARTS rEPEATING
lstshf0a252597dELAY bETWEEN <c=><shft> tOGGLES
blnon0a262598vic cURSOR mODE (bLINKING, sOLID)
blnsw0a272599vic cURSOR dISABLE
blnct0a282600vic cURSOR bLINK cOUNTER
gdbln0a292601vic cURSOR cHARACTER bEFORE bLINK
gdcol0a2a2602vic cURSOR cOLOR bEFORE bLINK
curmod0a2b2603vdc cURSOR mODE (WHEN ENABLED)
vm10a2c2604vic tEXT sCREEN/cHARACTER bASE pOINTER
vm20a2d2605vic bIT-mAP bASE pOINTER
vm30a2e2606vdc tEXT sCREEN bASE
vm40a2f2607vdc aTTRIBUTE bASE
lintmp0a302608tEMPORARY pOINTER TO lAST lINE fOR loop4
sav80a0a312609tEMPORARY fOR 80-cOL rOUTINES
sav80b0a322610tEMPORARY fOR 80-cOL rOUTINES
curcol0a332611vdc cURSOR cOLOR bEFORE bLINK
split0a342612vic sPLIT sCREEN rASTER vALUE
fnadrx0a352613sAVE .x dURING bANK oPERATIONS
palcnt0a362614cOUNTER FOR pal sYSTEMS (jIFFIE ADJUSTMENT)
speed0a372615sAVE sYSTEM sPEED dURING tAPE AND sERIAL oPS
sprites0a382616sAVE sPRITE eNABLES dURING tAPE AND sERIAL oPS
blanking0a392617sAVE bLANKING sTATUS dURING tAPE oPS
hold_off0a3a2618fLAG SET BY USER TO RESRV FULL CONTROL OF vic
ldtbi_sa0a3b2619hI BYTE:sa oF vic sCRN (uSE w/vmi TO MOVE SCRN)
clr_ea_lo0a3c26208563 bLOCK fILL
clr_ea_hi0a3d26218563 bLOCK fILL
0a402624$0a40-$0a7f rESERVED sWAP aREA fOR sCREEN
vARIABLES wHEN (40/80) mODE cHANGES
monitor'S DOMAIN
xcnt0a802688cOMPARE bUFFER (32 BYTES)
hulp0aa02720
format0aaa2730
length0aab2731asm/dis
msal0aac2732fOR aSSEMBLER
sxreg0aaf27351 bYTE tEMP USED ALL OVER
syreg0ab027361 bYTE tEMP USED ALL OVER
wrap0ab127371 bYTE tEMP FOR aSSEMBLER
xsave0ab22738sAVE .x HERE DURING iNDIRECT sUBROUTINE cALLS
direction0ab32739dIRECTION iNDICATOR fOR 'transfer'
count0ab42740pARSE nUMBER cONVERSION
number0ab52741pARSE nUMBER cONVERSION
temps0ab72743pARSE nUMBER cONVERSION
function key rom card tables
curbnk0ac02752cURRENT fUNCTION kEY rom bANK bEING pOLLED
pat0ac12753pHYSICAL aDDRESS tABLE (ids of logged-in cards)
dk_flag0ac52757rESERVED fOR fOREIGN sCREEN eDITORS
0ac62758$0ac6-$0aff rESERVED fOR sYSTEM
tbuffr0b002810cASSETTE bUFFER (192 bytes)
$0b00-$0bc0, tHIS PAGE ALSO USED AS A BUFFER
FOR THE DISK AUTO-BOOT.
rs232i0c003072rs-232 iNPUT bUFFER
rs23200d003328rs-232 oUTPUT bUFFER
0e003584sPRITE dEFINITION aREA (mUST BE BELOW $1000)
$0e00-$0fff, 512 bYTES
pkybuf10004096pROGRAMMABLE fUNCTION kEY lENGTHS tABLE fOR
10 kEYS (f1-f8, <shift run>, help)
pkydef100a4106pROGRAMMABLE fUNCTION kEY sTRINGS
dos/vsp area
dosstr11004352dos output str. buf
48 bYTES TO bUILD dos sTRING
vwork11314401gRAPHICS vARS
xypos11314401
xpos11314401cURRENT x pOSITION
ypos11334403cURRENT y pOSITION
xdest11354405x-cOORDINATE dESTINATION
ydest11374407y-cOORDINATE dESTINATION
xyabs11394409lINE dRAWING vARIABLES
xabs11394409
yabs113b4411
xysgn113d4413
xsgn113d4413
ysgn113f4415
fct11414417
errval11454421
lesser11474423
greatr11484424
angle routine variables
angsgn11494425sIGN oF aNGLE
sinval114a4426sINE oF vALUE oF aNGLE
dos/vsp area
cosval114c4428cOSINE OF vALUE OF aNGLE
angcnt114e4430tEMPS fOR aNGLE dISTANCE rOUTINES
basic graphic variables.
tHE FOLLOWING 24 BYTES ARE MULTIPLY DEFINED.
circle drawing variables
xcircl11504432circle cENTER, x cOORDINATE
ycircl11524434circle cENTER, y cOORDINATE
xradus11544436x rADIUS
yradus11564438y rADIUS
rotang11584440rOTATION aNGLE
angbeg115c4444aRC aNGLE sTART
angend115e4446aRC aNGLE eND
xrcos11604448x rADIUS * cos(rOTATION aNGLE)
yrsin11624450y rADIUS * sin(rOTATION aNGLE)
xrsin11644452x rADIUS * sin(rOTATION aNGLE)
yrcos11664454y rADIUS * cos(rOTATION aNGLE)
basic general use parameters
xcentr11504432
ycentr11524434
xdist111544436
ydist111564438
xdist211584440
ydist2115a4442
diseend115c4444pLACEHOLDER
colcnt115e4446cHAR'S cOL. cOUNTER
rowcnt115f4447
strcnt11604448
box-drawing variables
xcord111504432point 1 x-cOORD.
ycord111524434point 1 y-cOORD.
boxang11544436rOTATION aNGLE
xcount11564438
ycount11584440
bxleng115a4442lENGTH OF A SIDE
xcord2115c4444
ycord2115e4446
shape and move-shape variables
keylen11514433
keynxt11524434
strsz11534435sTRING lEN
gettyp11544436rEPLACE sHAPE mODE
strptr11554437sTRING pOS'N cOUNTER
oldbyt11564438oLD bIT mAP BYTE
newbyt11574439nEW sTRING OR bIT mAP bYTE
11584440pLACEHOLDER
xsize11594441shape cOLUMN lENGTH
ysize115b4443shape rOW lENGTH
xsave115d4445tEMP fOR cOLUMN lENGTH
stradr115f4447sAVE shape sTRING dESCRIPTOR
bitidx11614449bIT iNDEX iNTO bYTE
basic graphic variables
chrpag11684456high byte: addr of charrom fOR 'char' cmd.
bitcnt11694457tEMP fOR gshape
scalem116a4458scale mODE fLAG
width116b4459dOUBLE wIDTH fLAG
filflg116c4460bOX fILL fLAG
bitmsk116d4461tEMP fOR bIT mASK
numcnt116e4462
trcflg116f4463fLAGS tRACE mODE
renum_tmp_111704464a tEMP fOR rENUMBER
renum_tmp_211724466a tEMP fOR rENUMBER
t311744468
t411754469
vtemp311774471gRAPHIC tEMP sTORAGE
vtemp411784472
vtemp511794473
adray1117a4474pTR TO ROUTINE: cONVERT fLOAT -> iNTEGER
adray2117c4476pTR TO ROUTINE: cONVERT iNTEGER -> float
sprite_data117e4478sPRITE sPEED/dIRECTION tABLES ($117e-d5)
vic_save11d64566cOPY OF vic rEG'S, uSED TO UPDATE CHIP DURING
RETRACE (21 BYTES, $11d6-ea)
upper_lower11eb4587pOINTER TO uPPER/lOWER cHAR sET FOR char
upper_graphic11ec4588pTR. TO uPPER/gRAPHIC cHAR sET
dossa11ed4589tEMP STORAGE FOR FILE sa DURING record CMD
basic general non-zp storage
oldtxt12004608pREVIOUS basic lINE
12024610pOINTER: basic sTATEMENT FOR continue
print using declarations
puchrs12044612
pufill12044612print using fILL sYMBOL
pucoma12054613print using cOMMA sYMBOL
pudot12064614print using d.p. sYMBOL
pumony12074614pRINT uSING mONETARY sYMBOL
errnum12084616uSED BY eRROR tRAPPING rOUTINE - lAST eRR nO
errlin12094617lINE # OF lAST eRROR. $ffff IF nO eRROR
trapno120b4619lINE TO GO TO ON ERROR - $ffff IF NONE SET
tmptrp120d4621hOLD tRAP # OF tEMPOR.
errtxt120e4622
text_top12104624tOP OF tEXT pOINTER
max_mem_012124626hIGHEST aDDRESS aVAILABLE TO basic IN ram 0
tmptxt12144628uSED BY do-loop. cOULD BE mULT. aSSIGNED
tmplin12164630
usrpok12184632
rndx121b4635
circle_segment12204640dEGREES pER circle 51:6ment
dejavu12214641'cOLD' OR 'wARM' rESET sTATUS
basic storage for music vectors
tempo_rate12224642
voices12234643
ntime12294649
octave122b4651
sharp122c4652
pitch122d4653
voice122f4655
wave012304656
dnote12334659
fltsav12344660
fltflg12384664
nibble12394665
tonnum123a4666
tonval123b4667
parcnt123e4668
atktab123f4669
sustab12494681
wavtab12534691
pulslw125d4701
pulshi12674711
filters12714721
interrupt vectors
int_trip_flag12764726
int_adr_lo12794729
int_adr_hi127c4732
intval127f4735
coltyp12804736
basic sound command vars
sound_voice12814737
sound_time_lo12824738
sound_time_hi12854741
sound_max_lo12884744
sound_max_hi128b4747
sound_min_lo128e4750
sound_min_hi12914753
sound_direction12944756
sound_step_lo12974759
sound_step_hi129a4762
sound_freq_lo129d4765
sound_freq_hi12a04768
temp_time_lo12a34771
temp_time_hi12a44772
temp_max_lo12a54773
temp_max_hi12a64774
temp_min_lo12a74775
temp_min_hi12a84776
temp_direction12a94777
temp_step_lo12aa4778
temp_step_hi12ab4779
temp_freq_lo12ac4780
temp_freq_hi12ad4781
temp_pulse_lo12ae4782
temp_pulse_hi12af4783
temp_waveform12b04784
pot_temp_112b14785tEMPORARIES FOR 'pot' fUNCTION
pot_temp_212b24786
window_temp12b34787
savram12b74791uSED by sprdef & savspr
defmod12fa4858uSED by sprdef & savspr
lincnt12fb4859uSED by sprdef & savspr
sprite_number12fc4860uSED by sprdef & savspr
irq_wrap_flag12fd4861uSED by basic irq TO block
aLL but one irq call
13004864aPPLICATION pROGRAM aREA $1300-$1bff
rambot1c007168sTART oF bASIC tEXT $1c00-$efff
(kernal SETS membot HERE)
1c007168vIDEO mATRIX #2 (1kb OF COLORS FOR
bITMAP, IF ALLOCATED) $1c00-$1fff
20008192vic bitmap (8kb, IF ALLOCATED)
$2000-$3fff
beginning of rom over ram
400016384c128 basic lo rom
sTART OF basic tEXT IF bIT mAP
IS ALLOCATED (ram) $4000-$efff
800032768c128 basic hL rom (OR fUNCTION rom) $8000-$bfff
basic jump table
basic entry
jmp hard_reset400016384cold entry
jmp soft_reset400316387warm entry
jmp basic_irq400616390irq entry
format conversions
jmp ayintaf0044800cONVERT f.p. TO iNTEGER
jmp givayfaf0344803cONVERT iNTEGER TO f.p.
jmp foutaf0644806cONVERT f.p. TO ascii sTRING
jmp val_Laf0944809cONVERT ascii sTRING TO f.p.
jmp getadraf0c44812cONVERT f.p. TO AN aDDRESS
jmp floatcaf0f44815cONVERT aDDRESS TO f.p.
math functions
jmp fsubaf1244818mem - facc
jmp fsubtaf1544821arg - facc
jmp faddaf1844824mem + facc
jmp faddtaf1b44827arg - facc
jmp fmultaf1e44830mem * facc
jmp fmulttaf2144833arg * facc
jmp fdivaf2444836mem / facc
jmp fdivtaf2744839arg / facc
jmp logaf2a44842cOMPUTE nATURAL log oF facc
jmp intaf2d44845pERFORM basic int oN facc
jmp sqraf3044848cOMPUTE sQUARE rOOT of facc
jmp negopaf3344851nEGATE facc
jmp fpwraf3644854rAISE arg TO tHE mEM pOWER
jmp fpwrtaf3944857rAISE arg TO tHE facc pOWER
jmp expaf3c44860cOMPUTE exp oF facc
jmp cosaf3f44863cOMPUTE cos oF facc
jmp sinaf4244866cOMPUTE sin oF facc
jmp tanaf4544869cOMPUTE tan oF facc
jmp atnaf4844872cOMPUTE atn oF facc
jmp roundaf4b44875rOUND facc
jmp absaf4e44878aBSOLUTE vALUE oF facc
jmp signaf5144881tEST sIGN oF facc
jmp fcompaf5444884cOMPARE facc wITH mEMORY
jmp rnd 0af5744887gENERATE rANDOM f.p. nUMBER
movement
jmp conupkaf5a44890mOVE ram mem TO arg
jmp romupkaf5d44893mOVE rom mem TO arg
jmp movfrmaf6044896mOVE ram mem TO facc
jmp movfmaf6344899mOVE rom mem TO facc
jmp movmfaf6644902mOVE facc TO mem
jmp movfaaf6944905mOVE arg TO facc
jmp movafaf6c44908mOVE facc TO arg
other basic routines
jmp optabaf6f44911
jmp drawlnaf7244914
memory
addresshexadecimal decimal
labeladdress address description
other basic routines
jmp gplotaf7544917
jmp cirsubaf7844920
jmp runaf7b44923
jmp runcaf7e44926
jmp clearaf8144929
jmp newaf8444932
jmp lnkprgaf8744935
jmp crunchaf8a44938
jmp fndlinaf8d44941
jmp newsttaf9044944
jmp evalaf9344947
jmp frmevlaf9644950
jmp run_a_program
af9944953
jmp setexcaf9c44956
jmp lingetaf9f44959
jmp garba2afa244962
jmp execute_a_line
afa544965
monitor entry
jmp callb00045056monitor cALL eNTRY
jmp breakb00345059monitor bREAK eNTRY
jmp moncmdb00645062monitor cOMMAND pARSER eNTRY
c00049152kernal (OR fUNCTION) rom $c000-$ffff
editor jump table
jmp cintc000491s2iNITIALIZE eDITOR & sCREEN
jmp displyc00349155dISPLAY cHARAC IN .a, cOLOR
jmp lp2c00649158gET kEY fROM irq bUFFER
jmp loop5c009iNTO a
jmp printc00c49164pRINT cHARACTER iN .a
jmp scrorgc00f49167gET # OF sCRN rOWS, cOLS iNTO x & y
jmp scnkeyc01249170sCAN kEYBOARD sUBROUTINE
jmp repeatc01549173hANDLE rEPEAT kEY & sTORE dECODED kEY
jmp plotc01849176rEAD oR sET crsr pOSITION iN x, y
jmp cursorc01b49179mOVE 8563 cURSOR sUBROUTINE
jmp escapec01e49182eXECUTE esc fUNCTION USING CHR IN .a
jmp keysetc02149185rEDEFINE a pROGRAMMABLE fUNC'N kEY
jmp irqc02449188irq eNTRY
jmp init80c02749191iNITIALIZE 80-cOLUMN cHARACTER sET
jmp swapperc02a49194sWAP eDITOR lOCALS (IN 40/80 CHANGE)
jmp windowc02d49197sET tOP-lEFT OR bOT-rIGHT OF wINDOW
d00053248vic cHARACTER rom ($d000-$dfff)
vic chip registers
vicreg0d00053248sPRITE 0, x-lOCATION
vicreg1d00153249sPRITE 0, y-lOCATION
vicreg2d00253250sPRITE 1, x-lOCATION
vicreg3d00353251sPRITE 1, y-lOCATION
vicreg4d00453252sPRITE 2, x-lOCATION
vicreg5d00553253sPRITE 2, y-lOCATION
vicreg6d00653254sPRITE 3, x-lOCATION
vicreg7d00753255sPRITE 3, y-lOCATION
vicreg8d00853256sPRITE 4, x-lOCATION
vicreg9d00953257sPRITE 4, y-lOCATION
vicreg10d00a53258sPRITE 5, x-lOCATION
vicreg11d00b53259sPRITE 5, y-lOCATION
vicreg12d00c53260sPRITE 6, x-lOCATION
vicreg13d00d53261sPRITE 6, y-lOCATION
vicreg14d00e53262sPRITE 7, x-lOCATION
vicreg15d00f53263sPRITE 7, y-lOCATION
vicreg16d01053264m.s. bIT OF x-lOCATION FOR sPRITES 0 - 7
the commodore 128 and commodore 64 memory maps
kernal jump table
nEW eNTRIES fOR c128
jmp spin spoutff4765351sET UP fAST sERIAL pORT FOR i/o
jmp close allff4a65354cLOSE aLL lOGICAL fILES FOR A DEVICE
jmp c64modeff4d65357rECONFIGURE sYSTEM AS A c64 (NO RETURN)
jmp dma callff5065360iNITIATE dma rEQUEST TO eXTERNAL ram
eXPANSION, sEND COMMAND TO dma dEVICE
jmp boot callff5365363bOOT lOAD pROGRAM fROM dISK
jmp phoenixff5665366cALL aLL fUNCTION cARDS' cOLD sTART
rOUTINES, iNITIALIZE
jmp lkuplaff5965369sEARCH tABLES fOR gIVEN la
jmp lkupsaff5c65372sEARCH tABLES fOR gIVEN sa
jmp swapperff5f65375sWITCH bETWEEN 40 AND 80 cOLUMNS (eDITOR)
jmp dlchrff6265378iNIT 80-cOL cHARACTER ram (eDITOR)
jmp pfkeyff6565381pROGRAM fUNCTION kEY (eDITOR)
jmp setbnkff6865384set bANK fOR i/o oPERATIONS
jmp getcfgff6b65387lOOKUP mmu dATA fOR gIVEN bANK
jmp jsrfarff6e65390jsr TO aNY bANK, rts TO cALLING bANK
jmp jmpfarff7165393jmp TO aNY bANK
jmp indfetff7465396lda (fetvec),y from aNY bANK
jmp indstaff7765499sta (stavec),y TO aNY bANK
jmp indcmpff7a65402cmp (cmpvec),y TO aNY bANK
jmp primmff7d65405pRINT iMMEDIATE uTILITY
(aLWAYS jsr TO THIS ROUTINE)
standard kernal jump table
ff8065408rELEASE nUMBER oF kernal
jmp cintff8165409iNIT eDITOR & dISPLAY
jmp ioinitff8465412iNIT i/o dEVICES (PORTS, TIMERS, ETC.)
jmp ramtasff876s415iNITIALIZE ram aND bUFFERS fOR sYSTEM
jmp restorff8a65418rESTORE vECTORS TO iNITIAL sYSTEM
jmp vectorff8d65421cHANGE vECTORS fOR user
jmp setmsgff9065424cONTROL o.s. mESSAGE
jmp secndff9365427sEND sa aFTER listen
jmp tksaff9665430sEND sa aFTER talk
jmp memtopff9965433sET/rEAD tOP oF sYSTEM ram
jmp membotff9c65436sET/rEAD bOTTOM oF sYSTEM ram
jmp keyff9f65439sCAN kEYBOARD (eDITOR)
jmp settmoffa265442sET tIMEOUT iN ieee (RESERVED)
jmp acptrffa565445hANDSHAKE sERIAL bYTE iN
jmp cioutffa865448hANDSHAKE sERIAL bYTE oUT
jmp untlkffab65451sEND untalk oUT sERIAL
jmp unlsnffae65454sEND unlisten oUT sERIAL
jmp listnffb165457sEND listen oUT sERIAL
jmp talkffb465460sEND talk oUT sERIAL
jmp readssffb765463rETURN i/o sTATUS bYTE
jmp setlfsffba65460sET la, fa, sa
jmp setnamffbd65469sET lENGTH aND fILE nAME aDDRESS
jmp (iopen)ffc0open65472open lOGICAL fILE
jmp (iclose)ffc3close65475close lOGICAL fILE
jmp (ichkin)ffc6chkin65478sET cHANNEL iN
jmp (ickout)ffc9ckout65481sET cHANNEL oUT
jmp (iclrch)ffccclrch65484rESTORE dEFAULT i/o cHANNEL
jmp (ibasin)ffcfbasin65487input fROM cHANNEL
jmp (ibsout)ffd2bsout65490output tO cHANNEL
jmp loadspffd565493load fROM fILE
jmp savespffd865496save TO fILE
jmp settimffdb65599sET iNTERNAL cLOCK
jmp rdtimffde65502rEAD iNTERNAL cLOCK
jmp (istop)ffe1stop65505sCAN stop kEY
jmp (igetin)ffe4getin65508rEAD bUFFERED dATA
jmp (iclall)ffe7clall65511cLOSE aLL fILES aND cHANNELS
jmp udtimffeaclock65514iNCREMENT iNTERNAL cLOCK
jmp scrorgffed65517rETURN sCREEN wINDOW sIZE (eDITOR)
jmp plotfff065520rEAD/sET x,y cURSOR cOORD (eDITOR)
jmp iobasefff365523rETURN i/o bASE
systemfff865528oPERATING sYSTEM vECTOR (ram1)
nmifffa65530pROCESSOR nmi vECTOR
resetfffc65532pROCESSOR reset vECTOR
irqfffe65534pROCESSOR irq/brk vECTOR
kernal/editor flags and shadow registers
tHE FOLLOWING SYMBOLS ARE USED BY THE c128 eDITOR. nOTE THAT THE eDITOR irq
vic SCREEN HANDLER DEPENDS UPON THEM. iN MOST CASES THE CONTENTS OF THESE
LOCATIONS WILL BE PLACED DIRECTLY INTO THE APPROPRIATE REGISTER AND SHOULD BE
USED INSTEAD OF THE ACTUAL REGISTER. fOR EXAMPLE, TO CHANGE THE LOCATION OF THE
CHARACTER SET USED BY vic, USE vm1 ($0a2c) INSTEAD OF vic REGISTER 24 ($d018).
vm1 WILL BE USED BY THE EDITOR TO UPDATE vic REGISTER 24.
address nameexplanation
$00d8/graphmsEE BELOW. if = $ff then editor leaves vic alone.
$00d9/charenmask fOR 8502 /charen bit.
$0a2c/vm1vic tEXT mODE vIDEO mATRIX & cHARACTER bASE pOINTER.
$0a2d/vm2vic gRAPHIC mODE vIDEO mATRIX & bIT mAP pOINTER.
$0a2e/vm38563 text display base aDDRESS.
$0a2f/vm48s63 attribute base aDDRESS.
$0a34/splitin split screen mode, contains value fOR middle raster irq.
$0a2b/curmod8563 cursqr mODE.
$0a21/pausecontrol s fLAG (iN EFFECT = $13)
540 commodore 128
explanation of various kernal/editor flag bytes, etc.
address symboldescription
76543210
0000d6510-(in)(out)(in)(out)(out)(out)(out)
0001r6510-capkeycasmtrcassencaswrtcharenhiramloram
00f7lockscasectl s------
00f8scrollofflinker
00d3shflag---altalphactrlshift
oa22rptflgallnone------
oa26blnononblnk------
00f9beeperon-------
00d8graphmmcmsplitbmm-----
00d7mode40/80-------
oa04init_chrsetcint-----basic
status
nOTES ON kERNAL sYMBOLS:
iNIT_sTATUS. sEE ALSO ABOVE. lETS SYSTEM KNOW WHAT HAS BEEN INITIALIZED AND
WHAT HASN'T. sET TO $00 BY A RESET BUT UNTOUCHED BY nmi.
sYSTEM_vECTOR. wHERE THE kERNAL GOES WHEN IT HAS TO GO SOMEWHERE. iT'S SET
TO basic COLD AT RESET. basic ITSELF SETS IT TO basic WARM AFTER IT HAS
INITIALIZED. tHE MONITOR RESPECTS IT TOO.
sYSTEM. vECTOR IN ram1 AT $fff8. sET AT POWER-UP TO c128mode, USER MAY REDIRECT
IT TO HIS CODE. tAKEN AT RESET ALWAYS PROVIDING USER WITH CONTROL (PROTECTION)
FROM RESET.
<END>