documentation update, added STATUS.md document
This commit is contained in:
1 parent
47019cc25d
commit
212724d8f5
31 files changed
+452
-65
No files matched your search
@@ -8,6 +8,7 @@
|
||||
;; CPU registers that has to be preserved (see [RG64]): .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve register Y, to be fixed!
|
||||
|
||||
;; Reads a byte of input, unless from keyboard.
|
||||
;; If from keyboard, then it gets a whole line of input, and returns the first char.
|
||||
|
||||
+12
-3
@@ -1,7 +1,16 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
ciout:
|
||||
|
||||
;; This routine is documented in 'Compute's Mapping the Commodore 64', page 224
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 279/280
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 224
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .X, .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve registers, to be fixed!
|
||||
|
||||
ciout:
|
||||
|
||||
pha
|
||||
lda C3PO
|
||||
|
||||
+15
-4
@@ -1,15 +1,26 @@
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 281
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 230
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve register Y, to be fixed!
|
||||
|
||||
clall:
|
||||
|
||||
;; Implemented according to 'C64 Programmer's Reference Guide', page 281
|
||||
;; Not entirely sure if it just sets LDTND to 0 or actually calls CLOSE,
|
||||
;; but calling CLOSE for all open channels seems to be the safest
|
||||
;; Original routine probably just sets LDTND to 0, but this is not really safe,
|
||||
;; so we actually close all the channels; at least IDE64 does the same for
|
||||
;; it's channels, see CLALL description in the IDE64 User's Guide
|
||||
|
||||
ldy LDTND
|
||||
beq +
|
||||
dey
|
||||
lda LAT, y
|
||||
jsr close
|
||||
jsr close ; XXX jump through ICLOSE?
|
||||
jmp clall
|
||||
*
|
||||
;; 'C64 Programmers Reference Guide', page 281, claims it calls CLRCHN too
|
||||
|
||||
+10
-3
@@ -1,7 +1,14 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
close:
|
||||
|
||||
;; Implemented accorging to 'C64 Programmers Reference Guide', page 281
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 281/282
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 229/230
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): none
|
||||
;;
|
||||
|
||||
close:
|
||||
|
||||
;; XXX this needs more testing (opening 10 files at once, closing in various orders, etc) once the code is more mature
|
||||
|
||||
|
||||
+10
-1
@@ -1,3 +1,12 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 282
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 230
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .Y
|
||||
;;
|
||||
|
||||
clrchn:
|
||||
rts
|
||||
@@ -1,8 +1,18 @@
|
||||
; $FFF3 - Get page of IO devices
|
||||
; Returns Y=$DC, X=$00
|
||||
; (http://codebase64.org/doku.php?id=base:kernalreference)
|
||||
;
|
||||
; As there is nothing between here and $FFFA, we can just hard code this in place.
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 284
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 214
|
||||
;; - http://codebase64.org/doku.php?id=base:kernalreference (original source)
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .A
|
||||
;;
|
||||
|
||||
|
||||
;; As there is nothing between here and $FFFA, we can just hard code this in place.
|
||||
|
||||
iobase:
|
||||
ldy #$DC
|
||||
ldx #$00
|
||||
rts
|
||||
|
||||
+12
-1
@@ -1,4 +1,15 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 283
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 227/228
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .X, .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve registers, to be fixed!
|
||||
|
||||
getin:
|
||||
|
||||
;; Wait for a key
|
||||
|
||||
+11
-1
@@ -1,4 +1,14 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 285
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 223
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .X, .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve registers, to be fixed!
|
||||
|
||||
listen:
|
||||
|
||||
|
||||
+11
-3
@@ -1,7 +1,15 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
;; IEC reference at http://www.zimmers.net/anonftp/pub/cbm/programming/serial-bus.pdf
|
||||
|
||||
;; Definition of function from Compute's Mapping the 64 p231
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 286
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 231
|
||||
;; - IEC reference at http://www.zimmers.net/anonftp/pub/cbm/programming/serial-bus.pdf
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): none
|
||||
;;
|
||||
|
||||
|
||||
;; Expects that SETLFS and SETNAM are called before hand.
|
||||
;; $YYXX = load address.
|
||||
;; (ignored if SETLFS channel = 1, i.e., like ,8,1)
|
||||
|
||||
+15
-5
@@ -1,13 +1,23 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 287/288
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 240
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .A
|
||||
;;
|
||||
|
||||
membot:
|
||||
; p287 C64 Programmers reference guide
|
||||
;; http://unusedino.de/ec64/technical/project64/mapping_c64.html
|
||||
|
||||
bcc membot_set
|
||||
|
||||
LDX MEMSTR+0
|
||||
LDY MEMSTR+1
|
||||
ldx MEMSTR+0
|
||||
ldy MEMSTR+1
|
||||
rts
|
||||
|
||||
membot_set:
|
||||
|
||||
stx MEMSTR+0
|
||||
stx MEMSTR+1
|
||||
|
||||
|
||||
+15
-6
@@ -1,14 +1,23 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 288
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 240
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .A
|
||||
;;
|
||||
|
||||
memtop:
|
||||
; p288 C64 Programmer's reference guide
|
||||
; but for now we only support reading it
|
||||
;; http://unusedino.de/ec64/technical/project64/mapping_c64.html
|
||||
|
||||
bcc memtop_set
|
||||
|
||||
LDY MEMSIZ+1
|
||||
LDX MEMSIZ+0
|
||||
ldy MEMSIZ+1
|
||||
ldx MEMSIZ+0
|
||||
rts
|
||||
|
||||
memtop_set:
|
||||
|
||||
sty MEMSIZ+1
|
||||
stx MEMSIZ+0
|
||||
|
||||
|
||||
+10
-3
@@ -1,7 +1,14 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
;; See also http://www.zimmers.net/anonftp/pub/cbm/programming/serial-bus.pdf
|
||||
|
||||
;; XXX rework this, according to pagetable.com
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 289
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 230/231
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): none
|
||||
;;
|
||||
|
||||
;; XXX this is only a test implementation, does not do what the Kernal does!
|
||||
|
||||
open:
|
||||
|
||||
|
||||
@@ -1,2 +1,12 @@
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 290
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 215
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): none
|
||||
;;
|
||||
|
||||
plot:
|
||||
rts
|
||||
+10
-1
@@ -1,3 +1,12 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 291
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 232
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): none
|
||||
;;
|
||||
|
||||
rdtim:
|
||||
rts
|
||||
+10
-2
@@ -1,10 +1,18 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 292
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 239
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .X, .Y
|
||||
;;
|
||||
|
||||
readst:
|
||||
|
||||
;; Check the current device number
|
||||
|
||||
lda DFLTN
|
||||
lda current_device_number
|
||||
cmp #$02
|
||||
bne +
|
||||
|
||||
|
||||
+11
-1
@@ -1,3 +1,13 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 293/294
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 231/232
|
||||
;; - IEC reference at http://www.zimmers.net/anonftp/pub/cbm/programming/serial-bus.pdf
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): none
|
||||
;;
|
||||
|
||||
save:
|
||||
rts
|
||||
@@ -1,9 +1,19 @@
|
||||
;; Scan the keyboard..
|
||||
;; Here we don't use the horrible buggy original routine,
|
||||
;; not just because of copyright. Instead, we use the
|
||||
;; nice one with joystick interference removal and
|
||||
;; key roll-over support from
|
||||
;; http://codebase64.org/doku.php?id=base:scanning_the_keyboard_the_correct_and_non_kernal_way
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 295
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 220
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): none
|
||||
;;
|
||||
|
||||
;; Scan the keyboard..
|
||||
;; Here we don't use the horrible buggy original routine,
|
||||
;; not just because of copyright. Instead, we use the
|
||||
;; nice one with joystick interference removal and
|
||||
;; key roll-over support from
|
||||
;; http://codebase64.org/doku.php?id=base:scanning_the_keyboard_the_correct_and_non_kernal_way
|
||||
|
||||
;; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
;; Keyboard IO Routine
|
||||
|
||||
+9
-1
@@ -1,4 +1,12 @@
|
||||
; Function defined on p295 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 295
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 215
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .A
|
||||
;;
|
||||
|
||||
screen:
|
||||
|
||||
|
||||
+14
-3
@@ -1,8 +1,19 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 296
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 223/224
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .X, .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve registers, to be fixed!
|
||||
|
||||
second:
|
||||
|
||||
;; This trivial routine is documented in 'C64 Programmer's Reference Guide', page 296 and
|
||||
;; https://www.pagetable.com/?p=1031, , https://github.com/mist64/cbmbus_doc
|
||||
;; see also https://www.pagetable.com/?p=1031, , https://github.com/mist64/cbmbus_doc
|
||||
|
||||
and #$1F ; make sure bits encoding the command are cleared out
|
||||
ora #$60
|
||||
jmp iec_tx_command
|
||||
+9
-1
@@ -1,4 +1,12 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 297
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 238
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .A, .X, .Y
|
||||
;;
|
||||
|
||||
setfls:
|
||||
|
||||
|
||||
+10
-1
@@ -1,4 +1,13 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 298
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 239
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .A, .X, .Y
|
||||
;;
|
||||
|
||||
setmsg:
|
||||
sta MSGFLG
|
||||
rts
|
||||
+9
-1
@@ -1,4 +1,12 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 298/299
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 238
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .A, .X, .Y
|
||||
;;
|
||||
|
||||
setnam:
|
||||
|
||||
|
||||
+10
-1
@@ -1,3 +1,12 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 299/300
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 232
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .A, .X, .Y
|
||||
;;
|
||||
|
||||
settim:
|
||||
rts
|
||||
+10
-1
@@ -1,3 +1,12 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 300
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 239
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .A, .X, .Y
|
||||
;;
|
||||
|
||||
settmo:
|
||||
rts
|
||||
+12
-3
@@ -1,4 +1,13 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 301
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 232
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .Y
|
||||
;;
|
||||
|
||||
stop:
|
||||
;; Bit 7 of BUCKYSTATUS contains the state of the STOP key
|
||||
;; (Compute's Mapping the 64, p27)
|
||||
@@ -8,10 +17,10 @@ stop:
|
||||
and #$80
|
||||
beq stop_pressed
|
||||
|
||||
;; By trial and error, we know that Z + C = BREAK
|
||||
;; By trial and error, we know that Z + C = BREAK
|
||||
;; and that neither should be set otherwise
|
||||
lda #$ff
|
||||
clc
|
||||
clc
|
||||
rts
|
||||
|
||||
stop_pressed:
|
||||
|
||||
+14
-3
@@ -1,9 +1,20 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 301/302
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 223
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .X, .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve registers, to be fixed!
|
||||
;; XXX shouldn't this do a turnaround?
|
||||
|
||||
talk:
|
||||
|
||||
;; This routine is documented in 'Compute's Mapping the Commodore 64', page 223 and
|
||||
;; https://www.pagetable.com/?p=1031, , https://github.com/mist64/cbmbus_doc
|
||||
;; See also https://www.pagetable.com/?p=1031, https://github.com/mist64/cbmbus_doc
|
||||
|
||||
and #$1F ; make sure bits encoding the command are cleared out
|
||||
ora #$40
|
||||
jmp iec_tx_command
|
||||
|
||||
+15
-3
@@ -1,8 +1,20 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 302
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 224
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .X, .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve registers, to be fixed!
|
||||
;; XXX shouldn't this do a turnaround?
|
||||
|
||||
tksa:
|
||||
|
||||
;; This routine is documented in 'C64 Programmer's Reference Guide', page 302 and
|
||||
;; https://www.pagetable.com/?p=1031, , https://github.com/mist64/cbmbus_doc
|
||||
;; See also https://www.pagetable.com/?p=1031, , https://github.com/mist64/cbmbus_doc
|
||||
|
||||
and #$1F ; make sure bits encoding the command are cleared out
|
||||
ora #$F0
|
||||
jmp iec_tx_command
|
||||
|
||||
+11
-1
@@ -1,4 +1,14 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 303
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 224
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .X, .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve registers, to be fixed!
|
||||
|
||||
unlsn:
|
||||
|
||||
|
||||
+12
-1
@@ -1,4 +1,15 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 304
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 224
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .X, .Y
|
||||
;;
|
||||
|
||||
;; XXX currently does not preserve registers, to be fixed!
|
||||
;; XXX shouldn't this do a turnaround?
|
||||
|
||||
untlk:
|
||||
|
||||
|
||||
@@ -1,2 +1,12 @@
|
||||
|
||||
;;
|
||||
;; Official Kernal routine, described in:
|
||||
;;
|
||||
;; - [RG64] C64 Programmer's Reference Guide - page 303
|
||||
;; - [CM64] Compute's Mapping the Commodore 64 - page 232
|
||||
;;
|
||||
;; CPU registers that has to be preserved (see [RG64]): .Y
|
||||
;;
|
||||
|
||||
update_jiffy_clock:
|
||||
rts
|
||||
Reference in new issue
Block a user