home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / maps / Vic20.MemoryMap < prev    next >
Encoding:
Text File  |  1995-03-08  |  21.1 KB  |  630 lines

  1. --
  2. nEWSGROUPS: COMP.SYS.CBM
  3. fROM: SLAUR@UTU.FI (sAM lAUR)
  4. sUBJECT: vic-20 MEMORY MAP (LONG)
  5. dATE: wED, 2 mAR 1994 12:54:14 gmt
  6.  
  7. oKAY, HERE'S WHAT ALL YOU vic-20 FREAKS OUT THERE HAVE BEEN WAITING FOR...
  8. sORRY FOR THE DELAY, BUT i GUESS i'M JUST TOO LAZY TO CORRECT THE ERRORS
  9. THAT ocr SCANNERS MAKE :-)  aLSO i FOUND A COUPLE OF TYPOS IN THE vic-20
  10. pROGRAMMER'S rEFERENCE gUIDE ITSELF. i TRIED TO CORRECT EVERYTHING, BUT
  11. WHO KNOWS, THERE MAY STILL BE QUITE MANY TYPOS LURKING IN THIS. hERE IT COMES:
  12.  
  13.  
  14. memory maps
  15.  
  16. tHE FOLLOWING MEMORY MAPS PROVIDE A GUIDE WHICH SHOWS WHICH
  17. SPECIAL LOCATIONS ARE SET ASIDE FOR USE BY THE vLc'S OPERATING
  18. SYSTEM . . . AND WHAT THOSE LOCATIONS ARE USED FOR.
  19.  
  20.    mEMORY mAP
  21.  
  22.    hex      decimal  description
  23.  
  24.    0000      0       jUMP FOR usr
  25. 0001-0002    1-2     vECTOR FOR usr
  26. 0003-0004    3-4     fLOAT-fIXED VECTOR
  27. 0005-0006    5-6     fIXED-fLOAT VECTOR
  28.    0007      7       sEARCH CHARACTER
  29.    0008      8       sCAN-QUOTES FLAG
  30.    0009      9       tab COLUMN SAVE
  31.    000a     10       0=load, 1=verify
  32.    000b     11       iNPUT BUFFER POINTER/# SUBSCRIPT
  33.    000c     12       dEFAULT dim FLAG
  34.    000d     13       tYPE: ff=STRING, 00=NUMERIC
  35.    000e     14       tYPE: 80=INTEGER, 00=FLOATING POINT
  36.    000f     15       data SCAN/lLst QUOTE/MEMORY FLAG
  37.    0010     16       sUBSCRIPT/fnX FLAG
  38.    0011     17       0 = input;$40 = get;$98 = read
  39.    0012     18       atn SIGN/cOMPARISON EVAL FLAG
  40.    0013     19       cURRENT L/o PROMPT FLAG
  41. *0014-0015  20-21    iNTEGER VALUE
  42.    0016     22       pOINTER: TEMPORARY STRING STACK
  43. 0017-0018   23-24    lAST TEMP STRING VECTOR
  44. 0019-0021   25-33    sTACK FOR TEMPORARY STRINGS
  45. 0022-0025   34-37    uTILITY POINTER AREA
  46. 0026-002a   38-42    pRODUCT AREA FOR MULTIPLICATION
  47. *002b-002c  43-44    pOINTER: sTART OF bASIC
  48. *002d-002e  45-46    pOINTER: sTART OF vARIABLES
  49. *002f-0030  47-48    pOINTER: sTART OF aRRAYS
  50. *0031-0032  49-50    pOINTER: eND OF aRRAYS
  51. *0033-0034  51-52    pOINTER: sTRING STORAGE (MOVING DOWN)
  52. 0035-0036   53-54    uTILITY STRING POINTER
  53. *0037-0038  55-56    pOINTER: lIMIT OF MEMORY
  54. 0039-003a   57-58    cURRENT bASIC LINE NUMBER
  55. 003b-003c   59-60    pREVIOUS bASIC LINE NUMBER
  56. 003d-003e   61-62    pOINTER: bASIC STATEMENT FOR cont
  57. 003f-0040   63-64    cURRENT data LINE NUMBER
  58. 0041-0042   65-66    cURRENT data ADDRESS
  59. *0043-0044  67-68    iNPUT VECTOR
  60.  
  61. * uSEFUL MEMORY LOCATION
  62.  
  63. 170
  64.  
  65.  
  66.    hex      decimal  description
  67.  
  68. 0045-0046   69-70    cURRENT VARIABLE NAME
  69. 0047-0048   71-72    cURRENT VARIABLE ADDRESS
  70. 0049-004a   73-74    vARIABLE POINTER FOR for/next
  71. 004b-004c   75-76    y-SAVE; OP-SAVE; bASIC POINTER SAVE
  72.    004d     77       cOMPARISON SYMBOL ACCUMULATOR
  73. 004e-0053   78-83    mISC WORK AREA, POINTERS, ETC
  74. 0054-0056   84-86    jUMP VECTOR FOR FUNCTIONS
  75. 0057-0060   87-96    mISC NUMERIC WORK AREA
  76.   *0061     97       aCCUM#1: eXPONENT
  77. *0062-0065  98-101   aCCUM#1: mANTISSA
  78.   *0066     102      aCCUM#1: sIGN
  79.    0067     103      sERIES EVALUATION CONSTANT POINTER
  80.    0068     104      aCCUM#1 HI-ORDER (OVERFLOW)
  81. *0069-006e  105-110  aCCUM#2: eXPONENT, ETC.
  82.    006f     111      sIGN COMPARISON, aCC#1 VS #2
  83.    0070     112      aCCUM#1 LO-ORDER (ROUNDING)
  84. 0071-0072   113-114  cASSETTE BUFFER LENGTH/sERIES POINTER
  85. *0073-008a  115-138  chrget SUBROUTINE (GET basic CHAR)
  86. 007a-007b   122-123  bASIC POINTER (WITHIN SUBROUTINE)
  87. 008b-008f   139-143  rnd SEED VALUE
  88.   *0090     144      sTATUS WORD st
  89.    0091     145      kEYSWITCH pia: stop AND rvs FLAGS
  90.    0092     146      tIMING CONSTANT FOR TAPE
  91.    0093     147      lOAD=0, vERIFY=1
  92.    0094     148      sERIAL OUTPUT: DEFERRED CHAR FLAG
  93.    0095     149      sERIAL DEFERRED CHARACTER
  94.    0096     150      tAPE eot RECEIVED
  95.    0097     151      rEGISTER SAVE
  96.   *0098     152      hOW MANY OPEN FILES
  97.   *0099     153      iNPUT DEVICE (NORMALLY 0)
  98.   *009a     154      oUTPUT (cmd) DEVICE, NORMALLY 3
  99.    009b     155      tAPE CHARACTER PARITY
  100.    009c     156      bYTE-RECEIVED FLAG
  101.    009d     157      dIRECT=$80/run=0 OUTPUT CONTROL
  102.    009e     158      tAPE pASS 1 ERROR LOG/CHAR BUFFER
  103.    009f     159      tAPE pASS 2 ERROR LOG CORRECTED
  104. *00a0-00a2  160-162  jIFFY cLOCK (hml)
  105.    00a3     163      sERIAL BIT COUNT/eoi FLAG
  106.    00a4     164      cYCLE COUNT
  107.    00a5     165      cOUNTDOWN, TAPE WRITE/BIT COUNT
  108.    00a6     166      pOINTER: TAPE BUFFER
  109.    00a7     167      tAPE wRITE LDR COUNT/rEAD PASS/INBIT
  110.    00a8     168      tAPE wRITE NEW BYTE/rEAD ERROR/INBIT
  111.      CNT
  112.    00a9     169      wRITE START BIT/rEAD BIT ERR/STBIT
  113.  
  114. * uSEFUL MEMORY LOCATION
  115.  
  116. 171
  117.  
  118.  
  119.    hex      decimal  description
  120.  
  121.    00aa     170      tAPE sCAN;cNT;lD;eND/BYTE ASSY
  122.    00ab     171      wRITE LEAD LENGTH/rD CHECKSUM/PARITY
  123. 00ac-00ad   172-173  pOINTER: TAPE BUFFER, SCROLLING
  124. 00ae-00af   174-175  tAPE END ADDRESSES/eND OF PROGRAM
  125. 00b0-00b1   176-177  tAPE TIMING CONSTANTS
  126. *00b2-00b3  178-179  pOINTER: START OF TAPE BUFFER
  127.    00b4     180      tAPE TIMER (1 =ENABLE); BIT CNT
  128.    00b5     181      tAPE eot/rs-232 NEXT BIT TO SEND
  129.    00b6     182      rEAD CHARACTER ERROR/OUTBYTE BUFFER
  130.   *00b7     183      # CHARACTERS IN FILE NAME
  131.   *00b8     184      cURRENT LOGICAL FILE
  132.   *00b9     185      cURRENT SECONDARY ADDRESS
  133.   *00ba     186      cURRENT DEVICE
  134. *00bb-00bc  187-188  pOINTER: TO FILE NAME
  135.    00bd     189      wRITE SHIFT WORD/rEAD INPUT CHAR
  136.    00be     190      # BLOCKS REMAINING TO wRITE/rEAD
  137.    00bf     191      sERIAL WORD BUFFER
  138.    00c0     192      tAPE MOTOR INTERLOCK
  139. 00c1-00c2   193-194  i/o START ADDRESSES
  140. 00c3-00c4   195-196  kernal SETUP POINTER
  141.   *00c5     197      cURRENT KEY PRESSED
  142.   *00c6     198      # CHARS IN KEYBOARD BUFFER
  143.   *00c7     199      sCREEN REVERSE FLAG
  144.    00c8     200      pOINTER: eND-OF-LINE FOR INPUT
  145. 00c9-00ca   201-202  iNPUT CURSOR LOG (ROW, COLUMN)
  146.   *00cb     203      wHICH KEY: 64 IF NO KEY
  147.    00cc     204      CURSOR ENABLE (0=FLASH CURSOR)
  148.    00cd     205      cURSOR TIMING COUNTDOWN
  149.    00ce     206      cHARACTER UNDER CURSOR
  150.    00cf     207      cURSOR IN BLINK PHASE
  151.    00d0     208      iNPUT FROM SCREEN/FROM KEYBOARD
  152. *00d1-00d2  209-210  pOINTER TO SCREEN LINE
  153.   *00d3     211      pOSITION OF CURSOR ON ABOVE LINE
  154.    00d4     212      0=DIRECT CURSOR, ELSE PROGRAMMED
  155.   *00d5     213      cURRENT SCREEN LINE LENGTH
  156.   *00d6     214      rOW WHERE CURSOR LIVES
  157.    00d7     215      lAST INKEY/CHECKSUM/BUFFER
  158.   *00d8     216      # OF insertS OUTSTANDING
  159. *00d9-00f0  217-240  sCREEN LINE LINK TABLE
  160.    00f1     241      dUMMY SCREEN LINK
  161.    00f2     242      sCREEN ROW MARKER
  162. *00f3-00f4  243-244  sCREEN COLOR POINTER
  163. 00f5-00f6   245-246  kEYBOARD POINTER
  164. 00f7-00f8   247-248  rs-232 rCV POINTER
  165. 00f9-00fa   249-250  rs-232 tX POINTER
  166.  
  167. * uSEFUL MEMORY LOCATION
  168.  
  169. 172
  170.  
  171.  
  172. hex decimal  description
  173.  
  174. *00fb-00fe  251-254  oPERATING SYSTEM FREE ZERO PAGE SPACE
  175. 00ff    255      bASIC STORAGE
  176.  
  177. 0100-010a   256-266  fLOATING TO ascii WORK AREA
  178. 0100-013e   256-318  tAPE ERROR LOG
  179. 0100-01ff   256-511  pROCESSOR STACK AREA
  180.  
  181. *0200-0258  512-600  bASIC INPUT BUFFER
  182. *0259-0262  601-610  lOGICAL FILE TABLE
  183. *0263-026c  611-620  dEVICE # TABLE
  184. *026d-0276  621-630  sECONDARY aDDRESS TABLE
  185. *0277-0280  631-640  kEYBOARD BUFFER
  186. *0281-0282  641-642  sTART OF MEMORY FOR OP SYSTEM
  187. *0283-0284  643-644  tOP OF MEMORY FOR OP SYSTEM
  188. 0285    645      sERIAL BUS TIMEOUT FLAG
  189. *0286       646      cURRENT COLOR CODE
  190. 0287    647      cOLOR UNDER CURSOR
  191. *0288       648      sCREEN MEMORY PAGE
  192. *0289       649      mAX SIZE OF KEYBOARD BUFFER
  193. *028a       650      kEY REPEAT (128=REPEAT ALL KEYS)
  194. *028b       651      rEPEAT SPEED COUNTER
  195. 028c    652      rEPEAT DELAY COUNTER
  196. *028d       653      kEYBOARD sHIFT/cONTROL FLAG
  197. 028e    654      lAST KEYBOARD SHIFT PATTERN
  198. 028f-0290   655-656  pOINTER: DECODE LOGIC
  199. *0291       657      sHIFT MODE SWITCH (0 = ENABLED,  128 = LOCKED)
  200. 0292    658      aUTOSCROLLDOWNFLAG (0=ON, <>0=OFF)
  201. 0293    659      rs-232 CONTROL REGISTER
  202. 0294    660      rs-232 COMMAND REGISTER
  203. 0295-0296   661-662  nONSTANDARD (bIT TIME/2-100)
  204. 0297    663      rs-232 STATUS REGISTER
  205. 0298    664      nUMBER OF BITS TO SEND
  206. 0299-029a   665-666  bAUD RATE (FULL) BIT TIME
  207. 029b    667      rs-232 RECEIVE POINTER
  208. 029c    668      rs-232 INPUT POINTER
  209. 029d    669      rs-232 TRANSMIT POINTER
  210. 029e    670      rs-232 OUTPUT POINTER
  211. 029f-02a0   671-672  hOLDS irq DURING TAPE OPERATIONS
  212. 02a1-02ff   673-767  pROGRAM INDIRECTS
  213.  
  214. *0300-0301  768-769  eRROR MESSAGE LINK
  215. 0302-0303   770-771  bASIC WARM START LINK
  216. 0304-0305   772-773  cRUNCH bASIC TOKENS LINK
  217. 0306-0307   774-775  pRINT TOKENS LINK
  218. 0308-0309   776-777  sTART NEW bASIC CODE LINK
  219.  
  220. * uSEFUL MEMORY LOCATION
  221.  
  222. 173
  223.  
  224.  
  225. hex  decimal       description
  226.  
  227. 030a-030b    778-779       gET ARITHMETIC ELEMENT LINK
  228. 030c     780   sTORAGE FOR 6502 .a REGISTER
  229. 030d     781   sTORAGE FOR 6502 .x REGISTER
  230. 030e     782   sTORAGE FOR 6502 .y REGISTER
  231. 030f     783   sTORAGE FOR 6502 .p REGISTER
  232. 0310-0313    784-787       ??
  233. 0314-0315    788-789       hARDWARE (irq) INTERRUPT VECTOR [eabf]
  234. 0316-0317    790-791       bREAK INTERRUPT VECTOR[fed2]
  235. 0318-0319    792-793       nmi INTERRUPT VECTOR[fead]
  236. 031a-031b    794-795       open VECTOR[f40a]
  237. 031c-031d    796-797       close VECTOR[f34a]
  238. 031e-031f    798-799       sET-INPUT VECTOR[f2c7]
  239. 0320-0321    800-801       sET-OUTPUT VECTOR[f309]
  240. 0322-0323    802-803       rESTORE L/o VECTOR[f3f3]
  241. 0324-0325    804-805       input VECTOR[f20e]
  242. 0326-0327    806-807       oUTPUT VECTOR[f27a]
  243. 0328-0329    808-809       tEST-stop VECTOR[f770]
  244. 032a-032b    810-811       get VECTOR[f1f5]
  245. 032c-032d    812-813       aBORT L/o VECTOR[f3ef]
  246. 032e-032f    814-815       uSER VECTOR (DEFAULT brk)[fed2]
  247. 0330-0331    816-817       lINK TO LOAD ram[f549]
  248. 0332-0333    818-819       lINK TO SAVE ram[f685]
  249. 0334-033b    820-827       ??
  250. *003c-03fb   828-1019      cASSETTE BUFFER
  251. 0400-0fff    1024-4095     3k EXPANSION ram AREA
  252. 1000-1dff    4096-7679     uSER bASIC AREA
  253. 1e00-1fff    7680-8191     sCREEN MEMORY
  254. 2000-3fff    8192-16383    8k EXPANSION ram/rom BLOCK 1
  255. 4000-5fff    16384-24575   8k EXPANSION ram/rom BLOCK 2
  256. 6000-7fff    24576-32767   8k EXPANSION ram/rom BLOCK 3
  257.  
  258. note: wHEN ADDITIONAL MEMORY IS ADDED TO BLOCK 1 (AND 2 AND 3), THE
  259. kernal RELOCATES THE FOLLOWING THINGS FOR basic:
  260.  
  261. 1000-11ff    4096-4607     sCREEN MEMORY
  262.  
  263. 1200-?       4608-?uSER bASIC AREA
  264.  
  265. 9400-95ff    37888-38399   cOLOR ram
  266.  
  267. 8000-8fff    32768-36863   4k cHARACTER GENERATOR rom
  268. 8000-83ff    32768-33791   uPPER CASE AND GRAPHICS
  269. 8400-87ff    33792-33815   rEVERSED UPPER CASE AND GRAPHICS
  270. 8800-8bff    33816-35839   uPPER AND LOWER CASE
  271. 8c00-8fff    35840-36863   rEVERSED UPPER AND LOWER CASE
  272. 9000-93ff    36864-37887   i/o block 0
  273.  
  274. * uSEFUL MEMORY LOCATION
  275.  
  276. 174
  277.  
  278.  
  279. hex  decimal       description
  280.  
  281. 9000-900f    36864-36879   aDDRESS OF vic CHIP REGISTERS
  282. 9000 36864 BITS 0-6 HORIZONTAL CENTERING
  283.    BIT 7 SETS INTERLACE SCAN
  284. 9001 36865 VERTICAL CENTERING
  285. 9002 36866 BITS 0-6 SET # OF COLUMNS
  286.    BIT 7 IS PART OF VIDEO MATRIX ADDRESS
  287. 9003 36867 BITS 1-6 SET # OF ROWS
  288.    BIT 0 SETS 8X8 OR 16X8 CHARS
  289. 9004 36868 tv RASTER BEAM LINE
  290. 9005 36869 BITS 0-3 START OF CHARACTER MEMORY
  291.    (DEFAULT = 0)
  292.    BITS 4-7 IS REST OF VIDEO ADDRESS
  293.    (DEFAULT= f)
  294.    bits 3,2,1,0 cm STARTINQ ADDRESS
  295. hex   dec
  296.    0000   rom   8000  32768
  297.    00018400  33792
  298.    00108800  34816
  299.    00118c00  35840
  300.    1000   ram   0000  0000
  301.    1001XXXX
  302.    1010XXXX  UNAVAIL.
  303.    1011XXXX
  304.    11001000  4096
  305.    11011400  5120
  306.    11101800  6144
  307.    11111c00  7168
  308.  
  309. 9006     36870    HORIZONTAL POSITION OF LIGHT PEN
  310. 9007     36871    VERTICAL POSITION OF LIGHT PEN
  311. 9008     36872    dIGITIZED VALUE OF PADDLE x
  312. 9009     36873    dIGITIZED VALUE OF PADDLE y
  313. 900a     36874    fREQUENCY FOR OSCILLATOR 1 (LOW)
  314.   (ON: 128-255)
  315. 900b     36875    fREQUENCY FOR OSCILLATOR 2 (MEDIUM)
  316.   (ON: 128-255)
  317. 900c     36876    fREQUENCY FOR OSCILLATOR 3 (HIGH)
  318.   (ON: 128-255)
  319. 900d     36877    fREQUENCY OF NOISE SOURCE
  320. 900e     36878    BIT 0-3 SETS VOLUME OF ALL SOUND
  321.   BITS 4-7 ARE AUXILIARY COLOR INFORMATION
  322. 900f     36879    sCREEN AND BORDER COLOR REGISTER
  323.    BITS 4-7 SELECT BACKGROUND COLOR
  324.    BITS 0-2 SELECT BORDER COLOR
  325.    BIT 3 SELECTS INVERTED OR NORMAL MODE
  326.  
  327.  
  328. 175
  329.  
  330.  
  331. hexdecimal description
  332.  
  333. 9110-911f  37136-37151 6522 via#1
  334.    9110    37136     pORT b OUTPUT REGISTER
  335.      (USER PORT AND rs-232 LINES)
  336.    pin    6522 description   eia   abv
  337.    id     id
  338.  
  339.    c      pb0 rECEIVED DATA  (bb)  sIN
  340.    d      pb1 rEQUEST TO sEND  (ca)  rts
  341.    e      pb2 dATA TERMINAL READY (cd)  dtr
  342.    f      pb3 rING INDICATOR  (ce)  ri
  343.    h      pb4 rECEIVED LINE SIGNAL (cf)  dcd
  344.    j      pb5 uNASSIGNED  ( )   xxx
  345.    k      pb6 cLEAR TO SEND  (cb)  cts
  346.    l      pb7 dATA SET READY  (cc)  dsr
  347.    b      cb1 iNTERRUPT FOR sIN   (bb)  sIN
  348.    m      cb2 tRANSMITTED DATA    (ba)  sOUT
  349.  
  350.    a      gnd pROTECTIVE GROUND   (m)   gnd
  351.    n      gnd sIGNAL GROUND  (ab)  gnd
  352.   9111     37137     pORT a OUTPUT REGISTER
  353.    (pa0) bIT 0=sERIAL clk in
  354.    (pa1) bIT 1=sERIAL data in
  355.    (pa2) bIT 2=jOY 0
  356.    (pa3) bIT 3=jOY 1
  357.    (pa4) bIT 4=jOY 2
  358.    (pa5) bIT 5 = lIGHTPEN/fIRE BUTTON
  359.    (pa6) bIT 6=cASSETTE SWITCH SENSE
  360.    (pa7) bIT 7=sERIAL atn OUT
  361. 9112       37138  dATA DIRECTION REGISTER b
  362. 9113       37139  dATA DIRECTION REGISTER a
  363. 9114       37140  tIMER 1 LOW BYTE
  364. 9115       37141  tIMER 1 HIGH BYTE & COUNTER
  365. 9116       37142  tIMER 1 LOW BYTE
  366. 9117       37143  tIMER 1 HIGH BYTE
  367. 9118       37144  tIMER 2 LOW BYTE
  368. 9119       37145  tIMER 2 HIGH BYTE
  369. 911a       37146  sHIFT REGISTER
  370. 911b       37147  aUXILIARY CONTROL REGISTER
  371. 911c       37148  pERIPHERAL CONTROL REGISTER
  372.   (ca1, ca2, cb1, cb2)
  373.   ca1 = RESTORE KEY (bIT 0)
  374.   ca2 = CASSETTE MOTOR CONTROL (bITS 1-3)
  375.   cb1 = INTERRUPT SIGNAL FOR RECEIVED
  376.       rs-232 DATA (bIT 4)
  377.   cb2=TRANSMITTED rs-232 DATA (bITS
  378.       5-7)
  379.   911d     37149  iNTERRUPT FLAG REGISTER
  380.  
  381. 176
  382.  
  383.  
  384.     hex      decimal    description
  385.  
  386.    911e      37150      iNTERRUPT ENABLE REGISTER
  387.    911f      37151      pORT a (sENSE CASSETTE SWITCH)
  388.  9120-912f   37152-371676522 via#2
  389.    9120      37152      pORT b OUTPUT REGISTER
  390. KEYBOARD COLUMN SCAN
  391. (pb3) bIT 3 =CASSETTE WRITE LINE
  392. (pb7) bIT 7 =jOY 3
  393.    9121      37153      pORT a OUTPUT REGISTER
  394. KEYBOARD ROW SCAN
  395.    9122      37154      dATA DIRECTION REGISTER b
  396.    9123      37155      dATA DIRECTION REGISTER a
  397.    9124      37156      tIMER 1, LOW BYTE LATCH
  398.    9125      37157      tIMER 1, HIGH BYTE LATCH
  399.    9126      37158      tIMER 1, LOW BYTE COUNTER
  400.    9127      37159      tIMER 1, HIGH BYTE COUNTER
  401. TIMER 1 IS USED FOR THE
  402. 60 TIME/SECOND INTERRUPT
  403.    9128      37160      tIMER 2, LOW BYTE LATCH
  404.    9129      37161      tIMER 2, HIGH BYTE LATCH
  405.    912a      37162      sHIFT REGISTER
  406.    912b      37163      aUXILIARY CONTROL REGISTER
  407.    912c      37164      pERIPHERAL CONTROL REGISTER
  408. ca1 cASSETTE READ LINE (bIT 0)
  409. ca2 sERIAL CLOCK OUT (bITS 1-3)
  410. cb1 sERIAL srq in (bIT 4)
  411. cb2 sERIAL DATA OUT (bITS 5-7)
  412.    912d      37165      iNTERRUPT FLAG REGISTER
  413.    912e      37166      iNTERRUPT ENABLE REGISTER
  414.    912f      37167      pORT a OUTPUT REGISTER
  415.  
  416.  9400-95ff   37888-38399LOCATION OF color ram WITH
  417. ADDITIONAL ram AT BLK 1
  418.  9600-97ff   38400-38911nORMAL LOCATION OF color ram
  419.  9800-9bff   38912-39935i/o BLOCK 2
  420.  9c00-9fff   39936-40959i/o BLOCK 3
  421.  a000-bfff   40960-491528k DECODED BLOCK FOR EXPANSION rom
  422.  c000-dfff   49152-573438k bASIC rom
  423.  e000-ffff   57344-655358k kernal rom
  424.  
  425. 177
  426.  
  427.  
  428. useful memory locations
  429.  
  430. tHIS IS A MORE IN-DEPTH GUIDE TO SOME OF THE MEMORY LOCATIONS
  431. YOU CAN USE.
  432.  
  433. hex decimal  description
  434.  
  435. 0014-0015   20-21    wHERE basic STORES INTEGER VARIABLES
  436.      USED IN CALCULATIONS. tHE FIXED-FLOAT AND
  437.      FLOAT-FIXED ROUTINES (VECTORS AT 1-2 AND
  438.      3-4) USE THE VALUE IN THIS AREA.
  439.  
  440. 002b-002c   43-44    tHE START OF THE basic PROGRAM IN
  441.      MEMORY. lOCATION 43 CONTAINS THE LOW
  442.      BYTE, AND LOCATION 44 HAS THE HIGH BYTE.
  443.      tO COMPUTE THE START OF basic IN
  444.      DECIMAL, USE THE FORMULA: peek(43) +
  445.      256 * peek(44)
  446.  
  447. 002d-002e   45-46    tHE START OF THE NUMERIC VARIABLES,
  448.      WHICH IS USUALLY IMMEDIATELY AFTER THE
  449.      END OF THE basic PROGRAM.
  450.  
  451. 002f-0030   47-48    tHE START OF ARRAYS IN MEMORY, USUALLY
  452.      IMMEDIATELY FOLLOWING THE NUMERIC VARI-
  453.      ABLES.
  454.  
  455. 0031-0032   49-50    tHE END OF THE ARRAYS IN MEMORY.
  456.  
  457. 0033-0034   51-52    bOTTOM OF STRING STORAGE, MOVING FROM
  458.      THE TOP OF AVAILABLE MEMORY DOWN TO THE
  459.      TOP OF ARRAYS.
  460.  
  461. 0037-0038   55-56    tHE TOP OF FREE ram. bY LOWERING THIS
  462.      VALUE, SOME ram CAN BE "PROTECTED"
  463.      AGAINST basic PUTTING VALUES HERE.
  464.  
  465. 0043-0044   67-68    jUMP VECTOR FOR input STATEMENT.
  466.  
  467. 0061-0066   97-102   fLOATING POINT ACCUMULATOR #1 FOR CAL-
  468.      CULATIONS.
  469.  
  470. 0069-006e   105-110  fLOATING POINT ACCUMULATOR #2.
  471.  
  472. 0073-008a   115-138  tHE chrget SUBROUTINE RESIDES HERE.
  473.      tHIS ROUTINE GETS THE NEXT basic
  474.      CHARACTER FROM MACHINE LANGUAGE.
  475.  
  476. 0090    144      sTATUS WORD st.
  477.  
  478. 0098    152      nUMBER OF OPEN FILES.
  479.  
  480. 0099    153      dEVICE NUMBER FOR INPUT, NORMALLY 0
  481.      (KEYBOARD).
  482.  
  483. 009a    154      oUTPUT (cmd) DEVICE, NORMALLY 3 (SCREEN).
  484.  
  485. 178
  486.  
  487.  
  488. hexdecimal  description
  489.  
  490. 00a0-00a2  160-162  3 BYTE JIFFY CLOCK. tHE tL AND tL$
  491.     VARIABLES ARE TRANSLATIONS OF THESE LOCA-
  492.     TIONS.
  493.  
  494. 00b2-00b3  178-179  pOINTS TO THE START OF THE TAPE BUFFER. cAN
  495.     BE USED AS AN INDIRECT ZERO-PAGE JUMP
  496.     TO A ROUTINE IN THE BUFFER.
  497.  
  498. 00b7       183      nUMBER OF CHARACTERS IN FILENAME.
  499. 00b9       185      wHICH SECONDARY ADDRESS IS CURRENTLY
  500.     BEING USED.
  501.  
  502. 00ba       186      cURRENT DEVICE NUMBER BEING ACCESSED.
  503. 00bb-00bc  187-188  pOINTS TO LOCATION OF FILENAME IN MEMO-
  504.  
  505. 00c5       197      cURRENT KEY BEING HELD DOWN. tHERE WILL
  506.     BE A 64 HERE IF NOTHING IS HELD DOWN. iF
  507.     MORE THAN 1 KEY IS DOWN, THE KEY WITH
  508.     THE HIGHEST NUMBER ON THE CHART IS WHAT
  509.     SHOWS UP HERE.
  510.  
  511. #  KEY        #  KEY#  KEY#  KEY
  512. 0  1        16 NONE32 SPACE48 q
  513. 1  3        17 a33 z49 e
  514. 2  5        18 d34 c50 t
  515. 3  7        19 g35 b51 u
  516. 4  9        20 j36 m52 o
  517. 5  +        21 l37 .53 @
  518. 6  {CBM-T} (POUND)    22 ;38 NONE54 ^ (UP ARROW)
  519. 7  del        23 CRSR LT/RT   39 F155 F5
  520. 8  <-        24 stop40 NONE56 2
  521. 9  w        25 NONE41 s57 4
  522. 10 r        26 x42 f58 6
  523. 11 y        27 v43 h59 8
  524. 12 i        28 n44 k60 0
  525. 13 p        29 ,45 :61 -
  526. 14 *        30 /        46 =62 home
  527. 15 return       31 CRSR UP/DN   47 F363 F7
  528.  
  529. 00c6       198      nUMBER OF CHARACTERS CURRENTLY IN KEY-
  530.     BOARD BUFFER.
  531. 00c7       199      fLAG FOR REVERSE ON/OFF. a 1 HERE IS ON, A
  532.     0 IS OFF.
  533. 00cb       203      sAME AS 197.
  534. 00d1-00d2  209-210  aDDRESS OF START OF LINE WHERE CURSOR IS.
  535. 00d3       211      pOSITION OF CURSOR ON LINE.
  536. 00d5       213      cURRENT SCREEN LINE LENGTH--EITHER 21,
  537.     43, 65, OR 87.
  538.  
  539. 179
  540.  
  541.  
  542. hexdecimal  description
  543.  
  544. 00d6       214      sCREEN ROW WHERE CURSOR IS. tO CHANGE
  545.     THE CURSOR POSITION, LOCATIONS 209, 210,
  546.     211, AND 214 MUST BE CHANGED.
  547.  
  548. 00d8       216      nUMBER OF SPACES LEFT IN insert MODE.
  549.     pokeING THIS TO A ZERO WILL TURN OFF INSERT
  550.     MODE.
  551.  
  552. 00d9-00f0  217-240  sCREEN LINE LINK TABLE. a 158 MEANS THAT
  553.     THE LINE IS FINISHED AT THE END OF THAT LINE,
  554.     AND A 30 MEANS THAT THE LINE CONTINUES
  555.     ON THE NEXT LINE.
  556.  
  557. 00f3-00f4  243-244  pOINTER TO THE CURRENT SPACE IN COLOR MEMORY.
  558.  
  559. 00fb-00fe  251-254  aVAILABLE LOCATIONS IN ZERO PAGE.
  560.  
  561. 0200-0258  512-600  basic INPUT BUFFER--WHERE THE CHARAC-
  562.     TERS BEING input WILL GO.
  563.  
  564. 0259-0262  601-610  lOGIC 1 FILE TABLE FOR open FILES.
  565.  
  566. 0263-026c  611-620  dEVICE # TABLE FOR open FILES.
  567.  
  568. 026d-0276  621-630  sECONDARY ADDRESS TABLE
  569.  
  570. 0277-0280  631-640  kEYBOARD BUFFER. iF CHARACTERS ARE pokeD IN
  571.     HERE AND LOCATION 198 (# OF CHARACTERS IN
  572.     BUFFER) IS CHANGED, IT WILL BE AS IF THE
  573.     CHARACTERS WERE TYPED FROM THE KEYBOARD.
  574.  
  575. 0281-0282  641-642  sTART OF MEMORY POINTER.
  576.  
  577. 0283-0284  643-644  tOP OF MEMORY POINTER.
  578.  
  579. 0286       646      cURRENT COLOR CODE. tHIS HOLDS THE COLOR
  580.     NUMBER THAT GOES INTO COLOR MEMORY
  581.     DURING print OPERATIONS.
  582.  
  583. 0288       648      sCREEN MEMORY PAGE. iF YOU WANT THE
  584.     OPERATING SYSTEM TO KNOW WHERE SCREEN
  585.     MEMORY IS, THIS MUST BE CHANGED AS WELL
  586.     AS THE vic CHIP.
  587.  
  588. 0289       649      mAXIMUM SIZE OF KEYBOARD BUFFER. iF THIS
  589.     IS SET GREATER THAN 10, VITAL POINTERS WILL
  590.     BE DESTROYED.
  591.  
  592. 028a       650      kEYBOARD REPEAT FLAG. iF THIS IS A 0, ONLY
  593.     CURSOR CONTROLS REPEAT; IF 128, ALL KEYS
  594.     REPEAT.
  595.  
  596. 028b       651      tHIS DETERMINES HOW LONG THE vic WAITS
  597.     BEFORE REPEATING KEY.
  598.  
  599. 028d       653      kEYBOARD shift, ctrl, cOMMODORE FLAG. tHE shift
  600.     SETS THE 1 BIT, cOMMODORE SETS THE 2 BIT, AND
  601.     THE ctrl SETS THE 4 BIT.
  602.  
  603. 180
  604.  
  605.  
  606. hex   decimal  description
  607. 0291    657    sETTING THIS LOCATION TO 128 WILL DISABLE
  608.    SWITCHING CASE, AND A 0 HERE ENABLES
  609.    THE ABILITY TO SWITCH.
  610.  
  611. 0300-0301   768-769  tHIS IS THE JUMP VECTOR FOR ERRORS. bY
  612.      CHANGING THIS VECTOR, A ROUTINE CAN
  613.      INTERCEPT ANY ERROR CONDITION.
  614.  
  615. 033c-03fb   828-1019 cASSETTE BUFFER. tHIS IS WHERE DATA FILES
  616.      ARE HELD BEFORE THEY ARE input. wHEN
  617.      NOT USING FILES, THIS IS AVAILABLE FOR
  618.      pokeING OR MACHINE LANGUAGE PROGRAMS.
  619.  
  620.  
  621.  
  622.  
  623. 181
  624.  
  625.  
  626. -- 
  627. /*  sAM lAUR SLAUR@UTU.FI  */
  628. /*   gO FINGER YOURSELF!   */
  629. -
  630.