AppleWin/docs/DDial/DDial.txt

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