implemented UDTIM routine
This commit is contained in:
1 parent
1053e13112
commit
676db127c3
3 files changed
+43
-11
No files matched your search
@@ -106,7 +106,7 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on
|
||||
| `$FFE1` | `STOP` | DONE | |
|
||||
| `$FFE4` | `GETIN` | PARTIAL | only some devices supported |
|
||||
| `$FFE7` | `CLALL` | DONE | |
|
||||
| `$FFEA` | `UDTIM` | NOT DONE | checking for STOP key present in SCNKEY instead |
|
||||
| `$FFEA` | `UDTIM` | DONE | |
|
||||
| `$FFED` | `SCREEN` | DONE | |
|
||||
| `$FFF0` | `PLOT` | NOT DONE | |
|
||||
| `$FFF3` | `IOBASE` | DONE | |
|
||||
|
||||
@@ -204,10 +204,6 @@ ReturnNoKeys:
|
||||
|
||||
NoActivityDetected:
|
||||
|
||||
;; Cancel STKEY status
|
||||
lda #$FF
|
||||
sta STKEY ; XXX this variable should be set by UDTIM
|
||||
|
||||
;; So cancel all bucky keys
|
||||
lda key_bucky_state
|
||||
sta key_last_bucky_state
|
||||
@@ -334,12 +330,6 @@ next_row:
|
||||
;; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
;; // Check and flag Non Alphanumeric Keys
|
||||
|
||||
;; Store last row of keyboard scan result,
|
||||
;; so that RUN/STOP etc can be checked easily
|
||||
;; (Compute's Mapping the 64, p27)
|
||||
lda ScanResult+0
|
||||
sta STKEY ; XXX this variable should be set by UDTIM
|
||||
|
||||
;; Store de-bounce data for bucky keys
|
||||
;; (Compute's Mapping the 64, p58-59)
|
||||
lda key_bucky_state
|
||||
|
||||
@@ -9,4 +9,46 @@
|
||||
;;
|
||||
|
||||
udtim:
|
||||
|
||||
;; Update jiffy clock. The whole day is $4F1A00 jiffies (24 hours * 60 minutes * 60 seconds * 60 jiffies),
|
||||
;; after this time we have to reset the clock.
|
||||
|
||||
inc TIME+0
|
||||
bne udtim_clock_done
|
||||
inc TIME+1
|
||||
bne udtim_clock_rollover
|
||||
inc TIME+2
|
||||
|
||||
;; FALLTROUGH
|
||||
|
||||
udtim_clock_done:
|
||||
udtim_update_stkey: ; entry to be used when interrupts are disabled
|
||||
|
||||
;; Another action we have to perform is to copy the last row of keyboard to RAM,
|
||||
;; so that various routines can detect the STOP key press
|
||||
;; XXX scnkey contains similar sequence - deduplicate this!
|
||||
lda #$FF
|
||||
sta CIA1_DDRA ; output
|
||||
lda #$00
|
||||
sta CIA1_DDRB ; input
|
||||
|
||||
lda #$7F
|
||||
sta CIA1_PRA ; select the last row (bit to 0)
|
||||
|
||||
lda CIA1_PRB ; read the row
|
||||
sta STKEY
|
||||
rts
|
||||
|
||||
udtim_clock_rollover:
|
||||
|
||||
;; At this point TIME+0 has to contain 0,
|
||||
lda TIME+1
|
||||
cmp #$1A
|
||||
bne udtim_clock_done
|
||||
lda TIME+2
|
||||
cmp #$4F
|
||||
bne udtim_clock_done
|
||||
lda #$00
|
||||
sta TIME+2
|
||||
sta TIME+1
|
||||
beq udtim_clock_done ; will always jump
|
||||
Reference in new issue
Block a user