A2osX/BIN/EDIT.S.SCRN.txt

459 lines
6.9 KiB
Plaintext
Raw Normal View History

2016-01-04 07:25:43 +00:00
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
2016-01-04 07:25:43 +00:00
sta TmpCount
.1 >LDAX TmpIndex
jsr BUF.GetLineAX Y = line length
bcs .5
lda TmpByte
2016-01-04 07:25:43 +00:00
jsr UpdateLineAtALenY
bcs .9
.3 inc TmpByte
inc TmpIndex
2016-01-04 07:25:43 +00:00
bne .4
inc TmpIndex+1
.4 dec TmpCount
2016-01-04 07:25:43 +00:00
bne .1
jmp GotoCurXCurY
.5 ldx #0
ldy TmpByte
2016-01-04 07:25:43 +00:00
jsr GotoXY
bcs .9
>LDYA L.SEQ.CEOL
>SYSCALL SYS.PSTROutYA
bcs .9
inc TmpByte
dec TmpCount
2016-01-04 07:25:43 +00:00
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
2016-01-04 07:25:43 +00:00
.2 cmp #PromptModeHelp
beq .3
>PUSHW pData
.3 ldy #ScreenH
2016-01-04 07:25:43 +00:00
lda (pData),y
>PUSHA
>LDYA L.MSG.STATUSBAR,x
>SYSCALL SYS.PSTRoutYA
.9 rts
*--------------------------------------
UpdateStatusBarErrA
2016-01-09 22:33:47 +00:00
>PUSHA
ldy #ScreenH
lda (pData),y
>PUSHA
>LDYA L.MSG.STATUSBAR.E
>SYSCALL SYS.PSTRoutYA
2016-01-04 07:25:43 +00:00
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
2016-01-04 07:25:43 +00:00
lda (pData),y
ldy #ScreenW
adc (pData),y
dec
2016-01-04 07:25:43 +00:00
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
2016-01-04 07:25:43 +00:00
pha
ldy #ScreenY+1
2016-01-04 07:25:43 +00:00
lda (pData),y
adc #0
tax
pla
2016-01-04 07:25:43 +00:00
sec
sbc #3
bcs .41
dex
sec
.41 ldy #FileY
2016-01-04 07:25:43 +00:00
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