Merge branches 'memmap' and 'memmap' of github.com:mist64/c64disasm into memmap

This commit is contained in:
Lisa Brodner 2020-05-11 17:25:09 +02:00
commit 2e9cf0ad5a
5 changed files with 348 additions and 4 deletions

View file

@ -2872,7 +2872,7 @@ $029E RODBE RS-232: Index to End of Transmit Buffer
This index points to the ending byte within the 256-byte RS-232
transmit buffer, and is used to add data to that buffer.
$029F-$02A0 IRQTMP Save Area for IRQ Vector During Cassette I/O
$029F-$02A0 IRQTMP Save Area for IRQ Vector During Cassette I/O
The routines that read and write tape data are driven by an IRQ
interrupt. In order to hook one of these routines into the interrupt,

145
c64mem/c64mem_src.txt Normal file
View file

@ -0,0 +1,145 @@
$0090 STATUS I/O OPERATION STATUS BYTE
$0091 STKEY STOP KEY FLAG
$0092 SVXT TEMPORARY
$0093 VERCK LOAD OR VERIFY FLAG
$0094 C3P0 IEEE BUFFERED CHAR FLAG
$0095 BSOUR CHAR BUFFER FOR IEEE
$0096 SYNO CASSETTE SYNC #
$0097 XSAV TEMP FOR BASIN
$0098 LDTND INDEX TO LOGICAL FILE
$0099 DFLTN DEFAULT INPUT DEVICE #
$009A DFLTO DEFAULT OUTPUT DEVICE #
$009B PRTY CASSETTE PARITY
$009C DPSW CASSETTE DIPOLE SWITCH
$009D MSGFLG OS MESSAGE FLAG
$009E PTR1 CASSETTE ERROR PASS1
$009E T1 TEMPORARY 1
$009F TMPC
$009F PTR2 CASSETTE ERROR PASS2
$009F T2 TEMPORARY 2
$00A0-$00A2 TIME 24 HOUR CLOCK IN 1/60TH SECONDS
$00A3 R2D2 SERIAL BUS USAGE
$00A3 PCNTR CASSETTE STUFF
$00A4 BSOUR1 TEMP USED BY SERIAL ROUTINE
$00A4 FIRT
$00A5 COUNT TEMP USED BY SERIAL ROUTINE
$00A5 CNTDN CASSETTE SYNC COUNTDOWN
$00A6 BUFPT CASSETTE BUFFER POINTER
$00A7 INBIT RS-232 RCVR INPUT BIT STORAGE
$00A7 SHCNL CASSETTE SHORT COUNT
$00A8 BITCI RS-232 RCVR BIT COUNT IN
$00A8 RER CASSETTE READ ERROR
$00A9 RINONE RS-232 RCVR FLAG FOR START BIT CHECK
$00A9 REZ CASSETE READING ZEROES
$00AA RIDATA RS-232 RCVR BYTE BUFFER
$00AA RDFLG CASSETTE READ MODE
$00AB RIPRTY RS-232 RCVR PARITY STORAGE
$00AB SHCNH CASSETTE SHORT CNT
$00AC SAL
$00AD SAH
$00AE EAL
$00AF EAH
$00B0 CMP0
$00B1 TEMP
$00B2-$00B3 TAPE1 ADDRESS OF TAPE BUFFER #1Y.
$00B4 BITTS RS-232 TRNS BIT COUNT
$00B4 SNSW1
$00B5 NXTBIT RS-232 TRNS NEXT BIT TO BE SENT
$00B5 DIFF
$00B6 RODATA RS-232 TRNS BYTE BUFFER
$00B6 PRP
$00B7 FNLEN LENGTH CURRENT FILE N STR
$00B8 LA CURRENT FILE LOGICAL ADDR
$00B9 SA CURRENT FILE 2ND ADDR
$00BA FA CURRENT FILE PRIMARY ADDR
$00BB-$00BC FNADR ADDR CURRENT FILE NAME STR
$00BD ROPRTY RS-232 TRNS PARITY BUFFER
$00BD OCHAR
$00BE FSBLK CASSETTE READ BLOCK COUNT
$00BF MYCH
$00C0 CAS1 CASSETTE MANUAL/CONTROLLED SWITCH
$00C1 TMP0
$00C1 STAL
$00C2 STAH
$00C3 MEMUSS CASSETTE LOAD TEMPS (2 BYTES)
$00C3-$00C4 TMP2
$00C5 LSTX KEY SCAN INDEX
$00C6 NDX INDEX TO KEYBOARD Q
$00C7 RVS RVS FIELD ON FLAG
$00C8 INDX
$00C9 LSXP X POS AT START
$00CA LSTP
$00CB SFDX SHIFT MODE ON PRINT
$00CC BLNSW CURSOR BLINK ENAB
$00CD BLNCT COUNT TO TOGGLE CUR
$00CE GDBLN CHAR BEFORE CURSOR
$00CF BLNON ON/OFF BLINK FLAG
$00D0 CRSW INPUT VS GET FLAG
$00D1-$00D2 PNT POINTER TO ROW
$00D3 PNTR POINTER TO COLUMN
$00D4 QTSW QUOTE SWITCH
$00D5 LNMX 40/80 MAX POSITON
$00D6 TBLX
$00D7 DATA
$00D8 INSRT INSERT MODE FLAG
$00D9-$00F2 LDTB1 LINE FLAGS+ENDSPACE
$00F3-$00F4 USER SCREEN EDITOR COLOR IP
$00F5-$00F5 KEYTAB KEYSCAN TABLE INDIRECT
$00F7-$00F8 RIBUF RS-232 INPUT BUFFER POINTER
$00F9-$00FA ROBUF RS-232 OUTPUT BUFFER POINTER
$00FB-$00FE FREKZP FREE KERNAL ZERO PAGE 9/24/80
$00FF BASZPT LOCATION ($00FF) USED BY BASIC
$0100 BAD
$0200-$0258 BUF BASIC/MONITOR BUFFER
$0259-$0262 LAT LOGICAL FILE NUMBERS
$0263-$026C FAT PRIMARY DEVICE NUMBERS
$026D-$0276 SAT SECONDARY ADDRESSES
$0277-$0280 KEYD IRQ KEYBOARD BUFFER
$0281-$0282 MEMSTR START OF MEMORY
$0283-$0284 MEMSIZ TOP OF MEMORY
$0285 TIMOUT IEEE TIMEOUT FLAG
$0286 COLOR ACTIV COLOR NYBBLE
$0287 GDCOL ORIGINAL COLOR BEFORE CURSOR
$0288 HIBASE BASE LOCATION OF SCREEN (TOP)
$0289 XMAX
$028A RPTFLG KEY REPEAT FLAG
$028B KOUNT
$028C DELAY
$028D SHFLAG SHIFT FLAG BYTE
$028E LSTSHF LAST SHIFT PATTERN
$028F-$0290 KEYLOG INDIRECT FOR KEYBOARD TABLE SETUP
$0291 MODE 0-PET MODE, 1-CATTACANNA
$0292 AUTODN AUTO SCROLL DOWN FLAG(=0 ON,<>0 OFF)
$0293 M51CTR 6551 CONTROL REGISTER
$0294 M51CDR 6551 COMMAND REGISTER
$0295-$0296 M51AJB NON STANDARD (BITTIME/2-100)
$0297 RSSTAT RS-232 STATUS REGISTER
$0298 BITNUM NUMBER OF BITS TO SEND (FAST RESPONSE)
$0299-$029A BAUDOF BAUD RATE FULL BIT TIME (CREATED BY OPEN)
$029B RIDBE INPUT BUFFER INDEX TO END
$029C RIDBS INPUT BUFFER POINTER TO START
$029D RODBS OUTPUT BUFFER INDEX TO START
$029E RODBE OUTPUT BUFFER INDEX TO END
$029F-$02A0 IRQTMP HOLDS IRQ DURING TAPE OPS
$02A1 ENABL RS-232 ENABLES (REPLACES IER)
$02A2 CASTON TOD SENSE DURING CASSETTES
$02A3 KIKA26 TEMP STORAGE FOR CASSETTE READ ROUTINE
$02A4 STUPID TEMP D1IRQ INDICATOR FOR CASSETTE READ
$02A5 LINTMP TEMPORARY FOR LINE INDEX
$0314-$0315 CINV IRQ RAM VECTOR
$0316-$0317 CBINV BRK INSTR RAM VECTOR
$0318-$0319 NMINV NMI RAM VECTOR
$031A-$031B IOPEN INDIRECTS FOR CODE
$031C-$031D ICLOSE CONFORMS TO KERNAL SPEC 8/19/80
$031E-$031F ICHKIN
$0320-$0321 ICKOUT
$0322-$0323 ICLRCH
$0324-$0325 IBASIN
$0326-$0327 IBSOUT
$0328-$0329 ISTOP
$032A-$032B IGETIN
$032C-$032D ICLALL
$032E-$032F USRCMD
$0330-$0331 ILOAD
$0332-$0333 ISAVE SAVESP
$033C-$03FB TBUFFR CASSETTE DATA B

