mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-08-18 20:29:01 +00:00
165 lines
2.3 KiB
Plaintext
165 lines
2.3 KiB
Plaintext
|
AppleWin behaviour: (ddial.dsk)
|
||
|
- 1.10.4 : Counts up immediately at correct rate (but no "login" msg)
|
||
|
- 1.12.6 : Counts up immediately at correct rate (but no "login" msg)
|
||
|
- 1.12.9.1 : Sticks at 2s, then starts counting slowly after ~30s (but no "login" msg)
|
||
|
- 1.14.2 : Very fast counting immediately
|
||
|
|
||
|
NB:
|
||
|
. "Login" msg output ~33s/34s
|
||
|
. After option-1 is loaded, then it writes to some regs in slot-1 ($C0An), but no reads.
|
||
|
|
||
|
=======================================
|
||
|
|
||
|
$38EB:
|
||
|
LDA $28 ; [$28] = #$00
|
||
|
BMI .SKIP_UPDATE_TIME ; $38FF
|
||
|
|
||
|
LDA $F4 ; [$F8] = #$FF
|
||
|
BNE $38F8
|
||
|
|
||
|
LDA #$80+' '
|
||
|
STA SEC_HI-1
|
||
|
|
||
|
$38F8:
|
||
|
LDA #$84
|
||
|
STA $28
|
||
|
|
||
|
JSR UPDATE_TIME
|
||
|
|
||
|
.SKIP_UPDATE_TIME:
|
||
|
JSR $7FD3
|
||
|
JSR $4753
|
||
|
JSR CHECK_VBL
|
||
|
|
||
|
;...
|
||
|
|
||
|
=======================================
|
||
|
|
||
|
$395F:
|
||
|
LDA $F4
|
||
|
CMP #$01
|
||
|
BCC $3979
|
||
|
|
||
|
LDA TAPEIN
|
||
|
TAY
|
||
|
$3969:
|
||
|
EOR #$00 ; Default?
|
||
|
BPL $3979
|
||
|
|
||
|
; State change on TAPEIN
|
||
|
STY $3969+1
|
||
|
LDA #$0A
|
||
|
STA $F4
|
||
|
STA $28
|
||
|
LDA TAPEOUT
|
||
|
|
||
|
$3979:
|
||
|
JMP $28B4
|
||
|
|
||
|
=======================================
|
||
|
|
||
|
; Func entrypoint
|
||
|
UPDATE_TIME: ; $5205
|
||
|
LDX $FF ; [$FF] = #$FF
|
||
|
BEQ $5220
|
||
|
BPL $520D
|
||
|
LDX #$09
|
||
|
$520D:
|
||
|
DEX
|
||
|
STX $FF
|
||
|
BNE $5220
|
||
|
|
||
|
;...
|
||
|
|
||
|
$523D:
|
||
|
LDX #$07
|
||
|
|
||
|
$523F:
|
||
|
LDA $A0,X
|
||
|
|
||
|
;...
|
||
|
|
||
|
DEC $38,X
|
||
|
BNE $5289
|
||
|
LDA #$00
|
||
|
STA $90,X
|
||
|
|
||
|
$5289:
|
||
|
DEX
|
||
|
BPL $523F
|
||
|
|
||
|
$528C:
|
||
|
INC $4A7 ; SEC_LO
|
||
|
LDA $4A7
|
||
|
CMP #$80+'9'+1 ; #$BA
|
||
|
BNE $530A
|
||
|
|
||
|
; $4A6 = SEC_HI
|
||
|
|
||
|
;...
|
||
|
|
||
|
$530A:
|
||
|
RTS
|
||
|
|
||
|
=======================================
|
||
|
|
||
|
CHECK_VBL: ; $F822
|
||
|
|
||
|
LDA RDVBLBAR
|
||
|
$F825: ; FRMCNT = $F826
|
||
|
EOR #$3C ; (*SMC)
|
||
|
BMI $F82A
|
||
|
RTS
|
||
|
|
||
|
; VBl changed
|
||
|
$F82A:
|
||
|
LDA FRMCNT
|
||
|
EOR #$80
|
||
|
STA FRMCNT
|
||
|
BMI $F86A
|
||
|
|
||
|
; 1 frame elasped
|
||
|
INC $30 ; [$30] = #$FF
|
||
|
AND $7F9F ; [$7F9F] = #$01
|
||
|
BNE $F83D
|
||
|
STA $F2 ; [$F2] = #$01
|
||
|
$F83D:
|
||
|
DEC FRMCNT
|
||
|
BNE $F86A
|
||
|
|
||
|
; 1 sec elasped
|
||
|
$F842: ; FRMCNT2 = $F843
|
||
|
LDA #$3C ; (*SMC)
|
||
|
STA FRMCNT
|
||
|
DEC FRAMECNT3
|
||
|
BNE $F861
|
||
|
PHP
|
||
|
CMP #60 ; #$3C
|
||
|
BCS $F858 ; Branch if A >= 60
|
||
|
INC FRMCNT2
|
||
|
LDA #$79 ; 121 = 60*2+1
|
||
|
BNE $F85D ; == BRA $F85D
|
||
|
$F858:
|
||
|
DEC FRMCNT2
|
||
|
LDA #$0A
|
||
|
$F85D:
|
||
|
STA FRAMECNT3
|
||
|
PLP
|
||
|
|
||
|
$F861:
|
||
|
LDA $F4 ; [$F4] = #$FF
|
||
|
BNE $F86B
|
||
|
STA $28 ; [$28] = #$00
|
||
|
LDA TAPEOUT
|
||
|
RTS
|
||
|
|
||
|
$F86A:
|
||
|
RTS
|
||
|
|
||
|
$F86B:
|
||
|
DEC $F4
|
||
|
RTS
|
||
|
|
||
|
FRAMECNT3: ; $F86E
|
||
|
DCB $01
|