A2osX/BIN/LS.S.txt

284 lines
5.0 KiB
Plaintext
Raw Normal View History

PR#3
2015-06-03 18:30:57 +00:00
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
.OR $2000
2015-06-03 18:30:57 +00:00
.TF /A2OSX.BOOT/BIN/LS
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/LIBSTR.I
*--------------------------------------
ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2
*--------------------------------------
2015-06-03 18:30:57 +00:00
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
2015-06-03 18:30:57 +00:00
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START Code Length To Relocate
.DA DS.END-DS.START Data Segment to Allocate
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
2015-06-03 18:30:57 +00:00
L.LIBSTR .DA LIBSTR
L.MSG.VOL .DA MSG.VOL
L.MSG.DIR .DA MSG.DIR
L.MSG.FILE .DA MSG.FILE
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
.DA 0
*--------------------------------------
2015-06-03 18:30:57 +00:00
CS.INIT >LDYA L.LIBSTR
>SYSCALL SYS.LoadLibYA
sta hLIBSTR
2015-06-03 18:30:57 +00:00
2016-08-17 06:25:58 +00:00
>SYSCALL SYS.GetArgC
cmp #1
bne .1
2016-08-28 20:48:01 +00:00
ldy #S.PS.hPREFIX
lda (pPs),y
>SYSCALL SYS.GetMemPtrA
>SYSCALL SYS.NewPStrYA no arg, go get current prefix
stx hFullPath
bra .2
2015-06-03 18:30:57 +00:00
2016-08-17 06:25:58 +00:00
.1 lda #1
>SYSCALL SYS.GetArgA
2016-08-28 20:48:01 +00:00
>SYSCALL SYS.GetFullPathYA
stx hFullPath
.2 >SYSCALL SYS.OPENDIRYA
2016-08-28 20:48:01 +00:00
bcs .99
ldy #hDIR
2015-06-03 18:30:57 +00:00
sta (pData),y
2016-08-28 20:48:01 +00:00
jsr .99
2015-06-03 18:30:57 +00:00
lda (pPs)
ora #S.PS.F.EVENT Now accept events
2015-06-03 18:30:57 +00:00
sta (pPs)
2016-08-28 20:48:01 +00:00
clc
rts
2016-08-28 20:48:01 +00:00
.99 pha
lda hFullPath
>SYSCALL SYS.FreeMemA
pla
sec
2016-08-17 06:25:58 +00:00
rts
*--------------------------------------
2015-06-03 18:30:57 +00:00
CS.RUN ldy #bCANCEL
lda (pData),y
beq .1
sec
rts
2015-06-03 18:30:57 +00:00
.1 ldy #bSTOP
lda (pData),y
beq .2
clc
rts
.2 ldy #hDIR
2015-06-03 18:30:57 +00:00
lda (pData),y
>SYSCALL SYS.READDIRA
bcs .9
phx Save hDIRENT
>STYA ZPPtr1
.3 lda (ZPPtr1)
beq .8
lda ZPPtr1
sec
adc (ZPPtr1)
sta ZPPtr2
lda ZPPtr1+1
adc #0
sta ZPPtr2+1
ldy #S.STAT.PRODOS.TYPE
lda (ZPPtr2),y
cmp #$0F Directory ?
bne .31
lda #'/'
>SYSCALL SYS.COutA
.31 >LDYA ZPPtr1
>SYSCALL SYS.PStrOutYA
ldy #S.STAT.PRODOS.TYPE
lda (ZPPtr2),y
cmp #$0F Directory ?
beq .32
pha
lda #'.'
>SYSCALL SYS.COutA
pla
jsr FileType2PSTR
>SYSCALL SYS.PStrOutYA
.32
2015-06-03 18:30:57 +00:00
lda #13
>SYSCALL SYS.COutA
.7 lda ZPPtr2
clc
adc #S.STAT
sta ZPPtr1
lda ZPPtr2+1
adc #0
sta ZPPtr1+1
bra .3
.8 pla
>SYSCALL SYS.FreeMemA
clc
.9 rts
*--------------------------------------
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
lda (pEvent),y
ldy #S.PS.hINDEV
2015-06-03 18:30:57 +00:00
cmp (pPs),y
bne .9
2015-06-03 18:30:57 +00:00
lda (pEvent)
and #S.EVT.F.KEY is it a KEY event?
beq .9
2015-06-03 18:30:57 +00:00
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
lda (pEvent),y
bne .9
2015-06-03 18:30:57 +00:00
ldy #S.EVT.DATALO
lda (pEvent),y
cmp #$03 Ctrl-C
bne .1
2015-06-03 18:30:57 +00:00
lda #$FF
2015-06-03 18:30:57 +00:00
ldy #bCANCEL
sta (pData),y
bra .8
2015-06-03 18:30:57 +00:00
.1 cmp #$13 Ctrl-S
bne .8
2015-06-03 18:30:57 +00:00
ldy #bSTOP
lda (pData),y
eor #$FF
2015-06-03 18:30:57 +00:00
sta (pData),y
.8 clc
rts
.9 sec
rts
*--------------------------------------
CS.QUIT ldy #hDIR
2015-06-03 18:30:57 +00:00
lda (pData),y
>SYSCALL SYS.CLOSEDIRA
2015-06-03 18:30:57 +00:00
ldy #hDIRPATH
lda (pData),y
beq .3
>SYSCALL SYS.FreeMemA
.3 lda hLIBSTR
>SYSCALL SYS.UnloadLibA
clc
rts
*--------------------------------------
FileType2PSTR ldy #0
.1 cmp PRODOS.FT.HEX,y
beq .3
.2 iny
cpy #PRODOS.FT.TXT-PRODOS.FT.TXT
bne .1
pha
lsr
lsr
lsr
lsr
tax
lda HEXDIGIT,x
sta PRODOS.FT.DFLT+2
pla
and #$0F
tax
lda HEXDIGIT,x
sta PRODOS.FT.DFLT+3
.3 tya
asl
asl CC
adc L.PRODOS.FT.TXT
tay
lda L.PRODOS.FT.TXT+1
adc #0
rts
*--------------------------------------
CS.END
2015-06-03 18:30:57 +00:00
LIBSTR >PSTRING "libstr.o"
MSG.VOL >CSTRING "/%S\n"
MSG.DIR >CSTRING "/%15S <dir> %a %T %t %T %t\n"
MSG.FILE >CSTRING "%15S %S $%H %a %8L %T %t %T %t\n"
*--------------------------------------
PRODOS.FT.HEX .HS 0406FAFCFDE2FF
PRODOS.FT.TXT >PSTRING "TXT"
>PSTRING "BIN"
>PSTRING "S-C"
>PSTRING "BAS"
>PSTRING "VAR"
>PSTRING "ATK"
>PSTRING "SYS"
PRODOS.FT.DFLT >PSTRING "$ "
HEXDIGIT .AS '0123456789ABCDEF'
2015-06-03 18:30:57 +00:00
hLIBSTR .BS 1
2016-08-28 20:48:01 +00:00
hFullPath .BS 1
*--------------------------------------
2015-06-03 18:30:57 +00:00
.DUMMY
.OR 0
DS.START
hDIRPATH .BS 1
hDIR .BS 1
hVOLHEADER .BS 1
hDIRHEADER .BS 1
bSTOP .BS 1
bCANCEL .BS 1
DS.END
2015-06-03 18:30:57 +00:00
.ED
*--------------------------------------
MAN
SAVE BIN/LS.S
ASM