162
c64mem/c64mem_src_basic.txt Normal file
View file

@ -0,0 +1,162 @@
$0003 ADRAY1 STORE HERE THE ADDR OF THE
ROUTINE TO TURN THE FAC INTO A
TWO BYTE SIGNED INTEGER IN [Y,A]
$0005 ADRAY2 STORE HERE THE ADDR OF THE
ROUTINE TO CONVERT [Y,A] TO A FLOATING
POINT NUMBER IN THE FAC.
$0007 CHARAC A DELIMITING CHARACTER.
$0007 INTEGR A ONE-BYTE INTEGER FROM "QINT".
$0008 ENDCHR THE OTHER DELIMITING CHARACTER.
$000B COUNT A GENERAL COUNTER.
$000C DIMFLG IN GETTING A POINTER TO A VARIABLE
IT IS IMPORTANT TO REMEMBER WHETHER IT
IS BEING DONE FOR "DIM" OR NOT.
DIMFLG AND VALTYP MUST BE
CONSECUTIVE LOCATIONS.
$???? KIMY PLACE TO PRESERVE Y DURING OUT.
$000D VALTYP THE TYPE INDICATOR.
0=NUMERIC 1=STRING.
$000E INTFLG TELLS IF INTEGER.
$000F DORES WHETHER CAN OR CAN'T CRUNCH RES'D WORDS.
TURNED ON WHEN "DATA"
BEING SCANNED BY CRUNCH SO UNQUOTED
STRINGS WON'T BE CRUNCHED.
$000F GARBFL WHETHER TO DO GARBAGE COLLECTION.
$0010 SUBFLG FLAG WHETHER SUB'D VARIABLE ALLOWED.
"FOR" AND USER-DEFINED FUNCTION
POINTER FETCHING TURN
THIS ON BEFORE CALLING "PTRGET"
SO ARRAYS WON'T BE DETECTED.
"STKINI" AND "PTRGET" CLEAR IT.
ALSO DISALLOWS INTEGERS THERE.
$0011 INPFLG FLAGS WHETHER WE ARE DOING "INPUT"
OR "READ".
$0012 TANSGN USED IN DETERMINING SIGN OF TANGENT.
$???? CNTWFL SUPPRESS OUTPUT FLAG.
NON-ZERO MEANS SUPPRESS.
RESET BY "INPUT", READY AND ERRORS.
COMPLEMENTED BY INPUT OF ^O.
$0013 CHANNL HOLDS CHANNEL NUMBER.
$???? NULCNT NUMBER OF NULLS TO PRINT.
$0009 TRMPOS POSITION OF TERMINAL CARRIAGE.
$???? LINWID LENGTH OF LINE (WIDTH).
$???? NCMWID POSITION BEYOND WHICH THERE ARE
NO MORE FIELDS.
$0014 LINNUM LOCATION TO STORE LINE NUMBER BEFORE BUF
SO THAT "BLTUC" CAN STORE IT ALL AWAY AT ONCE.
A COMMA (PRELOAD OR FROM ROM)
USED BY INPUT STATEMENT SINCE THE
DATA POINTER ALWAYS STARTS ON A
COMMA OR TERMINATOR.
$???? BUF TYPE IN STORED HERE.
DIRECT STATEMENTS EXECUTE OUT OF
HERE. REMEMBER "INPUT" SMASHES BUF.
MUST BE ON PAGE ZERO
OR ASSIGNMENT OF STRING
VALUES IN DIRECT STATEMENTS WON'T COPY
INTO STRING SPACE -- WHICH IT MUST.
N.B. TWO NONZERO BYTES MUST PRECEDE "BUFLNM".
$0016 TEMPPT POINTER AT FIRST FREE TEMP DESCRIPTOR.
INITIALIZED TO POINT TO TEMPST.
$0017 LASTPT POINTER TO LAST-USED STRING TEMPORARY.
$0019 TEMPST STORAGE FOR NUMTMP TEMP DESCRIPTORS.
$0022 INDEX1 INDEXES.
$0022 INDEX
$0024 INDEX2
$0026 RESHO RESULT OF MULTIPLIER AND DIVIDER.
$0027 RESMOH ONE MORE BYTE.
$0028 RESMO
$0029 RESLO
$0028 ADDEND TEMPORARY USED BY "UMULT".
$002B TXTTAB POINTER TO BEGINNING OF TEXT.
DOESN'T CHANGE AFTER BEING
SETUP BY "INIT".
$002D VARTAB POINTER TO START OF SIMPLE
VARIABLE SPACE.
UPDATED WHENEVER THE SIZE OF THE
PROGRAM CHANGES, SET TO [TXTTAB]
BY "SCRATCH" ("NEW").
$002F ARYTAB POINTER TO BEGINNING OF ARRAY
TABLE.
INCREMENTED BY 6 WHENEVER
A NEW SIMPLE VARIABLE IS FOUND, AND
SET TO [VARTAB] BY "CLEARC".
$0031 STREND END OF STORAGE IN USE.
INCREASED WHENEVER A NEW ARRAY
OR SIMPLE VARIABLE IS ENCOUNTERED.
SET TO [VARTAB] BY "CLEARC".
$0033 FRETOP TOP OF STRING FREE SPACE.
$0035 FRESPC POINTER TO NEW STRING.
$0037 MEMSIZ HIGHEST LOCATION IN MEMORY.
$0039 CURLIN CURRENT LINE #.
SET TO 0,255 FOR DIRECT STATEMENTS.
$003B OLDLIN OLD LINE NUMBER (SETUP BY ^C,"STOP"
OR "END" IN A PROGRAM).
$0014 POKER SET UP LOCATION USED BY POKE.
TEMPORARY FOR INPUT AND READ CODE
$003D OLDTXT OLD TEXT POINTER.
POINTS AT STATEMENT TO BE EXEC'D NEXT.
$003F DATLIN DATA LINE # -- REMEMBER FOR ERRORS.
$0041 DATPTR POINTER TO DATA. INITIALIZED TO POINT
AT THE ZERO IN FRONT OF [TXTTAB]
BY "RESTORE" WHICH IS CALLED BY "CLEARC".
UPDATED BY EXECUTION OF A "READ".
$0043 INPPTR THIS REMEMBERS WHERE INPUT IS COMING FROM.
$0045 VARNAM VARIABLE'S NAME IS STORED HERE.
$0047 VARPNT POINTER TO VARIABLE IN MEMORY.
$0047 FDECPT POINTER INTO POWER OF TENS OF "FOUT".
$0049 FORPNT A VARIABLE'S POINTER FOR "FOR" LOOPS
AND "LET" STATEMENTS.
$0049 LSTPNT PNTR TO LIST STRING.
$0049 ANDMSK THE MASK USED BY WAIT FOR ANDING.
$???? EORMSK THE MASK FOR EORING IN WAIT.
$004B OPPTR POINTER TO CURRENT OP'S ENTRY IN "OPTAB".
$004B VARTXT POINTER INTO LIST OF VARIABLES.
$004D OPMASK MASK CREATED BY CURRENT OPERATOR.
$0012 DOMASK MASK IN USE BY RELATION OPERATIONS.
$004E DEFPNT POINTER USED IN FUNCTION DEFINITION.
$004E GRBPNT ANOTHER USED IN GARBAGE COLLECTION.
$0050 DSCPNT POINTER TO A STRING DESCRIPTOR.
$0053 FOUR6 VARIABLE CONSTANT USED BY GARB COLLECT.
$0054 JMPER
$0055 SIZE
$0056 OLDOV THE OLD OVERFLOW.
$004E TEMPF3 A THIRD FAC TEMPORARY (4 BYTES).
$0057 TEMPF1
$0058 HIGHDS DESINATION OF HIGHEST ELEMENT IN BLT.
$005A HIGHTR SOURCE OF HIGHEST ELEMENT TO MOVE.
$005C TEMPF2
$005D LOWDS LOCATION OF LAST BYTE TRANSFERRED INTO.
$005F LOWTR LAST THING TO MOVE IN BLT.
$0058 ARYPNT A POINTER USED IN ARRAY BUILDING.
$005F GRBTOP A POINTER USED IN GARBAGE COLLECTION.
$005D DECCNT NUMBER OF PLACES BEFORE DECIMAL POINT.
$???? TENEXP HAS A DPT BEEN INPUT?
$005F DPTFLG BASE TEN EXPONENT.
$0060 EXPSGN SIGN OF BASE TEN EXPONENT.
$0061 FAC THE FLOATING ACCUMULATOR
$0061 FACEXP
$0062 FACHO MOST SIGNIFICANT BYTE OF MANTISSA.
$0063 FACMOH ONE MORE.
$0064 FACMO MIDDLE ORDER OF MANTISSA.
$0065 FACLO LEAST SIG BYTE OF MANTISSA.
$0066 FACSGN SIGN OF FAC (0 OR -1) WHEN UNPACKED.
$0067 SGNFLG SIGN OF FAC IS PRESERVED BERE BY "FIN".
$0067 DEGREE A COUNT USED BY POLYNOMIALS.
$0061 DSCTMP THIS IS WHERE TEMP DESCS ARE BUILT.
$0064 INDICE INDICE IS SET UP HERE BY "QINT".
$0068 BITS SOMETHING FOR "SHIFTR" TO USE.
$0069 ARGEXP THE FLOATING ARGUMENT (UNPACKED)
$006A ARGHO
$006B ARGMOH
$006C ARGMO
$006D ARGLO
$006E ARGSGN
$006F ARISGN A SIGN REFLECTING THE RESULT.
$0070 FACOV OVERFLOW BYTE OF THE FAC.
$???? STRNG1 POINTER TO A STRING OR DESCRIPTOR.
$0071 FBUFPT POINTER INTO FBUFFR USED BY FOUT.
$0071 BUFPTR POINTER TO BUF USED BY "CRUNCH".
$0071 STRNG2 POINTER TO STRING OR DESC.
$0071 POLYPT POINTER INTO POLYNOMIAL COEFFICIENTS.
$0071 CURTOL ABSOLUTE LINEAR INDEX IS FORMED HERE.

