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 | |
|
| `$FFE1` | `STOP` | DONE | |
|
||||||
| `$FFE4` | `GETIN` | PARTIAL | only some devices supported |
|
| `$FFE4` | `GETIN` | PARTIAL | only some devices supported |
|
||||||
| `$FFE7` | `CLALL` | DONE | |
|
| `$FFE7` | `CLALL` | DONE | |
|
||||||
| `$FFEA` | `UDTIM` | NOT DONE | checking for STOP key present in SCNKEY instead |
|
| `$FFEA` | `UDTIM` | DONE | |
|
||||||
| `$FFED` | `SCREEN` | DONE | |
|
| `$FFED` | `SCREEN` | DONE | |
|
||||||
| `$FFF0` | `PLOT` | NOT DONE | |
|
| `$FFF0` | `PLOT` | NOT DONE | |
|
||||||
| `$FFF3` | `IOBASE` | DONE | |
|
| `$FFF3` | `IOBASE` | DONE | |
|
||||||
|
|||||||
@@ -204,10 +204,6 @@ ReturnNoKeys:
|
|||||||
|
|
||||||
NoActivityDetected:
|
NoActivityDetected:
|
||||||
|
|
||||||
;; Cancel STKEY status
|
|
||||||
lda #$FF
|
|
||||||
sta STKEY ; XXX this variable should be set by UDTIM
|
|
||||||
|
|
||||||
;; So cancel all bucky keys
|
;; So cancel all bucky keys
|
||||||
lda key_bucky_state
|
lda key_bucky_state
|
||||||
sta key_last_bucky_state
|
sta key_last_bucky_state
|
||||||
@@ -334,12 +330,6 @@ next_row:
|
|||||||
;; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
;; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
;; // Check and flag Non Alphanumeric Keys
|
;; // 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
|
;; Store de-bounce data for bucky keys
|
||||||
;; (Compute's Mapping the 64, p58-59)
|
;; (Compute's Mapping the 64, p58-59)
|
||||||
lda key_bucky_state
|
lda key_bucky_state
|
||||||
|
|||||||
@@ -9,4 +9,46 @@
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
udtim:
|
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
|
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