Article 37069 of comp.sys.cbm:
Newsgroups: comp.sys.cbm
From: rhialto@mbfys.kun.nl (Olaf Seibert)
Subject: Petram.doc (typos corrected)
Message-ID: <D7ttnH.FBt@sci.kun.nl>
Sender: news@sci.kun.nl (News owner)
Nntp-Posting-Host: severus.mbfys.kun.nl
Organization: University of Nijmegen, The Netherlands
Date: Sun, 30 Apr 1995 02:30:53 GMT
Lines: 275

;       Commodore PET RAM Memory Map
;       for Basic 2 and 4 (40 and 80 columns)
;       V1.3    30 april 1995
;
;       Note that the labels in this list are matched up against C-64
;       memory maps. All attempts were made to secure plausibility of
;       placement.
;       Locations marked with (64=..) are found by taking the label given
;       for the C-64 and comparing ROM disassemblies. Many of these
;       locations have RS-232 specific names.


 LABEL  HEX             DECIMAL
        ADDRESS         LOCATION        DESCRIPTION

 USRPOK 0000            0       USR Function Jump Instr (4C)
 USRADD 0001-0002       1-2     USR Address [4: C373]
 CHARAC 0003            3       Search Character
 ENDCHR 0004            4       Flag: Scan for Quote at End of String
 COUNT  0005            5       Input Buffer Pointer / No. of Subscripts
 DIMFLG 0006            6       Flag: Default Array DiMension / array name
                                initial / AND, OR flag
 VALTYP 0007            7       Data Type: $FF = String, $00 = Numeric
 INTFLG 0008            8       Data Type: $80 = Integer, $00 = Floating
 GARBFL 0009            9       Flag: DATA scan/LlST quote/Garbage Coll
 SUBFLG 000A            10      Flag: Subscript Ref / User Function Call
 INPFLG 000B            11      Flag: $00 = INPUT, $40 = GET, $98 = READ
 TANSGN 000C            12      Flag TAN sign / Comparison Result
        000D            13      3: Flag to suppress PRINT or PRINT# when -ve
 CHANNL 000E            14      3: File# of current I/O device (as 0010)
        000F            15      3: terminal width (unused-carried over from TTY)
        0010            16      3: width of source (unused - from TTY)
        000D-000F       13-15   4: Disk Status DS$ descriptor (lenngth/ptr)
 CHANNL 0010            16      4: File# of current I/O device (when non-zero
                                suppresses INPUT prompt etc)
 LINNUM 0011-0012       17-18   Temp: Integer Value
 TEMPPT 0013            18      Pointer Temporary String
 LASTPT 0014-0015       19-21   Last Temp String Address
 TEMPST 0016-001E       22-30   Stack for Temporary Strings
 INDEX  001F-0022       31-34   Utility Pointer Area
 RESHO  0023-0027       35-39   Floating-Point Product of Multiply
 TXTTAB 0028-0029       40-41   Pointer: Start of BASIC Text [0401]
 VARTAB 002A-002B       42-43   Pointer: Start of BASIC Variables
 ARYTAB 002C-002D       44-45   Pointer: Start of BASIC Arrays
 STREND 002E-002F       46-47   Pointer End of BASIC Arrays (+1)
 FRETOP 0030-0031       48-49   Pointer: Bottom of String Storage
 FRESPC 0032-0033       50-51   Utility String Pointer
 MEMSIZ 0034-0035       52-53   Pointer: Highest Address Used by BASIC
 CURLIN 0036-0037       54-55   Current BASIC Line Number
 OLDLIN 0038-0039       56-67   Previous BASIC Line Number
 OLDTXT 003A-003B       58-59   Pointer: BASIC Statement for CONT
 DATLIN 003C-003D       60-61   Current DATA Line Number
 DATPTR 003E-003F       62-63   Pointer: Current DATA Item Address
 INPPTR 0040-0041       64-65   INPUT, READ and GET vector to save CHRGET
 VARNAM 0042-0043       66-67   Current BASIC Variable Name
 VARPNT 0044-0045       68-69   Pointer: Current BASIC Variable Data
 FORPNT 0046-0047       70-71   Pointer: Index Variable for FOR/NEXT
 VARTXT 0048-0049       72-73   Y-save; op-save; Temporary storage for TXTPTR
                                during READ, INPUT and GET.
 OPMASK 004A            74      Comparison symbol accumulator: bits 0,1,2
 COMPAR=OPMASK                  are <, =, >.
 TEMPF3 004B-004F       75-79   Temporary storage for FLPT value.
        004B-004C       75-76   Pointer to temp storage in RAM for FN DEF,
                                TAN, &c
        004D-004F       77-79   Pointer to string, length
 FOUR6  0050            80      Length of String Variable during Garbage
                                collection.
 JMPER  0051-0053       81-83   JMP + Jump vector for functions
 TEMPF1 0054-0058       84-88   Temporary storage for flpt value
 TEMPF2 0059-005D       89-93   Temporary storage for flpt value
 FACEXP 005E            94      Floating-Point Accumulator #1: Exponent
 FACHO  005F-0062       95-98   Floating Accum. #1: Mantissa
 FACSGN 0063            99      Floating Accum. #1: Sign
 SGNFLG 0064            100     Pointer: Series Evaluation Constant Pointer
 BITS   0065            101     Floating Accum. #1: Overflow Digit
 ARGEXP 0066            102     Floating-Point Accumulator #2: Exponent
 ARGHO  0067-006A       103-106 Floating Accum. #2: Mantissa
 ARGSGN 006B            107     Floating Accum. #2: Sign
 ARISGN 006C            108     Sign Comparison Result: Accum. # 1 vs #2
 FACOV  006D            109     Floating Accum. #1. Low-Order (Rounding)
 FBUFPT 006E-006F       110-111 Cassette buffer length / series evaluation /
                                VAL etc pointer
 CHRGET 0070-0087       112-135 Subroutine: Get Next Byte of BASIC Text
 CHRGOT 0076            118     Entry to Get Same Byte of Text Again
 TXTPTR 0077-0078       119-120 Pointer: Current Byte of BASIC Text
        0070                    INC $77 BNE $0076 INC $78
        0076                    LDA $xxxx CMP #$3A BCS $0087
                                CMP #$20 BEQ $0070 SEC SBC #$30 SEC SBC #$D0
        0087                    RTS
                                C=1 for digits, Z=1 for end of statement/line
 RNDX   0088-008C       136-140 Floating RND Function Seed Value
 TIME   008D-008F       141-143 Real-Time Jiffy Clock (approx) 1/60 Sec
 CINV   0090-0091       144-145 Vector: Hardware Interrupt [3: E62E, 4: E455]
 CBINV  0092-0093       146-147 Vector: BRK Instr. Interrupt [3: FD17, 4: D478]
 NMINV  0094-0095       148-149 Vector: Non-Maskable Interrupt [3:C389,4: B3FF]
 STATUS 0096            150     Kernal I/O Status Word: ST
 LSTX   0097            151     Current Key Pressed: 255 = No Key
 SFDX   0098                    Flag: Print Shifted Chars.
        0099-009A               Jiffy clock correction: 623rd 1/60 sec
                                does not increment time
 STKEY  009B            155     Flag: STOP key / RVS key
 SVXT   009C            156     Timing Constant for Tape
 VERCK  009D            157     Flag: 0 = Load, 1 = Verify (Kernel & Basic)
 NDX    009E            158     No. of Chars. in Keyboard Buffer (Queue)
 RVS    009F            159     Flag: Print Reverse Chars. -1=Yes, 0=No Used
 C3PO   00A0            160     Flag: IEEE Bus-Output Char. Buffered
 INDX   00A1            161     Pointer: End of Logical Line for INPUT
        00A2            162     Unused
 LXSP   00A3-00A4       163-164 Cursor Y-X Pos. at Start of INPUT
 BSOUR  00A5            165     Buffered Character for IEEE Bus
        00A6            166     Key Image
 BLNSW  00A7            167     Cursor Blink enable: 0 = Flash Cursor
 BLNCT  00A8            168     Timer: Countdown to Toggle Cursor
 GDBLN  00A9            169     Character Under Cursor
 BLNON  00AA            170     Flag: Last Cursor Blink On/Off