View file

@ -12,6 +12,7 @@ filenames = [
'c64mem_prg.txt',
'c64mem_64map.txt',
'c64mem_jb.txt',
'c64mem_src.txt',
]
names = [
'Mapping the Commodore 64',
@ -21,6 +22,7 @@ names = [
'Programmer\'s Reference Guide',
'64map',
'Jim Butterfield',
'...',
]
links = [
'http://unusedino.de/ec64/technical/project64/mapping_c64.html',
@ -30,6 +32,7 @@ links = [
'http://www.zimmers.net/cbmpics/cbm/c64/c64prg.txt',
'http://unusedino.de/ec64/technical/project64/memory_maps.html',
'https://www.atarimagazines.com/compute/issue29/394_1_COMMODORE_64_MEMORY_MAP.php',
'https://...',
]
descriptions = [
'Reference from <i>Mapping the Commodore 64</i> by Sheldon Leemon, ISBN 0-942386-23-X.',
@ -39,12 +42,13 @@ descriptions = [
'Reference from <i>Commodore 64 Programmer\'s Reference Guide</i>.',
'Reference as found in "Commodore_64_Memory_Maps.txt" by anonymous.',
'Reference by Jim Butterfield in COMPUTE! #29 (October 1982).',
'...',
]
titlecolor = ['017100', '004D7F', '99195E', 'F8BA00', 'B51700', '017B76', '595959']
darkcolor = ['D8F2CB', 'C6E2FC', 'BFB7E8', 'FCF6CD', 'F4D2E3', 'D2F6F0', 'E0E0E0']
lightcolor = ['E5F2DF', 'E3F0FC', 'D5D1E8', 'FCFAE6', 'F5E4EC', 'E1F5F2', 'EDEDED']
titlecolor = ['017100', '004D7F', '99195E', 'F8BA00', 'B51700', '017B76', '595959', '595959']
darkcolor = ['D8F2CB', 'C6E2FC', 'BFB7E8', 'FCF6CD', 'F4D2E3', 'D2F6F0', 'E0E0E0', 'E0E0E0']
lightcolor = ['E5F2DF', 'E3F0FC', 'D5D1E8', 'FCFAE6', 'F5E4EC', 'E1F5F2', 'EDEDED', 'EDEDED']
asm_donor_index = 0

33
c64mem/format2.py Executable file
View file

@ -0,0 +1,33 @@
#!/usr/bin/python3
import sys
import os
import pprint
with open('c64mem_src_basic.txt', 'r') as f:
lines = f.read().split('\n')
with open('basic_sym.txt', 'r') as f:
sym = f.read().split('\n')
symbols = {}
for s in sym:
address = s[0:4]
name = s[5:]
symbols[name] = address
pprint.pprint(symbols)
for line in lines:
if line.startswith(' '):
print(' ' + line)
continue
symbol = line[0:6].rstrip()
description = line[8:]
if symbol in symbols:
address = ('$' + symbols[symbol] + " ")
else:
address = "$???? "
print(address + (symbol + ' ')[:6] + ' ' + description)