A2osX/BIN/EDIT.S.SCRN.txt

569 lines
8.8 KiB
Plaintext
Raw Normal View History

2016-01-04 07:25:43 +00:00
NEW
2017-12-22 21:24:30 +00:00
PREFIX /A2OSX.BUILD
AUTO 4,1
2016-01-04 07:25:43 +00:00
.LIST OFF
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.Init ldy #ScreenH
2016-01-04 07:25:43 +00:00
lda (pData),y
dec
>PUSHA
>LDYA L.SEQ.INIT
>SYSCALL PrintF.YA
2016-01-04 07:25:43 +00:00
bcs .9
lda #12
>SYSCALL PutChar.A
2016-01-04 07:25:43 +00:00
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
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateTopBar
2016-01-04 07:25:43 +00:00
bcs .9
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateViewPort
2016-01-04 07:25:43 +00:00
bcs .9
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateMain
2016-01-04 07:25:43 +00:00
.9 rts
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.UpdateTopBar
lda #1
jsr SCRN.InvLineA
bcs .9
2016-01-21 07:05:23 +00:00
ldy #hFileName
2016-01-04 07:25:43 +00:00
lda (pData),y
beq .1
>SYSCALL GetMemPtr.A
2016-01-04 07:25:43 +00:00
bra .2
.1 >LDYA L.MSG.NEWFILE
.2 >PUSHYA
>LDYA L.MSG.TOPBAR
>SYSCALL PrintF.YA
2016-01-04 07:25:43 +00:00
.9 rts
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.UpdateMain ldy #ScreenY
2016-01-04 07:25:43 +00:00
lda (pData),y
sta TmpIndex
iny
lda (pData),y
sta TmpIndex+1
lda #0
sta TmpByte
ldy #ViewPortH
lda (pData),y
2016-01-04 07:25:43 +00:00
sta TmpCount
.1 lda TmpIndex
ldx TmpIndex+1
2016-01-04 07:25:43 +00:00
jsr BUF.GetLineAX Y = line length
bcs .5
lda TmpByte
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateLineAtALenY
2016-01-04 07:25:43 +00:00
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
2016-01-21 07:05:23 +00:00
jmp SCRN.GotoCurXCurY
2016-01-04 07:25:43 +00:00
.5 ldx #0
ldy TmpByte
2016-01-04 07:25:43 +00:00
jsr GotoXY
bcs .9
>LDYA L.SEQ.CEOL
>SYSCALL PrintF.YA
2016-01-04 07:25:43 +00:00
bcs .9
inc TmpByte
dec TmpCount
2016-01-04 07:25:43 +00:00
bne .5
2016-01-21 07:05:23 +00:00
jmp SCRN.GotoCurXCurY
2016-01-04 07:25:43 +00:00
.9 rts
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.UpdateCurrentLine
2016-01-04 07:25:43 +00:00
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
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateLineAtALenY
2016-01-04 07:25:43 +00:00
.9 rts
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.UpdateLineAtALenY
2016-01-04 07:25:43 +00:00
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
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateAttrC
2016-01-04 07:25:43 +00:00
pla
bcs .11
>SYSCALL PutChar.A
2016-01-04 07:25:43 +00:00
.11 ply
plx
bcs .9
.2 iny
dex
bne .1
.3 sec
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateAttrC
2016-01-04 07:25:43 +00:00
bcs .9
>LDYA L.SEQ.CEOL
>SYSCALL PrintF.YA
2016-01-04 07:25:43 +00:00
bcs .9
2016-01-22 16:29:11 +00:00
rts
.9 jmp Ctrl.Q
2016-01-04 07:25:43 +00:00
*--------------------------------------
* CC = set INV, CS = set NORM
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.UpdateAttrC
bcc .1
2016-01-04 07:25:43 +00:00
bit bSelected
bpl .8
>LDYA L.SEQ.NORM
>SYSCALL PrintF.YA
2016-01-04 07:25:43 +00:00
bcs .9
stz bSelected
rts
.1 bit bSelected
bmi .8
>LDYA L.SEQ.INV
>SYSCALL PrintF.YA
2016-01-04 07:25:43 +00:00
bcs .9
lda #$ff
sta bSelected
.8 clc
2016-01-22 16:29:11 +00:00
rts
.9 jmp Ctrl.Q
2016-01-04 07:25:43 +00:00
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.UpdateStatusBar
lda #1
>PUSHA
ldy #ScreenH
lda (pData),y
>PUSHA
>LDYA L.MSG.GOTOXY
>SYSCALL PrintF.YA
bcs .9
>LDYA L.SEQ.INV
>SYSCALL PrintF.YA
bcs .9
2016-01-21 07:05:23 +00:00
ldy #PromptMode
2016-01-04 07:25:43 +00:00
lda (pData),y
bne .2
ldy #FileY
2016-01-04 07:25:43 +00:00
lda (pData),y
tax
iny
2016-01-04 07:25:43 +00:00
lda (pData),y
inx
bne .1
inc
.1 >PUSHA
txa
>PUSHA
2016-01-04 07:25:43 +00:00
ldy #FileX
lda (pData),y
inc
>PUSHA
ldy #FileLen+1
>PUSHB (pData),y
dey
>PUSHB (pData),y
>LDYA L.MSG.STATUSBAR
>SYSCALL PrintF.YA
bcs .9
lda #58
jsr SCRN.ClearEOLA
bcs .9
>LDYA L.SEQ.NORM
>SYSCALL PrintF.YA
bcs .9
2016-01-21 07:05:23 +00:00
jmp SCRN.GotoCurXCurY
.9 jmp Ctrl.Q
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
jsr SCRN.InvLineA
bcs .9
ldy #PromptMode
lda (pData),y
tax
2016-01-04 07:25:43 +00:00
>LDYA L.MSG.STATUSBAR,x
>SYSCALL PrintF.YA
2016-01-22 16:29:11 +00:00
bcs .9
rts
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.UpdateStatusBarErrA
sta .1+1
2016-01-09 22:33:47 +00:00
ldy #ScreenH
lda (pData),y
dec
jsr SCRN.InvLineA
bcs .9
.1 lda #$ff
>PUSHA
>LDYA L.MSG.STATUSBAR.E
>SYSCALL PrintF.YA
2016-01-22 16:29:11 +00:00
bcs .9
2016-01-04 07:25:43 +00:00
rts
2016-01-22 16:29:11 +00:00
.9 jmp Ctrl.Q
2016-01-04 07:25:43 +00:00
*--------------------------------------
SCRN.ClearEOLA pha
.1 pla
ldy #ScreenW
cmp (pData),y
bcs .8
inc
pha
lda #' '
>SYSCALL PutChar.A
bcc .1
plx
rts
.8 clc
.9 rts
*--------------------------------------
SCRN.InvLineA sta .2+1
lda #1
>PUSHA
lda .2+1
>PUSHA
>LDYA L.MSG.GOTOXY
>SYSCALL PrintF.YA
bcs .9
>LDYA L.SEQ.INV
>SYSCALL PrintF.YA
bcs .9
ldy #ScreenW
lda (pData),y
.1 pha
lda #' '
>SYSCALL PutChar.A
pla
bcs .9
dec
bne .1
lda #1
>PUSHA
.2 lda #$ff
>PUSHA
>LDYA L.MSG.GOTOXY
>SYSCALL PrintF.YA
.9 rts
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.GotoCurXCurY
ldy #CurX
2016-01-04 07:25:43 +00:00
lda (pData),y
tax
ldy #CurY
lda (pData),y
tay
GotoXY txa
inc
>PUSHA
tya
inc
inc
>PUSHA
>LDYA L.MSG.GOTOXY
>SYSCALL PrintF.YA
2016-01-22 16:29:11 +00:00
bcs .9
2016-01-04 07:25:43 +00:00
rts
2016-01-22 16:29:11 +00:00
.9 jmp Ctrl.Q
2016-01-04 07:25:43 +00:00
*--------------------------------------
2016-01-21 07:05:23 +00:00
SCRN.UpdateViewPort
lda #$ff
2016-01-04 07:25:43 +00:00
sta bNotRepaint
.1 ldy #FileX
lda (pData),y
ldy #ScreenX
cmp (pData),y
bcs .2 out of left border ?
ldy #ScreenX yes
2016-01-04 07:25:43 +00:00
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 ldy #FileY+1
2016-01-04 07:25:43 +00:00
lda (pData),y
tax
dey
lda (pData),y A,X = FileY
2016-01-04 07:25:43 +00:00
ldy #ScreenY
cmp (pData),y
iny
txa
2016-01-04 07:25:43 +00:00
sbc (pData),y
bcs .4 out of top border ?
ldy #ScreenY move viewport up one line....
2016-01-04 07:25:43 +00:00
lda (pData),y
sbc #0 CC from BCS
2016-01-04 07:25:43 +00:00
sta (pData),y
iny
lda (pData),y
sbc #0
sta (pData),y
2016-01-04 07:25:43 +00:00
bit bNotRepaint
bpl .3
jsr SCRN.scrollDn ...and move content one line down
2016-01-04 07:25:43 +00:00
bcc .3
2016-01-22 16:29:11 +00:00
jmp Ctrl.Q
2016-01-04 07:25:43 +00:00
.4 ldy #ScreenY+1
2016-01-04 07:25:43 +00:00
lda (pData),y
tax
dey
lda (pData),y
ldy #ViewPortHm1
clc
adc (pData),y
bcc .41
inx
.41 ldy #FileY A,X = screen bottom
cmp (pData),y
2016-01-04 07:25:43 +00:00
txa
iny FileY > screen bottom ?
2016-01-04 07:25:43 +00:00
sbc (pData),y
bcs .5 CS : fileY>= screen bottom
2016-01-04 07:25:43 +00:00
* clc from BCS
ldy #ScreenY move viewport down one line....
2016-01-04 07:25:43 +00:00
lda (pData),y
adc #1
sta (pData),y
iny
lda (pData),y
adc #0
sta (pData),y
bit bNotRepaint
2016-01-04 07:25:43 +00:00
bpl .4
jsr SCRN.scrollUp ...and move content one line up
2016-01-22 16:29:11 +00:00
bcs .9
bra .4
2016-01-04 07:25:43 +00:00
.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
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateMain
2016-01-04 07:25:43 +00:00
bcs .9
2016-01-21 07:05:23 +00:00
.6 jsr SCRN.UpdateStatusBar
2016-01-04 07:25:43 +00:00
bcs .9
2016-01-21 07:05:23 +00:00
jsr SCRN.GotoCurXCurY
2016-01-22 16:29:11 +00:00
bcs .9
rts
.9 jmp Ctrl.Q
2016-01-04 07:25:43 +00:00
*--------------------------------------
SCRN.scrollUp ldy #CurX
lda (pData),y
inc
>PUSHA
ldy #CurY
lda (pData),y
inc
inc
>PUSHA
>LDYA L.SEQ.SCROLLUP
>SYSCALL PrintF.YA
2016-01-04 07:25:43 +00:00
bcs .9
ldy #ScreenY+1
lda (pData),y
tax
dey
lda (pData),y
clc
ldy #ViewPortHm1
adc (pData),y
2016-01-04 07:25:43 +00:00
bcc .1
inx
.1 jsr BUF.GetLineAX
bcs .9
ldy #ViewPortHm1
lda (pData),y
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateLineAtALenY
2016-01-04 07:25:43 +00:00
bcs .9
2016-01-22 16:29:11 +00:00
rts
.9 jmp Ctrl.Q
2016-01-04 07:25:43 +00:00
*--------------------------------------
SCRN.scrollDn ldy #CurX
lda (pData),y
inc
>PUSHA
2016-01-04 07:25:43 +00:00
ldy #CurY
lda (pData),y
inc
inc
>PUSHA
>LDYA L.SEQ.SCROLLDN
>SYSCALL PrintF.YA
bcs .9
ldy #ScreenY+1
lda (pData),y
tax
dey
lda (pData),y
jsr BUF.GetLineAX
2016-01-04 07:25:43 +00:00
bcs .9
lda #0
2016-01-21 07:05:23 +00:00
jsr SCRN.UpdateLineAtALenY
2016-01-04 07:25:43 +00:00
bcs .9
2016-01-22 16:29:11 +00:00
rts
.9 jmp Ctrl.Q
2016-01-04 07:25:43 +00:00
*--------------------------------------
MAN
SAVE /A2OSX.SRC/BIN/EDIT.S.SCRN
LOAD /A2OSX.SRC/BIN/EDIT.S
2016-01-04 07:25:43 +00:00
ASM