?SYNO   00AB            171     Cassette Sync No. (64=0096)
 CRSW   00AC            172     Flag: INPUT or GET from Keyboard
        00AD            173     X save in tape handling (saves cassette #)
 LDTND  00AE            174     No. of Open Files / Index to File Table
 DFLTN  00AF            175     Default Input Device (0)
 DFLTO  00B0            176     Default Output (CMD) Device (3)
 PRTY   00B1            177     Tape Character Parity
 DPSW   00B2            178     Flag: Tape Byte-Received
 PSW=DPSW
        00B3            179     Temporary save eg. logical address or DOS
                                wedge
        00B4            180     Tape buffer leading character (eg 5=EOT) /
                                MLM command
        00B4-00B5       180-181 File name pointer(s) / MLM flag, counter
        00B6            182     Unknown, probably Unused.
 R2D2   00B7            183     Temp Data Area (64=00A3) Serial bit count
 TSFCNT=R2D2
        00B8            184     Unused? [count of redundant tape blocks]
 TBTCNT 00B9            185     Temp Data Area (64=00A4) Cycle counter
 CNTDN  00BA            186     Cassette Write/Sync Countdown (64=00A5)
 BUFPNT 00BB            187     Pointer: Tape I/O Buffer #1 (00-C0)
        00BC            188     Pointer: Tape I/O Buffer #2 (00-C0)
 INBIT  00BD            189     Cassette Temp (64=00A7) Write leader count;
                                read pass 1/2.
 BITCI  00BE            190     (64=00A8) write new byte; read error flag
 RINONE 00BF            191     (64=00A9) write start bit; read bit seq error
 FNMIDX 00C0            192     Index to Cassette File name/Header ID for
                                Tape write.
 PTR1   00C0            192     Tape Pass 1 Error Log
 PTR2   00C1            193     Tape Pass 2 Error Log
 RIDATA 00C2            194     Cassette Temp (64=00AA) read flags: 0=scan,
                                1-15=count, $40=load, $80=end of tape marker
 RIPRTY 00C3            195     Cassette Short Cnt (64=00AB): counter of
                                seconds before tape write / checksum
 PNT    00C4-00C5       196-197 Pointer: Current Screen Line Address
 PNTR   00C6            198     Cursor Column on Current Line
;TRMPOS 00C6            198     Screen Column From Last TAB (64=0009)
 SAL    00C7-00C8       199-200 Pointer: Tape Buffer/Start/Current/
                                Screen Scrolling
 EAL    00C9-00CA       201-202 Tape End Addresses/End of Program
 CMP0   00CB-00CC       203-204 Tape Timing "Constants"
 QTSW   00CD            205     Flag: Editor in Quote Mode, $00 = NO
 BITTS  00CE            206     Cassette Temp (64=00B4): Tape read timer flag
                                =IRQ enabled for Timer 1
 NXTBIT 00CF            207     Tape EOT Flag: EOT received from tape
                                (64=00B5, see FA46, PET3000 FA43)
 RODATA 00D0            208     Read character error (64=00B6)
 FNLEN  00D1            209     Length of Current File Name
 LA     00D2            210     Current Logical File Number (Logical Address)
 SA     00D3            211     Current Secondary Address
 FA     00D4            212     Current Device Number (First Address)
 LNMX   00D5            213     Physical Screen Line Length
        00D5            213     4.80: right side of window
 TAPE1  00D6-00D7       214-215 Pointer: Start of Tape Buffer [027A or 033A]
 TBLX   00D8            216     Current Cursor Physical Line Number
 DATAX  00D9            217     Current Character to Print; Last key input;
                                buffer checksum; temporary I/O store (64=00D7)
 FNADR  00DA-00DB       218-219 Pointer: Current File Name
 INSRT  00DC            220     Flag: Insert Mode, >0 = # INSTs
?ROPRTY 00DD            121     Cassette Temp: Write shift word, read
                                character in
 FSBLK  00DE            222     Cassette Read / Write Block Count
 MYCH   00DF            223     Serial Word Buffer
 LDTBL  00E0-00F8       224-248 3+4.40: Screen Line Link Table / Editor Temps
 SCTOP  00E0            224     4.80: first line of window
 SCBOT  00E1            225     4.80: last line of window
 SCLF   00E2            226     4.80: first column of window
 XMAX   00E3            227     4.80: Size of Keyboard Buffer
 XMAX   03EB            1003    4.40
 RPTFLG 00E4            228     4.80: Flag: REPEAT Key Used, $80 = Repeat
                                      $40 = disable
 RPTFLG 03EE            1006    4.40
 KOUNT  00E5            651     4.80: Repeat Speed Counter
 KOUNT  03EA            1002    4.40
 DELAY  00E6            230     4.80: Repeat Delay Counter
 DELAY  03E9            1001    4.40
        00E7            231     4.80: Chime Time
        03EC            1004    4.40: Chime Time
        00E8            232     4.80: Home Count
        00E9-00EA       233-234 4.80: input from screen vector (from E006)
        00EB-00EC       235-236 4.80: print to screen vector (from E009)
        00ED-00F7       237-247 4.80: unused
        00F8            248     4.80: Counter to speed TI by 6/5
        03ED            1005    4.40: Counter to speed TI by 6/5
 CAS1   00F9            249     Tape Motor Interlock #1
 CAS2   00FA            250     Tape Motor Interlock #2
 STAL   00FB-00FC       251-252 I/O Start Address
 MEMUSS 00FD-00FE       253-254 Tape Load Temps
        00FF            255     Unused
        0100-01FF       256-511 Micro-Processor System Stack Area
        0100-010A       256-266 Floating to String Work Area
 BAD    0100-013E       256-318 Tape Input Error Log
 BUF    0200-0250       512-592 System INPUT Buffer
 LAT    0251-025A       593-602 KERNAL Table: Active Logical File No's.
 FAT    025B-0264       603-612 KERNAL Table: Device No. for Each File
 SAT    0265-026E       613-622 KERNAL Table: Second Address Each File
 KEYD   026F-0278       623-632 Keyboard Buffer Queue (FIFO)
        0279            633     Keyboard utility
 TBUFFR 027A-0329       634-825   Tape I/O Buffer #1
        027A                      Type of tape file:
                                  1=program header for SAVE "",1,0
                                  2=data block
                                  3=absolute load SAVE "",1,1 (VIC-20 and later)
                                  4=data file header
                                  5=end of tape block: SAVE "",1,2
        027B-027C                 Start address for load
        027D-027E                 End address for load
        027F-028E                 File name
 TBUFFR 033A-03F9       826-1017  Tape I/O Buffer #2
        033A                      4: DOS byte parameter in RECORD / char ptr
 DOSDS1 033B                      4: DOS drive 1 number
 DOSDS2 033C                      4: DOS drive 2 number
        033D                      4: DOS length / write flag
        033E                      4: DOS 8-bit syntax checking flag
 DOSDID 033F-0340                 4: DOS diskette ID
        0341                      4: Length of DOS command string
        0342-0352                 4: Buffer for filename
 DOSSTR 0353-0380                 4: Full DOS command string buffer
        03EE-037F                 4.80: Table of 80 bits to set TABs
 DELAY  03E9            1001    4.40
 KOUNT  03EA            1002    4.40
 XMAX   03EB            1003    4.40
        03EC            1004    4.40: Chime Time
        03ED            1005    4.40: Counter to speed TI by 6/5
 RPTFLG 03EE            1006    4.40
        03F0-03F9                 4.40: Table of 80 bits to set TABs
 USRCMD 03FA-03FB       1018-1019       Monitor extension vector
 TIMOUT 03FC            1020    4: Flag: Kernal Variable for IEEE Timeout
        03FC-03FF       1020-1023       Unused
        0400-8000       1024-32767      Basic program area
        0400                    0 byte at start of Basic program
        0401-0402               first link to next Basic line
        0403-0404               first line number
        0405-                   tokenized basic line, terminated with 00
                                followed by next link

        8000-83E7       32768-33767 40 column screen memory
        8000-87EF       32768-34767 80 column screen memory

9000-9FFF       free space for 4K EPROM
A000-AFFF       free space for 4K EPROM
B000-BFFF       3: free space for 4K EPROM
    4         3
B000-DFFF C000-DFFF     Basic keywords and operators, and general processing
E000-E7FF E000-E7FF     Mostly screen editor functions
E800-EFFF E800-EFFF     I/O chips
F000-FFFF F000-FFFF     Kernel: tape processing, IEEE-488, jump table.

--
HAVE *YOU* EXPORTED A CRYPTO SYSTEM TODAY? --> http://dcs.ex.ac.uk/~aba/x.html
--rsa--------------------------------8<-------------------------------------
[...]
-------------------------------------8<-------------------------------------
TRY: echo squeamish ossifrage | rsa -e 3 7537d365 | rsa -d 4e243e33 7537d365
--
___ Olaf 'Rhialto' Seibert    rhialto@mbfys.kun.nl         What's the use of
\X/  racism if you can't even see if a person belongs to your abhorred kind?
