c64mem: combined Microsoft & Commodore descriptions
This commit is contained in:
parent
d47baff1f1
commit
8cb9f8d106
4 changed files with 235 additions and 214 deletions
|
|
@ -1,3 +1,216 @@
|
|||
- C64 RAM Map (Microsoft/Commodore)
|
||||
-
|
||||
- The labels and descriptions have been taken from
|
||||
- Microsoft's original BASIC for M6502 source
|
||||
- and
|
||||
- The original C64 KERNAL source by Commodore (901227-03)
|
||||
- https://github.com/mist64/cbmsrc
|
||||
-
|
||||
- Converted and formatted by Michael Steil <mist64@mac.com>
|
||||
-
|
||||
- Corrections (typos as well as content), translations etc.
|
||||
- welcome at: https://github.com/mist64/c64disasm
|
||||
-
|
||||
------------------------------------------------------------
|
||||
-
|
||||
# This plain text file is formatted so that it can be automatically
|
||||
# parsed in order to create cross-references etc.
|
||||
# * Lines starting with "-" is top-level information. The first line
|
||||
# is the title. Lines starting with "--" are separators.
|
||||
# * Lines starting with "#" are internal comments.
|
||||
# * Hex addresses start at column 0.
|
||||
# * Symbols start at column 13.
|
||||
# * The description starts at column 21.
|
||||
# * All lines of the description until the first blank line are
|
||||
# combined into the heading.
|
||||
# * A '.' character at the end of a heading line represents a hard
|
||||
# line break.
|
||||
# * The remaining text is in MarkDown format.
|
||||
# * All addresses are 4 digits and have a leading '$'.
|
||||
# The encoding is UTF-8.
|
||||
|
||||
#
|
||||
# KERNAL
|
||||
#
|
||||
|
||||
$0000 D6510 6510 DATA DIRECTION REGISTER
|
||||
$0001 R6510 6510 DATA REGISTER
|
||||
|
||||
#
|
||||
# BASIC
|
||||
#
|
||||
|
||||
$0003-$0004 ADRAY1 STORE HERE THE ADDR OF THE
|
||||
ROUTINE TO TURN THE FAC INTO A
|
||||
TWO BYTE SIGNED INTEGER IN [Y,A]
|
||||
$0005-$0006 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.
|
||||
$0009 TRMPOS POSITION OF TERMINAL CARRIAGE.
|
||||
$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.
|
||||
$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.
|
||||
$0012 DOMASK MASK IN USE BY RELATION OPERATIONS.
|
||||
$0013 CHANNL HOLDS CHANNEL NUMBER.
|
||||
$0014-$0015 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.
|
||||
$0014-$0015 POKER SET UP LOCATION USED BY POKE.
|
||||
TEMPORARY FOR INPUT AND READ CODE
|
||||
$0016 TEMPPT POINTER AT FIRST FREE TEMP DESCRIPTOR.
|
||||
INITIALIZED TO POINT TO TEMPST.
|
||||
$0017-$0018 LASTPT POINTER TO LAST-USED STRING TEMPORARY.
|
||||
$0019-$0021 TEMPST STORAGE FOR NUMTMP TEMP DESCRIPTORS.
|
||||
$0022-$0025 INDEX INDEXES.
|
||||
$0022-$0023 INDEX1
|
||||
$0024-$0025 INDEX2
|
||||
$0026 RESHO RESULT OF MULTIPLIER AND DIVIDER.
|
||||
$0027 RESMOH ONE MORE BYTE.
|
||||
$0028 RESMO
|
||||
$0028 ADDEND TEMPORARY USED BY "UMULT".
|
||||
$0029 RESLO
|
||||
$002B-$002C TXTTAB POINTER TO BEGINNING OF TEXT.
|
||||
DOESN'T CHANGE AFTER BEING
|
||||
SETUP BY "INIT".
|
||||
$002D-$002E VARTAB POINTER TO START OF SIMPLE
|
||||
VARIABLE SPACE.
|
||||
UPDATED WHENEVER THE SIZE OF THE
|
||||
PROGRAM CHANGES, SET TO [TXTTAB]
|
||||
BY "SCRATCH" ("NEW").
|
||||
$002F-$0030 ARYTAB POINTER TO BEGINNING OF ARRAY
|
||||
TABLE.
|
||||
INCREMENTED BY 6 WHENEVER
|
||||
A NEW SIMPLE VARIABLE IS FOUND, AND
|
||||
SET TO [VARTAB] BY "CLEARC".
|
||||
$0031-$0032 STREND END OF STORAGE IN USE.
|
||||
INCREASED WHENEVER A NEW ARRAY
|
||||
OR SIMPLE VARIABLE IS ENCOUNTERED.
|
||||
SET TO [VARTAB] BY "CLEARC".
|
||||
$0033-$0034 FRETOP TOP OF STRING FREE SPACE.
|
||||
$0035-$0036 FRESPC POINTER TO NEW STRING.
|
||||
$0037-$0038 MEMSIZ HIGHEST LOCATION IN MEMORY.
|
||||
$0039-$003A CURLIN CURRENT LINE #.
|
||||
SET TO 0,255 FOR DIRECT STATEMENTS.
|
||||
$003B-$003C OLDLIN OLD LINE NUMBER (SETUP BY ^C,"STOP"
|
||||
OR "END" IN A PROGRAM).
|
||||
$003D-$003E OLDTXT OLD TEXT POINTER.
|
||||
POINTS AT STATEMENT TO BE EXEC'D NEXT.
|
||||
$003F-$0040 DATLIN DATA LINE # -- REMEMBER FOR ERRORS.
|
||||
$0041-$0042 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-$0044 INPPTR THIS REMEMBERS WHERE INPUT IS COMING FROM.
|
||||
$0045-$0046 VARNAM VARIABLE'S NAME IS STORED HERE.
|
||||
$0047-$0048 VARPNT POINTER TO VARIABLE IN MEMORY.
|
||||
$0047 FDECPT POINTER INTO POWER OF TENS OF "FOUT".
|
||||
$0049-$004A 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.
|
||||
$004A EORMSK THE MASK FOR EORING IN WAIT.
|
||||
$004B-$004C OPPTR POINTER TO CURRENT OP'S ENTRY IN "OPTAB".
|
||||
$004B VARTXT POINTER INTO LIST OF VARIABLES.
|
||||
$004D OPMASK MASK CREATED BY CURRENT OPERATOR.
|
||||
$004E-$004F DEFPNT POINTER USED IN FUNCTION DEFINITION.
|
||||
$004E GRBPNT ANOTHER USED IN GARBAGE COLLECTION.
|
||||
$004E TEMPF3 A THIRD FAC TEMPORARY (4 BYTES).
|
||||
$0050-$0052 DSCPNT POINTER TO A STRING DESCRIPTOR.
|
||||
$0053 FOUR6 VARIABLE CONSTANT USED BY GARB COLLECT.
|
||||
$0054-$0056 JMPER
|
||||
$0055 SIZE
|
||||
$0056 OLDOV THE OLD OVERFLOW.
|
||||
$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.
|
||||
$005E TENEXP HAS A DPT BEEN INPUT?
|
||||
$005F DPTFLG BASE TEN EXPONENT.
|
||||
$0060 EXPSGN SIGN OF BASE TEN EXPONENT.
|
||||
$0061-$0066 FAC THE FLOATING ACCUMULATOR
|
||||
$0061 FACEXP
|
||||
$0061 DSCTMP THIS IS WHERE TEMP DESCS ARE BUILT.
|
||||
$0062 FACHO MOST SIGNIFICANT BYTE OF MANTISSA.
|
||||
$0063 FACMOH ONE MORE.
|
||||
$0064 FACMO MIDDLE ORDER OF MANTISSA.
|
||||
$0064 INDICE INDICE IS SET UP HERE BY "QINT".
|
||||
$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.
|
||||
$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.
|
||||
$006F STRNG1 POINTER TO A STRING OR DESCRIPTOR.
|
||||
$0070 FACOV OVERFLOW BYTE OF THE FAC.
|
||||
$0071-$0072 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.
|
||||
|
||||
$0073-$008A CHRGET RAM CODE.
|
||||
|
||||
THIS CODE GETS CHANGED THROUGHOUT EXECUTION.
|
||||
IT IS MADE TO BE FAST THIS WAY.
|
||||
ALSO, [X] AND [Y] ARE NOT DISTURBED
|
||||
|
||||
"CHRGET" USING [TXTPTR] AS THE CURRENT TEXT PNTR
|
||||
FETCHES A NEW CHARACTER INTO ACCA AFTER INCREMENTING [TXTPTR]
|
||||
AND SETS CONDITION CODES ACCORDING TO WHAT'S IN ACCA.
|
||||
NOT C= NUMERIC ("0" THRU "9")
|
||||
Z= ":" OR END-OF-LINE (A NULL)
|
||||
|
||||
[ACCA] = NEW CHAR.
|
||||
[TXTPTR]=[TXTPTR]+1
|
||||
|
||||
THE FOLLOWING EXISTS IN ROM IF ROM EXISTS AND IS LOADED
|
||||
DOWN HERE BY INIT. OTHERWISE IT IS JUST LOADED INTO THIS
|
||||
RAM LIKE ALL THE REST OF RAM IS LOADED.
|
||||
|
||||
$008B-$008F RNDX
|
||||
|
||||
#
|
||||
# KERNAL
|
||||
#
|
||||
|
||||
$0090 STATUS I/O OPERATION STATUS BYTE
|
||||
$0091 STKEY STOP KEY FLAG
|
||||
$0092 SVXT TEMPORARY
|
||||
|
|
@ -90,7 +303,26 @@ $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
|
||||
|
||||
#
|
||||
# BASIC
|
||||
#
|
||||
|
||||
$0200-$0258 BUF BASIC/MONITOR BUFFER
|
||||
|
||||
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".
|
||||
|
||||
#
|
||||
# KERNAL
|
||||
#
|
||||
|
||||
$0259-$0262 LAT LOGICAL FILE NUMBERS
|
||||
$0263-$026C FAT PRIMARY DEVICE NUMBERS
|
||||
$026D-$0276 SAT SECONDARY ADDRESSES
|
||||
|
|
|
|||
|
|
@ -1,178 +0,0 @@
|
|||
$0000 D6510 6510 DATA DIRECTION REGISTER
|
||||
$0001 R6510 6510 DATA REGISTER
|
||||
|
||||
$0003-$0004 ADRAY1 STORE HERE THE ADDR OF THE
|
||||
ROUTINE TO TURN THE FAC INTO A
|
||||
TWO BYTE SIGNED INTEGER IN [Y,A]
|
||||
$0005-$0006 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.
|
||||
$0009 TRMPOS POSITION OF TERMINAL CARRIAGE.
|
||||
$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.
|
||||
$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.
|
||||
$0012 DOMASK MASK IN USE BY RELATION OPERATIONS.
|
||||
$0013 CHANNL HOLDS CHANNEL NUMBER.
|
||||
$0014-$0015 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.
|
||||
$0014-$0015 POKER SET UP LOCATION USED BY POKE.
|
||||
TEMPORARY FOR INPUT AND READ CODE
|
||||
$0016 TEMPPT POINTER AT FIRST FREE TEMP DESCRIPTOR.
|
||||
INITIALIZED TO POINT TO TEMPST.
|
||||
$0017-$0018 LASTPT POINTER TO LAST-USED STRING TEMPORARY.
|
||||
$0019-$0021 TEMPST STORAGE FOR NUMTMP TEMP DESCRIPTORS.
|
||||
$0022-$0025 INDEX INDEXES.
|
||||
$0022-$0023 INDEX1
|
||||
$0024-$0025 INDEX2
|
||||
$0026 RESHO RESULT OF MULTIPLIER AND DIVIDER.
|
||||
$0027 RESMOH ONE MORE BYTE.
|
||||
$0028 RESMO
|
||||
$0028 ADDEND TEMPORARY USED BY "UMULT".
|
||||
$0029 RESLO
|
||||
$002B-$002C TXTTAB POINTER TO BEGINNING OF TEXT.
|
||||
DOESN'T CHANGE AFTER BEING
|
||||
SETUP BY "INIT".
|
||||
$002D-$002E VARTAB POINTER TO START OF SIMPLE
|
||||
VARIABLE SPACE.
|
||||
UPDATED WHENEVER THE SIZE OF THE
|
||||
PROGRAM CHANGES, SET TO [TXTTAB]
|
||||
BY "SCRATCH" ("NEW").
|
||||
$002F-$0030 ARYTAB POINTER TO BEGINNING OF ARRAY
|
||||
TABLE.
|
||||
INCREMENTED BY 6 WHENEVER
|
||||
A NEW SIMPLE VARIABLE IS FOUND, AND
|
||||
SET TO [VARTAB] BY "CLEARC".
|
||||
$0031-$0032 STREND END OF STORAGE IN USE.
|
||||
INCREASED WHENEVER A NEW ARRAY
|
||||
OR SIMPLE VARIABLE IS ENCOUNTERED.
|
||||
SET TO [VARTAB] BY "CLEARC".
|
||||
$0033-$0034 FRETOP TOP OF STRING FREE SPACE.
|
||||
$0035-$0036 FRESPC POINTER TO NEW STRING.
|
||||
$0037-$0038 MEMSIZ HIGHEST LOCATION IN MEMORY.
|
||||
$0039-$003A CURLIN CURRENT LINE #.
|
||||
SET TO 0,255 FOR DIRECT STATEMENTS.
|
||||
$003B-$003C OLDLIN OLD LINE NUMBER (SETUP BY ^C,"STOP"
|
||||
OR "END" IN A PROGRAM).
|
||||
$003D-$003E OLDTXT OLD TEXT POINTER.
|
||||
POINTS AT STATEMENT TO BE EXEC'D NEXT.
|
||||
$003F-$0040 DATLIN DATA LINE # -- REMEMBER FOR ERRORS.
|
||||
$0041-$0042 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-$0044 INPPTR THIS REMEMBERS WHERE INPUT IS COMING FROM.
|
||||
$0045-$0046 VARNAM VARIABLE'S NAME IS STORED HERE.
|
||||
$0047-$0048 VARPNT POINTER TO VARIABLE IN MEMORY.
|
||||
$0047 FDECPT POINTER INTO POWER OF TENS OF "FOUT".
|
||||
$0049-$004A 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.
|
||||
$004A EORMSK THE MASK FOR EORING IN WAIT.
|
||||
$004B-$004C OPPTR POINTER TO CURRENT OP'S ENTRY IN "OPTAB".
|
||||
$004B VARTXT POINTER INTO LIST OF VARIABLES.
|
||||
$004D OPMASK MASK CREATED BY CURRENT OPERATOR.
|
||||
$004E-$004F DEFPNT POINTER USED IN FUNCTION DEFINITION.
|
||||
$004E GRBPNT ANOTHER USED IN GARBAGE COLLECTION.
|
||||
$004E TEMPF3 A THIRD FAC TEMPORARY (4 BYTES).
|
||||
$0050-$0052 DSCPNT POINTER TO A STRING DESCRIPTOR.
|
||||
$0053 FOUR6 VARIABLE CONSTANT USED BY GARB COLLECT.
|
||||
$0054-$0056 JMPER
|
||||
$0055 SIZE
|
||||
$0056 OLDOV THE OLD OVERFLOW.
|
||||
$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.
|
||||
$005E TENEXP HAS A DPT BEEN INPUT?
|
||||
$005F DPTFLG BASE TEN EXPONENT.
|
||||
$0060 EXPSGN SIGN OF BASE TEN EXPONENT.
|
||||
$0061-$0066 FAC THE FLOATING ACCUMULATOR
|
||||
$0061 FACEXP
|
||||
$0061 DSCTMP THIS IS WHERE TEMP DESCS ARE BUILT.
|
||||
$0062 FACHO MOST SIGNIFICANT BYTE OF MANTISSA.
|
||||
$0063 FACMOH ONE MORE.
|
||||
$0064 FACMO MIDDLE ORDER OF MANTISSA.
|
||||
$0064 INDICE INDICE IS SET UP HERE BY "QINT".
|
||||
$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.
|
||||
$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.
|
||||
$006F STRNG1 POINTER TO A STRING OR DESCRIPTOR.
|
||||
$0070 FACOV OVERFLOW BYTE OF THE FAC.
|
||||
$0071-$0072 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.
|
||||
|
||||
$0073-$008A CHRGET RAM CODE.
|
||||
|
||||
THIS CODE GETS CHANGED THROUGHOUT EXECUTION.
|
||||
IT IS MADE TO BE FAST THIS WAY.
|
||||
ALSO, [X] AND [Y] ARE NOT DISTURBED
|
||||
|
||||
"CHRGET" USING [TXTPTR] AS THE CURRENT TEXT PNTR
|
||||
FETCHES A NEW CHARACTER INTO ACCA AFTER INCREMENTING [TXTPTR]
|
||||
AND SETS CONDITION CODES ACCORDING TO WHAT'S IN ACCA.
|
||||
NOT C= NUMERIC ("0" THRU "9")
|
||||
Z= ":" OR END-OF-LINE (A NULL)
|
||||
|
||||
[ACCA] = NEW CHAR.
|
||||
[TXTPTR]=[TXTPTR]+1
|
||||
|
||||
THE FOLLOWING EXISTS IN ROM IF ROM EXISTS AND IS LOADED
|
||||
DOWN HERE BY INIT. OTHERWISE IT IS JUST LOADED INTO THIS
|
||||
RAM LIKE ALL THE REST OF RAM IS LOADED.
|
||||
|
||||
$008B-$008F RNDX
|
||||
|
||||
$0200 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".
|
||||
|
|
@ -22,7 +22,7 @@ names = [
|
|||
'Programmer\'s Reference Guide',
|
||||
'64map',
|
||||
'Jim Butterfield',
|
||||
'...',
|
||||
'Microsoft/Commodore Source',
|
||||
]
|
||||
links = [
|
||||
'http://unusedino.de/ec64/technical/project64/mapping_c64.html',
|
||||
|
|
@ -32,7 +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://...',
|
||||
'https://github.com/mist64/cbmsrc',
|
||||
]
|
||||
descriptions = [
|
||||
'Reference from <i>Mapping the Commodore 64</i> by Sheldon Leemon, ISBN 0-942386-23-X.',
|
||||
|
|
@ -42,7 +42,7 @@ 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).',
|
||||
'...',
|
||||
'Comments from the original M6502 BASIC source by Microsoft and the original C64 KERNAL source by Commodore',
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
#!/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)
|
||||
|
||||
Loading…
Reference in a new issue