A2osX/BIN/EDIT.S.SCRN.txt
2016-01-06 23:07:28 +01:00

456 lines
6.9 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
InitScreen ldy #ScreenH
lda (pData),y
dec
>PUSHA
>LDYA L.SEQ.INIT
>SYSCALL SYS.PSTRoutYA
bcs .9
lda #12
>SYSCALL SYS.CoutA
bcs .9
lda #0
ldy #FileX
sta (pData),y
ldy #FileY
sta (pData),y
iny
sta (pData),y
ldy #ScreenX
sta (pData),y
ldy #ScreenY
sta (pData),y
iny
sta (pData),y
jsr UpdateTopBar
bcs .9
jsr UpdateViewPort
bcs .9
jsr UpdateMain
.9 rts
*--------------------------------------
UpdateTopBar ldy #hFileName
lda (pData),y
beq .1
>SYSCALL SYS.GetMemPtrA
bra .2
.1 >LDYA L.MSG.NEWFILE
.2 >PUSHYA
>LDYA L.MSG.TOPBAR
>SYSCALL SYS.PSTRoutYA
bcs .9
clc
.9 rts
*--------------------------------------
UpdateMain ldy #ScreenY
lda (pData),y
sta TmpIndex
iny
lda (pData),y
sta TmpIndex+1
lda #0
sta TmpByte
ldy #ScreenH
lda (pData),y
dec
dec
sta TmpCount
.1 >LDAX TmpIndex
jsr BUF.GetLineAX Y = line length
bcs .5
lda TmpByte
jsr UpdateLineAtALenY
bcs .9
.3 inc TmpByte
inc TmpIndex
bne .4
inc TmpIndex+1
.4 dec TmpCount
bne .1
jmp GotoCurXCurY
.5 ldx #0
ldy TmpByte
jsr GotoXY
bcs .9
>LDYA L.SEQ.CEOL
>SYSCALL SYS.PSTROutYA
bcs .9
inc TmpByte
dec TmpCount
bne .5
jmp GotoCurXCurY
.9 rts
*--------------------------------------
UpdateCurrentLine
ldy #ScreenY+1
lda (pData),y
tax
dey
lda (pData),y
clc
ldy #CurY
adc (pData),y
bcc .1
inx
.1 jsr BUF.GetLineAX
bcs .9
phy
ldy #CurY
lda (pData),y
ply
jsr UpdateLineAtALenY
.9 rts
*--------------------------------------
UpdateLineAtALenY
stz bSelected
sty TmpLen
ldx #0
tay
jsr GotoXY
bcs .9
ldy #ScreenW
lda (pData),y
tax
ldy #ScreenX
lda (pData),y
tay
.1 cpy TmpLen
bcs .3
jsr BUF.GetCharAtY
beq .3
cmp #13
beq .3
phx
phy
pha
jsr BUF.CheckSelected
jsr UpdateAttrC
pla
bcs .11
>SYSCALL SYS.COutA
.11 ply
plx
bcs .9
.2 iny
dex
bne .1
.3 sec
jsr UpdateAttrC
bcs .9
>LDYA L.SEQ.CEOL
>SYSCALL SYS.PSTRoutYA
bcs .9
clc
.9 rts
*--------------------------------------
* CC = set INV, CS = set NORM
*--------------------------------------
UpdateAttrC bcc .1
bit bSelected
bpl .8
>LDYA L.SEQ.NORM
>SYSCALL SYS.PSTRoutYA
bcs .9
stz bSelected
rts
.1 bit bSelected
bmi .8
>LDYA L.SEQ.INV
>SYSCALL SYS.PSTRoutYA
bcs .9
lda #$ff
sta bSelected
.8 clc
.9 rts
*--------------------------------------
UpdateStatusBar ldy #PromptMode
lda (pData),y
tax
bne .2
ldy #FileY+1
lda (pData),y
tax
dey
lda (pData),y
inc
bne .1
inx
.1 >PUSHAX
ldy #FileX
lda (pData),y
inc
>PUSHA
ldy #FileLen+1
>PUSHB (pData),y
dey
>PUSHB (pData),y
ldy #ScreenH
lda (pData),y
>PUSHA
>LDYA L.MSG.STATUSBAR
>SYSCALL SYS.PSTRoutYA
bcs .9
jmp GotoCurXCurY
.2 cmp #PromptModeHelp
beq .3
>PUSHW pData
.3 ldy #ScreenH
lda (pData),y
>PUSHA
>LDYA L.MSG.STATUSBAR,x
>SYSCALL SYS.PSTRoutYA
.9 rts
*--------------------------------------
UpdateStatusBarErrA
>PUSHA
>LDYA L.MSG.STATUSBAR.E
>SYSCALL SYS.PSTRoutYA
rts
*--------------------------------------
GotoCurXCurY ldy #CurX
lda (pData),y
tax
ldy #CurY
lda (pData),y
tay
GotoXY txa
inc
>PUSHA
tya
inc
inc
>PUSHA
>LDYA L.MSG.GOTOXY
>SYSCALL SYS.PSTRoutYA
rts
*--------------------------------------
UpdateViewPort lda #$ff
sta bNotRepaint
.1 ldy #FileX
lda (pData),y
ldy #ScreenX
cmp (pData),y
bcs .2 out of left border ?
ldy #ScreenX
lda (pData),y
dec
sta (pData),y
stz bNotRepaint
bra .1
.2 clc
ldy #ScreenX
lda (pData),y
ldy #ScreenW
adc (pData),y
dec
ldy #FileX
cmp (pData),y
bcs .3 out of right border ?
ldy #ScreenX
lda (pData),y
inc
sta (pData),y
stz bNotRepaint
bra .2
.3 sec
ldy #FileY
lda (pData),y
ldy #ScreenY
sbc (pData),y
ldy #FileY+1
lda (pData),y
ldy #ScreenY+1
sbc (pData),y
bcs .4 out of top border ?
sec
ldy #ScreenY
lda (pData),y
sbc #1
sta (pData),y
iny
lda (pData),y
sbc #0
sta (pData),y
bit bNotRepaint
bpl .3
jsr scrollDn
bcc .3
rts
.4 clc
ldy #ScreenY
lda (pData),y
ldy #ScreenH
adc (pData),y
pha
ldy #ScreenY+1
lda (pData),y
adc #0
tax
pla
sec
sbc #3
bcs .41
dex
sec
.41 ldy #FileY
sbc (pData),y
txa
iny
sbc (pData),y
bcs .5 out of bottom border ?
clc
ldy #ScreenY
lda (pData),y
adc #1
sta (pData),y
iny
lda (pData),y
adc #0
sta (pData),y
bit bNotRepaint
bpl .4
jsr scrollUp
bcc .4
rts
.5 sec
ldy #FileX
lda (pData),y
ldy #ScreenX
sbc (pData),y
ldy #CurX
sta (pData),y
sec
ldy #FileY
lda (pData),y
ldy #ScreenY
sbc (pData),y
ldy #CurY
sta (pData),y
bit bNotRepaint
bmi .6
jsr UpdateMain
bcs .9
.6 jsr UpdateStatusBar
bcs .9
jsr GotoCurXCurY
.9 rts
*--------------------------------------
scrollUp lda #$1B
>SYSCALL SYS.CoutA
bcs .9
lda #'M'
>SYSCALL SYS.CoutA
bcs .9
ldy #ScreenY+1
lda (pData),y
tax
dey
lda (pData),y
clc
adc #21
bcc .1
inx
.1 jsr BUF.GetLineAX
bcs .9
lda #21
jsr UpdateLineAtALenY
bcs .9
clc
.9 rts
*--------------------------------------
scrollDn lda #$1B
>SYSCALL SYS.CoutA
bcs .9
lda #'D'
>SYSCALL SYS.CoutA
bcs .9
ldy #ScreenY+1
lda (pData),y
tax
dey
lda (pData),y
jsr BUF.GetLineAX
bcs .9
lda #0
jsr UpdateLineAtALenY
bcs .9
clc
.9 rts
*--------------------------------------
MAN
SAVE BIN/EDIT.S.SCRN
LOAD BIN/EDIT.S
ASM