backscroll log

This commit is contained in:
Peter Ferrie 2021-04-20 13:02:07 -07:00
parent 79e30dda0e
commit 481e61cd0b
6 changed files with 210 additions and 0 deletions

View File

@ -58,6 +58,7 @@ asm:
grep "OpenFile=" build/vars.log | cut -d":" -f3 | cut -d"(" -f1 >> build/vars.a
grep "ReadFile=" build/vars.log | cut -d":" -f3 | cut -d"(" -f1 >> build/vars.a
grep "CloseFile=" build/vars.log | cut -d":" -f3 | cut -d"(" -f1 >> build/vars.a
grep "CheckCache=" build/vars.log | cut -d":" -f3 | cut -d"(" -f1 >> build/vars.a
$(EXOMIZER) -b build/passport.tmp -o build/passport.pak
cd src && $(ACME) -DFORWARD_DECRUNCHING=0 wrapper.a
cp res/work.po "$(BUILDDISK)".po

View File

@ -170,8 +170,11 @@ Reaction
sta gSector
sta gPatchCount
sta jCallRWTS+1
sta CacheDst+1
lda #$08
sta gAddress+1
lda #$D4
sta CacheDst+2
jsr ShowInitialProgressScreen
lda gMode
@ -226,6 +229,7 @@ TheEnd
beq HandleRedo
cmp #k_redo_with_ignore
beq HandleRedoWithIgnore
jsr CheckLogKeys
jmp MainMenu
HandleRedoWithIgnore
@ -462,4 +466,5 @@ LastMover
!warn "DiskIIArray=",DiskIIArray
!warn "HardDiskArray=",HardDiskArray
!warn "ThisSlot=",ThisSlot
!warn "CheckCache=",CheckCache
}

View File

@ -183,3 +183,198 @@ ClearScreen
bne @begin
@home
jmp HOME
;-------------------------------
; CheckCache
; Intercept text about to be scrolled off the screen
; Cache it in spare LC space for viewing later
;-------------------------------
CheckCache
ldx $25
cpx #$17
bne .nocache
ldx $24
cpx #$27
beq .docache
cmp #$8D
bne .nocache
.docache
pha
cmp #$8D
beq .skipcr
sta $7F7
.skipcr
bit $C081
bit $C081
ldx #$27
cachesrc
lda $700, x
CacheDst
sta $D400, x
dex
bpl cachesrc
lda CacheDst+1
adc #$27
sta CacheDst+1
bcc .skiphi
inc CacheDst+2
.skiphi
pla
.nocache
jmp $FDF0
;-------------------------------
; CheckLogKeys
; Enable scrolling of log, if more than once screen worth
; Left/Right (all)
; Up/Down (not II or II+)
;-------------------------------
CheckLogKeys
ldx CacheDst+1
ldy CacheDst+2
cpy #$D4
bne .yeslog
cpx #0
beq .nolog
.yeslog
stx .startline1+1
sty .startline1+2
stx .startline2+1
sty .startline2+2
pha
jsr .substart
pla
bmi .skipkey
.checkkey
jsr WaitForKey
.skipkey
cmp #k_left
beq .checkup
cmp #k_up
beq .checkup
cmp #k_right
beq .checkdown
cmp #k_down
beq .checkdown
.nolog
rts
.checkup
lda .startline1+2
cmp #$D4
bne .scrollup
lda .startline1+1
beq .checkkey
.scrollup
jsr .substart
bit $C081
bit $C081
ldx #$27
.copyend1
lda $7D0,x
.endline1
sta $D428,x
dex
bpl .copyend1
ldx #22
.scrollscreen
txa
jsr $FBC1 ;BASCALC
lda $28
sta $2A
lda $29
sta $2B
inx
txa
jsr $FBC1 ;BASCALC
ldy #$27
.copyline
lda ($2A),y
sta ($28),y
dey
bpl .copyline
dex
dex
cpx #5
bne .scrollscreen
bit $C083
ldx #$27
.copystart1
.startline1
lda $D400,x
sta $700,x
dex
bpl .copystart1
bit $C081
jmp .checkkey
.checkdown
lda .endline1+2
cmp CacheDst+2
bne .scrolldown
lda .endline1+1
cmp CacheDst+1
beq .checkkey
.scrolldown
bit $C081
bit $C081
ldx #$27
.copystart2
lda $700,x
.startline2
sta $D400,x
dex
bpl .copystart2
lda #$8D
jsr $FDF0
bit $C083
bit $C083
ldx #$27
.copyend2
.endline2
lda $D428,x
sta $7D0,x
dex
bpl .copyend2
bit $C081
jsr .addstart
jmp .checkkey
.substart
sec
lda .startline1+1
sta .endline1+1
sta .endline2+1
sbc #$28
sta .startline1+1
sta .startline2+1
lda .startline1+2
sta .endline1+2
sta .endline2+2
sbc #0
sta .startline1+2
sta .startline2+2
rts
.addstart
clc
lda .endline1+1
sta .startline1+1
sta .startline2+1
adc #$28
sta .endline1+1
sta .endline2+1
lda .endline1+2
sta .startline1+2
sta .startline2+2
adc #0
sta .endline1+2
sta .endline2+2
rts

View File

@ -10,6 +10,10 @@ k_slot = "S"
k_quit = "Q"
k_redo = "2" ;for some side 'B'
k_redo_with_ignore = $92; <Ctrl-R>
k_left = $88
k_right = $95
k_up = $8B
k_down = $8A
; <Esc> will also quit
!source "strings/enid.a"

View File

@ -49,6 +49,10 @@ OneTimeSetup
jsr ScanForRAMAndHardDisks; scan for things that look like RAM disks or hard disks
jsr LoadPrefs ; load preferences (if available)
jsr ThisSlot
lda #<CheckCache
sta $36
lda #>CheckCache
sta $37
lda $FE
sta $03F2
lda $FF

View File

@ -50,6 +50,7 @@ for /f "tokens=4,* delims=:(" %%q in ('find "mliparam=" ..\build\out.txt') do ec
for /f "tokens=4,* delims=:(" %%q in ('find "OpenFile=" ..\build\out.txt') do echo %%q >> ..\build\vars.a
for /f "tokens=4,* delims=:(" %%q in ('find "ReadFile=" ..\build\out.txt') do echo %%q >> ..\build\vars.a
for /f "tokens=4,* delims=:(" %%q in ('find "CloseFile=" ..\build\out.txt') do echo %%q >> ..\build\vars.a
for /f "tokens=4,* delims=:(" %%q in ('find "CheckCache=" ..\build\out.txt') do echo %%q > ..\build\vars.a
cd ..\build
%EXOMIZER% raw -q -P23 -T4 -b passport.tmp -o passport.pak
cd ..\src