1
0
mirror of https://github.com/ksherlock/x65.git synced 2024-06-02 18:41:34 +00:00

Removing the disassembler and putting it into its own repo

- The disassembler was taking on some girth and weighing the assembler
code down.
This commit is contained in:
Carl-Henrik Skårstedt 2016-03-11 17:43:16 -08:00
parent d9d386a260
commit 4f6db98637
6 changed files with 3 additions and 3206 deletions

View File

@ -101,6 +101,9 @@ Primarily tested with personal archive of sources written for Kick assmebler, DA
* irp (indefinite repeat)
**FIXED**
* Removed the disassembler and put it into its own project [x65dsasm](http://github.com/sakrac/x65dsasm)
* LUP/REPT directives clean up local symbols each iteration to avoid crossing over an iteration with branches to local labels.
* Fixed Merlin MAC directive which is a little different from normal assembler macros
* Labels can start with numbers and values will only be interpreted as decimal numbers if terminated by a character that is not an alphabetic character or underscore
* INCSYM failed with local labels, this is now properly handled. (fixed again..)
* INCBIN and IMPORT BINARY always failed (force 0 bytes length)

View File

@ -1,157 +0,0 @@
#x65 Disassembler
Simple disassembler for 6502, 65C02 and 65816 (default).
## Command Line Options
Typical command line ([*] = optional):
**Usage**
```
x65dsasm binary disasm.txt [$skip[-$end]] [addr=$xxxx] [cpu=6502/65C02/65816]
[mx=0-3] [src] [prg] [data=$xx] [labels=labels.lbl]
```
* binary: file which contains some 65xx series instructions
* disasm.txt: output file (default is stdout)
* $skip-$end: first byte offset to disassemble to last byte offset to disassemble
* addr: disassemble as if loaded at addr (addr)
* data: this number of initial bytes in file is data and not code
* prg: file is a c64 program file starting with the load address
* cpu: set which cpu to disassemble for (default is 6502)
* src: export near assemblable source with guesstimated data blocks
* mx: set the mx flags which control accumulator and index register size
* labels: import labels from a file (each line: label=$xxxx [code]/[data] comment)
* graph: prefix the file with a calling graph
* graph+bra: include branches in the calling graph (increases size significantly)
### Updates
* graph option exports a calling graph before the disassembly
* re-evaluation of separating segments after final cleanup
* c64kernal.lbl file defining c64 hw + kernal functions in the range of $e000-$fffa
* a78.lbl file defining Atari 7800 hardware addresses
* Switched the instruction info around to more easily determine read-only instructions
* Various improvements distinguishing between code and data
* c64.lbl file defining all c64 hardware addresses
* Tracking label references outside of the code including zero page
* Data / Code distinction improvements
* **Local labels** to improve code readability
* Improvements to code vs data determination
* Instrument labels through labels text file
* **src** option attempts to generate valid assembler source
### Labels file format
Labels is a text file with one label declaration per line followed by the address to assign and the
type of block to represent (code or data or pointers) followed by an optional comment. The labels
file makes the most sense together with the *src* command line argument.
Addresses can define a range using a '-' after the address followed by an ending address.
No automatic labels will be inserted within this range.
A special data format is pointers indicating a function pointer table, the label should be
defined with a range to limit the size. Each pointer within the pointer table will be
assigned a code label.
If the keyword "pointers" is followed by the word "data" the pointers will be interpreted as
data pointers instead of code pointers.
A label can be redefined with a different name for read-only instructions by using the keyword
read after the address. The label must first be defined as a data label to be assigned a
read-only name. Read only instructions include ora, and, bit, eor, adc, sbc, lda, ldx, ldy, cmp, cpy and cpx.
Example labels file:
```
TIA_VSYNC = $00 data
TIA_CXM0P = $00 read
Init = $1000 code Entry point into code
SinTable = $1400 data 256 byte sinus table
Interrupt = $10f3 code Interrupt code
Callbacks = $1123-$112b pointers Array of function pointers
MapRefs = $1200-$1240 pointers data Array of data pointers
VIC_Sprite0_x = $d000 set sprite 0 x position
VIC_Sprite0_y = $d001 set sprite 0 y position
VIC_Sprite1_x = $d002 set sprite 1 x position
VIC_Sprite1_y = $d003 set sprite 1 y position
```
The simple way to work with a labels file is to copy an existing hardware file and add labels to it.
Sample output:
```
;
; FUNCTION CALLING GRAPH
;
; Code_140 ($d4af) [-]
; Code_21 ($c5a3) [jmp]
; Code_143 ($d56e) [jsr]
; Code_109 ($cec3) [jsr]
;
; DISASSEMBLY
;
; Referenced from ResetVector + $0 (subroutine, $fffc)
; Referenced from IntVector + $0 (subroutine, $fffe)
Reset: ; $c000
cld
sei
; Referenced from Reset / .l_1 + $3 (branch, $c002)
.l_1: ; $c002
; -------------------------------- ;
; Referenced from Label_14 + $7 (subroutine)
; Referenced from Label_14 + $c (subroutine)
Label_11:
lda $03,x
bpl Label_13
; Referenced from Label_14 + $18 (subroutine)
Label_12:
sec
lda #$00
sbc $00,x
sta $00,x
lda #$00
sbc $01,x
sta $01,x
lda #$00
sbc $02,x
sta $02,x
lda #$00
sbc $03,x
sta $03,x
; Referenced from Label_11 + $2 (branch)
Label_13:
rts
; -------------------------------- ;
; Referenced from Label_1 + $1e (subroutine)
; Referenced from Label_16 + $1 (subroutine)
; Referenced from Label_24 + $b (subroutine)
; Referenced from Label_28 + $b (subroutine)
Label_14:
lda $f7
eor $f3
```
```
lda #$e4
jsr Label_16
bne Label_27
beq Label_27
; Referenced from Label_28 + $29 (branch)
Label_29:
rts
; -------------------------------- ;
; Referenced from Label_24 + $0 (data)
Label_30:
dc.b $55, $55, $d5, $ff, $22, $22, $02, $00, $ff, $f2, $ff, $ff, $2e, $00, $00, $00
```

View File

@ -1,100 +0,0 @@
TIA_VSYNC = $00 data
TIA_VBLANK = $01 data
TIA_WSYNC = $02 data
TIA_RSYNC = $03 data
TIA_NUSIZ0 = $04 data
TIA_NUSIZ1 = $05 data
TIA_COLUP0 = $06 data
TIA_COLUP1 = $07 data
TIA_COLUPF = $08 data
TIA_COLUBK = $09 data
TIA_CTRLPF = $0A data
TIA_REFP0 = $0B data
TIA_REFP1 = $0C data
TIA_PF0 = $0D data
TIA_PF1 = $0E data
TIA_PF2 = $0F data
TIA_RESP0 = $10 data
TIA_RESP1 = $11 data
TIA_RESM0 = $12 data
TIA_RESM1 = $13 data
TIA_RESBL = $14 data
TIA_AUDC0 = $15 data
TIA_AUDC1 = $16 data
TIA_AUDF0 = $17 data
TIA_AUDF1 = $18 data
TIA_AUDV0 = $19 data
TIA_AUDV1 = $1A data
TIA_GRP0 = $1B data
TIA_GRP1 = $1C data
TIA_ENAM0 = $1D data
TIA_ENAM1 = $1E data
TIA_ENABL = $1F data
TIA_HMP0 = $20 data
TIA_HMP1 = $21 data
TIA_HMM0 = $22 data
TIA_HMM1 = $23 data
TIA_HMBL = $24 data
TIA_VDELP0 = $25 data
TIA_VDELP1 = $26 data
TIA_VDELBL = $27 data
TIA_RESMP0 = $28 data
TIA_RESMP1 = $29 data
TIA_HMOVE = $2A data
TIA_HMCLR = $2B data
TIA_CXCLR = $2C data
TIA_CXM0P = $00 read
TIA_CXM1P = $01 read
TIA_CXP0FB = $02 read
TIA_CXP1FB = $03 read
TIA_CXM0FB = $04 read
TIA_CXM1FB = $05 read
TIA_CXBLPF = $06 read
TIA_CXPPMM = $07 read
TIA_INPT0 = $08 read
TIA_INPT1 = $09 read
TIA_INPT2 = $0A read
TIA_INPT3 = $0B read
TIA_INPT4 = $0C read
TIA_INPT5 = $0D read
MARIA_Bkg_col = $0020 data
MARIA_pal_0_col_1 = $0021 data
MARIA_pal_0_col_2 = $0022 data
MARIA_pal_0_col_3 = $0023 data
MARIA_Wait_Sync = $0024 data
MARIA_pal_1_col_1 = $0025 data
MARIA_pal_1_col_2 = $0026 data
MARIA_pal_1_col_3 = $0027 data
MARIA_Status = $0028 data
MARIA_pal_2_col_1 = $0029 data
MARIA_pal_2_col_2 = $002A data
MARIA_pal_2_col_3 = $002B data
MARIA_Disp_List_Hi = $002C data
MARIA_pal_3_col_1 = $002D data
MARIA_pal_3_col_2 = $002E data
MARIA_pal_3_col_3 = $002F data
MARIA_Disp_List_Lo = $0030 data
MARIA_pal_4_col_1 = $0031 data
MARIA_pal_4_col_2 = $0032 data
MARIA_pal_4_col_3 = $0033 data
MARIA_Charbase = $0034 data
MARIA_pal_5_col_1 = $0035 data
MARIA_pal_5_col_2 = $0036 data
MARIA_pal_5_col_3 = $0037 data
MARIA_pal_6_col_1 = $0039 data
MARIA_pal_6_col_2 = $003A data
MARIA_pal_6_col_3 = $003B data
MARIA_CTRL = $003C data
MARIA_pal_7_col_1 = $003D data
MARIA_pal_7_col_2 = $003E data
MARIA_pal_7_col_3 = $003F data
RIOT_IO = $0280 data
RIOT_IO_END = $0300 data
RIOT_RAM = $0480 data
RIOT_RAM_END = $0500 data
RAM = $1800 data
RAM_END = $2800 data

View File

@ -1,75 +0,0 @@
6510_Port_Data_Direction = 0 data
6510_Port_Data = 1 data
C64_System_Interrupt = $314-$316 data
C64_System_NMI = $318-$31a data
Vic_Sprite_Pos = $d000-$d011 data
Vic_Screen_Ctrl = $d011 data
Vic_Raster_Line = $d012 data
Vic_Light_Pen = $d013-$d015 data
Vic_Sprite_Enable = $d015 data
Vic_Sprite_Ctrl = $d016 data
Vic_Sprite_Height_Dbl = $d017 data
Vic_Memory_Setup = $d018 data
Vic_Int_Status = $d019-$d01b data
Vic_Sprite_Pri = $d01b data
Vic_Sprite_MultiCol = $d01C data
Vic_Sprite_Width_Dbl = $d01d data
Vic_Sprite_Sprite_Coll = $d01e data
Vic_Sprite_Background_Coll = $d01f data
Vic_Border_Color = $d020 data
Vic_Back_Color = $d021-$d025 data
Vic_Sprite_Color_Extra = $d025-$d027 data
Vic_Sprite_Color = $d027-$d02f data
Vic = $d02f-$d400 data
SID_Voice1_Freq = $d400-$d402 data
SID_Voice1_Pulse = $d402-$d404 data
SID_Voice1_Ctrl = $d404 data
SID_Voice1_AttackDecay = $d405 data
SID_Voice1_SustainRelease = $d406 data
SID_Voice2_Freq = $d407-$d409 data
SID_Voice2_Pulse = $d409-$d40b data
SID_Voice2_Ctrl = $d40b data
SID_Voice2_AttackDecay = $d40c data
SID_Voice2_SustainRelease = $d40d data
SID_Voice3_Freq = $d40e-$d410 data
SID_Voice3_Pulse = $d410-$d412 data
SID_Voice3_Ctrl = $d412 data
SID_Voice3_AttackDecay = $d413 data
SID_Voice3_SustainRelease = $d414 data
SID_Filter_Cutoff = $d415-$d417 data
SID_Filter_Ctrl = $d417 data
SID_Volume_Filter_Mode = $d418 data
SID_Paddles = $d419-$d41b data
SID_Voice3_Wave_Out = $d41b data
SID_Voice3_ADSR_Out = $d41c data
SID = $D41d-$D800 data
ColorRam = $D800-$DC00 data
CIA1_PortA_KBD_Joy2 = $dc00 data
CIA1_PortB_KBD_Joy1 = $dc01 data
CIA1_PortA_Data_Dir = $dc02 data
CIA1_PortB_Data_Dir = $dc03 data
CIA1_TimerA = $dc04-$dc06 data
CIA1_TimerB = $dc06-$dc08 data
CIA1_TimeOfDay = $dc08-$dc0c data
CIA1_Serial_Shift = $dc0c data
CIA1_Interrupt_Ctrl_Status = $dc0d data
CIA1_TimerA_Ctrl = $dc0e data
CIA1_TimerB_Ctrl = $dc0f data
CIA1 = $DC10-$DD00 data
CIA2_PortA_Serial = $dd00 data
CIA2_PortB_RS232 = $dd01 data
CIA2_PortA_Data_Dir = $dd02 data
CIA2_PortB_Data_Dir = $dd03 data
CIA2_TimerA = $dd04-$dd06 data
CIA2_TimerB = $dd06-$dd08 data
CIA2_TimeOfDay = $dd08-$dd0c data
CIA2_Serial_Shift = $dd0c data
CIA2_Interrupt_Ctrl_Status = $dd0d data
CIA2_TimerA_Ctrl = $dd0e data
CIA2_TimerB_Ctrl = $dd0f data
CIA2 = $dd10-$de00 data
IO_Area1 = $de00-$df00 data
IO_Area2 = $df00-$e000 data
NMIVector = $fffa-$fffc pointers vector to NMI interrupt
ResetVector = $fffc-$fffe pointers vector to reset address
IntVector = $fffe-$10000 pointers vector to interrupt address

View File

@ -1,158 +0,0 @@
6510_Port_Data_Direction = 0 data
6510_Port_Data = 1 data
C64_System_Interrupt = $314-$316 data
C64_System_NMI = $318-$31a data
Vic_Sprite_Pos = $d000-$d011 data
Vic_Screen_Ctrl = $d011 data
Vic_Raster_Line = $d012 data
Vic_Light_Pen = $d013-$d015 data
Vic_Sprite_Enable = $d015 data
Vic_Sprite_Ctrl = $d016 data
Vic_Sprite_Height_Dbl = $d017 data
Vic_Memory_Setup = $d018 data
Vic_Int_Status = $d019-$d01b data
Vic_Sprite_Pri = $d01b data
Vic_Sprite_MultiCol = $d01C data
Vic_Sprite_Width_Dbl = $d01d data
Vic_Sprite_Sprite_Coll = $d01e data
Vic_Sprite_Background_Coll = $d01f data
Vic_Border_Color = $d020 data
Vic_Back_Color = $d021-$d025 data
Vic_Sprite_Color_Extra = $d025-$d027 data
Vic_Sprite_Color = $d027-$d02f data
Vic = $d02f-$d400 data
SID_Voice1_Freq = $d400-$d402 data
SID_Voice1_Pulse = $d402-$d404 data
SID_Voice1_Ctrl = $d404 data
SID_Voice1_AttackDecay = $d405 data
SID_Voice1_SustainRelease = $d406 data
SID_Voice2_Freq = $d407-$d409 data
SID_Voice2_Pulse = $d409-$d40b data
SID_Voice2_Ctrl = $d40b data
SID_Voice2_AttackDecay = $d40c data
SID_Voice2_SustainRelease = $d40d data
SID_Voice3_Freq = $d40e-$d410 data
SID_Voice3_Pulse = $d410-$d412 data
SID_Voice3_Ctrl = $d412 data
SID_Voice3_AttackDecay = $d413 data
SID_Voice3_SustainRelease = $d414 data
SID_Filter_Cutoff = $d415-$d417 data
SID_Filter_Ctrl = $d417 data
SID_Volume_Filter_Mode = $d418 data
SID_Paddles = $d419-$d41b data
SID_Voice3_Wave_Out = $d41b data
SID_Voice3_ADSR_Out = $d41c data
SID = $D41d-$D800 data
ColorRam = $D800-$DC00 data
CIA1_PortA_KBD_Joy2 = $dc00 data
CIA1_PortB_KBD_Joy1 = $dc01 data
CIA1_PortA_Data_Dir = $dc02 data
CIA1_PortB_Data_Dir = $dc03 data
CIA1_TimerA = $dc04-$dc06 data
CIA1_TimerB = $dc06-$dc08 data
CIA1_TimeOfDay = $dc08-$dc0c data
CIA1_Serial_Shift = $dc0c data
CIA1_Interrupt_Ctrl_Status = $dc0d data
CIA1_TimerA_Ctrl = $dc0e data
CIA1_TimerB_Ctrl = $dc0f data
CIA1 = $DC10-$DD00 data
CIA2_PortA_Serial = $dd00 data
CIA2_PortB_RS232 = $dd01 data
CIA2_PortA_Data_Dir = $dd02 data
CIA2_PortB_Data_Dir = $dd03 data
CIA2_TimerA = $dd04-$dd06 data
CIA2_TimerB = $dd06-$dd08 data
CIA2_TimeOfDay = $dd08-$dd0c data
CIA2_Serial_Shift = $dd0c data
CIA2_Interrupt_Ctrl_Status = $dd0d data
CIA2_TimerA_Ctrl = $dd0e data
CIA2_TimerB_Ctrl = $dd0f data
CIA2 = $dd10-$de00 data
IO_Area1 = $de00-$df00 data
IO_Area2 = $df00-$e000 data
; from sta.c64.org
KRN_SCINIT_JMP = $FF81 code Initialize VIC; restore default input/output to keyboard/screen; clear screen; set PAL/NTSC switch and interrupt timer.
KRN_SCINIT = $FF5B code Initialize VIC; restore default input/output to keyboard/screen; clear screen; set PAL/NTSC switch and interrupt timer.
KRN_IOINIT_JMP = $FF84 code Initialize CIA's, SID volume; setup memory configuration; set and start interrupt timer.
KRN_IOINIT= $FDA3 code Initialize CIA's, SID volume; setup memory configuration; set and start interrupt timer.
KRN_RAMTAS_JMP = $FF87 code Clear memory addresses $0002-$0101 and $0200-$03FF; run memory test and set start and end address of BASIC work area accordingly; set screen memory to $0400 and datasette buffer to $033C.
KRN_RAMTAS = FD50 code Clear memory addresses $0002-$0101 and $0200-$03FF; run memory test and set start and end address of BASIC work area accordingly; set screen memory to $0400 and datasette buffer to $033C.
KRN_RESTOR_JMP = $FF8A code Fill vector table at memory addresses $0314-$0333 with default values.
KRN_RESTOR = $FD15 code Fill vector table at memory addresses $0314-$0333 with default values.
KRN_VECTOR_JMP = $FF8D code Copy vector table at memory addresses $0314-$0333 from or into user table.
KRN_VECTOR = $FD1A code Copy vector table at memory addresses $0314-$0333 from or into user table.
KRN_SETMSG_JMP = $FF90 code Set system error display switch at memory address $009D.
KRN_SETMSG = $FE18 code Set system error display switch at memory address $009D.
KRN_LSTNSA_JMP = $FF93 code Send LISTEN secondary address to serial bus. (Must call LISTEN beforehands.)
KRN_LSTNSA = $EDB9. code Send LISTEN secondary address to serial bus. (Must call LISTEN beforehands.)
KRN_TALKSA_JMP = $FF96 code Send TALK secondary address to serial bus. (Must call TALK beforehands.)
KRN_TALKSA = $EDC7 code Send TALK secondary address to serial bus. (Must call TALK beforehands.)
KRN_MEMBOT_JMP = $FF99 code Save or restore start address of BASIC work area.
KRN_MEMBOT = $FE25 code Save or restore start address of BASIC work area.
KRN_MEMTOP_JMP = $FF9C code Save or restore end address of BASIC work area.
KRN_MEMTOP = $FE34 code Save or restore end address of BASIC work area.
KRN_SCNKEY_JMP = $FF9F code Query keyboard; put current matrix code into memory address $00CB, current status of shift keys into memory address $028D and PETSCII code into keyboard buffer.
KRN_SCNKEY = $EA87 code Query keyboard; put current matrix code into memory address $00CB, current status of shift keys into memory address $028D and PETSCII code into keyboard buffer.
KRN_SETTMO_JMP = $FFA2 code Unknown. (Set serial bus timeout.)
KRN_SETTMO = $FE21 code Unknown. (Set serial bus timeout.)
KRN_IECIN_JMP = $FFA5 code Read byte from serial bus. (Must call TALK and TALKSA beforehands.)
KRN_IECIN = $EE13 code Read byte from serial bus. (Must call TALK and TALKSA beforehands.)
KRN_IECOUT_JMP = $FFA8 code Write byte to serial bus. (Must call LISTEN and LSTNSA beforehands.)
KRN_IECOUT = $EDDD code Write byte to serial bus. (Must call LISTEN and LSTNSA beforehands.)
KRN_UNTALK_JMP = $FFAB code Send UNTALK command to serial bus.
KRN_UNTALK = $EDEF code Send UNTALK command to serial bus.
KRN_UNLSTN_JMP = $FFAE code Send UNLISTEN command to serial bus.
KRN_UNLSTN = $EDFE code Send UNLISTEN command to serial bus.
KRN_LISTEN_JMP = $FFB1 code Send LISTEN command to serial bus.
KRN_LISTEN = $ED0C code Send LISTEN command to serial bus.
KRN_TALK_JMP = $FFB4 code Send TALK command to serial bus.
KRN_TALK = $ED09 code Send TALK command to serial bus.
KRN_READST_JMP = $FFB7 code Fetch status of current input/output device, value of ST variable. (For RS232, status is cleared.)
KRN_READST = $FE07 code Fetch status of current input/output device, value of ST variable. (For RS232, status is cleared.)
KRN_SETLFS_JMP = $FFBA code Set file parameters.
KRN_SETLFS = $FE00 code Set file parameters.
KRN_SETNAM_JMP = $FFBD code Set file name parameters.
KRN_SETNAM = $FDF9 code Set file name parameters.
KRN_OPEN_JMP = $FFC0 code Open file. (Must call SETLFS and SETNAM beforehands.)
KRN_OPEN = $F34A code Open file. (Must call SETLFS and SETNAM beforehands.)
KRN_CLOSE_JMP = $FFC3 code Close file.
KRN_CLOSE = $F291 code Close file.
KRN_CHKIN_JMP = $FFC6 code Define file as default input. (Must call OPEN beforehands.)
KRN_CHKIN = $F20E code Define file as default input. (Must call OPEN beforehands.)
KRN_CHKOUT_JMP = $FFC9 code Define file as default output. (Must call OPEN beforehands.)
KRN_CHKOUT = $F250 code Define file as default output. (Must call OPEN beforehands.)
KRN_CLRCHN_JMP = $FFCC code Close default input/output files (for serial bus, send UNTALK and/or UNLISTEN); restore default input/output to keyboard/screen.
KRN_CLRCHN = $F333 code Close default input/output files (for serial bus, send UNTALK and/or UNLISTEN); restore default input/output to keyboard/screen.
KRN_CHRIN_JMP = $FFCF code Read byte from default input (for keyboard, read a line from the screen). (If not keyboard, must call OPEN and CHKIN beforehands.)
KRN_CHRIN = $F157 code Read byte from default input (for keyboard, read a line from the screen). (If not keyboard, must call OPEN and CHKIN beforehands.)
KRN_CHROUT_JMP = $FFD2 code Write byte to default output. (If not screen, must call OPEN and CHKOUT beforehands.)
KRN_CHROUT = $F1CA code Write byte to default output. (If not screen, must call OPEN and CHKOUT beforehands.)
KRN_LOAD_JMP = $FFD5 code Load or verify file. (Must call SETLFS and SETNAM beforehands.)
KRN_LOAD = $F49E code Load or verify file. (Must call SETLFS and SETNAM beforehands.)
KRN_SAVE_JMP = $FFD8 code Save file. (Must call SETLFS and SETNAM beforehands.)
KRN_SAVE = $F5DD code Save file. (Must call SETLFS and SETNAM beforehands.)
KRN_SETTIM_JMP = $FFDB code Set Time of Day, at memory address $00A0-$00A2.
KRN_SETTIM = $F6E4 code Set Time of Day, at memory address $00A0-$00A2.
KRN_RDTIM_JMP = $FFDE code read Time of Day, at memory address $00A0-$00A2.
KRN_RDTIM = $F6DD code read Time of Day, at memory address $00A0-$00A2.
KRN_STOP_JMP = $FFE1 code Query Stop key indicator, at memory address $0091; if pressed, call CLRCHN and clear keyboard buffer.
KRN_STOP = $F6ED code Query Stop key indicator, at memory address $0091; if pressed, call CLRCHN and clear keyboard buffer.
KRN_GETIN_JMP = $FFE4 code Read byte from default input. (If not keyboard, must call OPEN and CHKIN beforehands.)
KRN_GETIN = $F13E code Read byte from default input. (If not keyboard, must call OPEN and CHKIN beforehands.)
KRN_CLALL_JMP = $FFE7 code Clear file table; call CLRCHN.
KRN_CLALL = $F32F code Clear file table; call CLRCHN.
KRN_UDTIM_JMP = $FFEA code Update Time of Day, at memory address $00A0-$00A2, and Stop key indicator, at memory address $0091.
KRN_UDTIM = $F69B code Update Time of Day, at memory address $00A0-$00A2, and Stop key indicator, at memory address $0091.
KRN_SCREEN_JMP = $FFED code Fetch number of screen rows and columns.
KRN_SCREEN = $E505 code Fetch number of screen rows and columns.
KRN_PLOT_JMP = $FFF0 code Save or restore cursor position.
KRN_PLOT = $E50A code Save or restore cursor position.
KRN_IOBASE_JMP = $FFF3 code Fetch CIA #1 base address.
KRN_IOBASE = $E500 code Fetch CIA #1 base address.
NMIVector = $fffa-$fffc pointers vector to NMI interrupt
ResetVector = $fffc-$fffe pointers vector to reset address
IntVector = $fffe-$10000 pointers vector to interrupt address

File diff suppressed because it is too large Load Diff