mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Complete Rewrite #4 : Still debbuging...
This commit is contained in:
parent
71a00af938
commit
5d49c27c79
BIN
A2OSX.BOOT.DSK
BIN
A2OSX.BOOT.DSK
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -59,16 +59,25 @@ A2osX.MLICALL1 jsr GO.MAINLC
|
||||
jsr GO.AUXLC
|
||||
rts
|
||||
*--------------------------------------
|
||||
A2osX.ROMCALL1 bra *
|
||||
A2osX.ROMCALL1 plx
|
||||
stx .1+1
|
||||
plx
|
||||
stx .1+2
|
||||
ldx RROMBNK1
|
||||
jsr .1
|
||||
ldx RRAMWRAMBNK1
|
||||
ldx RRAMWRAMBNK1
|
||||
rts
|
||||
.1 jmp $FFFF
|
||||
*--------------------------------------
|
||||
GO.MAINLC php
|
||||
clc
|
||||
bra GO.SAVE.REG
|
||||
.HS 2C bit abs
|
||||
|
||||
GO.AUXLC php
|
||||
sec
|
||||
|
||||
GO.SAVE.REG sta A2osX.SaveA
|
||||
sta A2osX.SaveA
|
||||
pla keep P in A for later
|
||||
stx A2osX.SaveX
|
||||
sty A2osX.SaveY
|
||||
@ -79,6 +88,10 @@ GO.SAVE.REG sta A2osX.SaveA
|
||||
iny
|
||||
.1 stx GO.EXIT.JMP+1
|
||||
sty GO.EXIT.JMP+2
|
||||
|
||||
ldx RRAMWRAMBNK1
|
||||
ldx RRAMWRAMBNK1
|
||||
|
||||
sei
|
||||
ldy pStack
|
||||
bcs GO.AUXLC1
|
||||
@ -88,7 +101,6 @@ GO.MAINLC1 tsx
|
||||
ldx A2osX.SaveSM
|
||||
txs
|
||||
stx CLRALTZP
|
||||
ldx RROMBNK1
|
||||
bra GO.EXIT
|
||||
*--------------------------------------
|
||||
GO.AUXLC1 stx SETALTZP
|
||||
@ -96,8 +108,6 @@ GO.AUXLC1 stx SETALTZP
|
||||
stx A2osX.SaveSM
|
||||
ldx A2osX.SaveSX
|
||||
txs
|
||||
ldx RRAMWRAMBNK1
|
||||
ldx RRAMWRAMBNK1
|
||||
*--------------------------------------
|
||||
GO.EXIT sty pStack
|
||||
pha push P on stack
|
||||
@ -110,39 +120,18 @@ GO.EXIT.JMP jmp $FFFF
|
||||
GO.Reset jsr GO.AUXLC
|
||||
jmp KERNEL.COLDBOOT
|
||||
*--------------------------------------
|
||||
S.PRBYTE pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$30
|
||||
cmp #$3A
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 jsr S.COUT
|
||||
pla
|
||||
and #$0F
|
||||
ora #$30
|
||||
cmp #$3A
|
||||
bcc S.COUT
|
||||
adc #6
|
||||
bra S.COUT
|
||||
*--------------------------------------
|
||||
S.CROUT lda #13
|
||||
*--------------------------------------
|
||||
S.COUT phx
|
||||
phy
|
||||
ldx #DEVMGR.COUT
|
||||
jsr pDevJmp
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
*--------------------------------------
|
||||
A2osX.SaveA .BS 1
|
||||
A2osX.SaveX .BS 1
|
||||
A2osX.SaveY .BS 1
|
||||
*--------------------------------------
|
||||
A2osX.GP.End .EQ *
|
||||
*--------------------------------------
|
||||
* CONTROL SECTION :
|
||||
*--------------------------------------
|
||||
.DO A2osX.GP.End>$BEBF
|
||||
ERROR:GP too big
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
A2osX.GP.SIZE .EQ A2osX.GP.END-A2osX.GP.START
|
||||
.BS A2osX.GP.START+$100-*
|
||||
.EP
|
||||
|
@ -76,7 +76,7 @@ PrintCStrAX >STAX TmpPtr1
|
||||
*--------------------------------------
|
||||
PrintADec ldx #0
|
||||
PrintAXDec >STAX HEX
|
||||
PrintDec stz BCD
|
||||
stz BCD
|
||||
stz BCD+1
|
||||
stz BCD+2
|
||||
|
||||
|
@ -6,7 +6,7 @@ AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF /A2OSX.BOOT/A
|
||||
.TF /A2OSX.BOOT/A2OSX
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
|
@ -3,21 +3,24 @@ PREFIX /A2OSX.BOOT
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
SET PATH=%A2OSX%SBIN/;%A2OSX%BIN/
|
||||
SET LIB=%A2OSX%LIB/
|
||||
LOAD %A2OSX%DRV/CONSOLE.DRV
|
||||
EXEC GETTY CON LOGIN
|
||||
*LOAD %A2OSX%DRV/SSC.DRV 9600 N 8 1 X
|
||||
*EXEC GETTY COM2 LOGIN
|
||||
*LOAD %A2OSX%DRV/PPIC.DRV
|
||||
LOAD %A2OSX%DRV/UTHERNET.DRV 000E3A123456
|
||||
EXEC TCPIP ETH3
|
||||
EXEC DHCPCLNT
|
||||
*EXEC TELNETD
|
||||
*MOUNT TFTP 192.168.1.5:/A2OSX /MNT/A2OSX
|
||||
*MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE
|
||||
*LOAD %A2OSX%DRV/DHGR.DRV
|
||||
*LOAD %A2OSX%DRV/MOUSE.DRV
|
||||
*EXEC GUI
|
||||
ECHO *** A2osX Startup file ***
|
||||
echo Env:
|
||||
SET
|
||||
INSDRV CONSOLE.DRV
|
||||
GETTY CON SBIN/LOGIN
|
||||
INSDRV UTHERNET.DRV 000E3A123456
|
||||
TCPIP ETH3
|
||||
DHCPCLNT
|
||||
#INSDRV SSC.DRV 9600 N 8 1 X
|
||||
#GETTY COM2 SBIN/LOGIN
|
||||
#INSDRV PPIC.DRV
|
||||
#TELNETD
|
||||
#MOUNT TFTP 192.168.1.5:/A2OSX /MNT/A2OSX
|
||||
#MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE
|
||||
INSDRV DHGR.DRV
|
||||
INSDRV MOUSE.DRV
|
||||
GUI
|
||||
PS
|
||||
ECHO *** End A2osX Startup file ***
|
||||
MAN
|
||||
TEXT A2OSX.STARTUP
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
@ -48,11 +46,11 @@ L.MSG2 .DA MSG2
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
>LDYA L.LIBTCPIP
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBTCPIP
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
@ -139,7 +137,7 @@ CS.RUN lda #ARP.TIMEOUT
|
||||
|
||||
lda TimeOut
|
||||
beq .9
|
||||
jsr A2osX.SLEEP
|
||||
>SYSCALL SYS.Sleep
|
||||
bra .1
|
||||
|
||||
.2 ldx #5
|
||||
|
@ -77,7 +77,12 @@ EXP.Eval stz EXP.Operator
|
||||
lda (pData),y pass#2?
|
||||
bne .96 yes, undefined symbol
|
||||
|
||||
jsr
|
||||
|
||||
|
||||
bra *
|
||||
|
||||
|
||||
|
||||
|
||||
.41 ldx #3
|
||||
.5 lda SRC.FLabel.Value,x
|
||||
|
@ -65,9 +65,9 @@ FIO.OpenFileA sta FIO.hFileName
|
||||
>SYSCALL SYS.MLIGetFileInfoA
|
||||
bcs .99
|
||||
|
||||
>STYA ZPQuickPtr1
|
||||
>STYA ZPPtr1
|
||||
ldy #1
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
tax
|
||||
|
||||
ldy #SRC.COUNT
|
||||
|
@ -107,7 +107,7 @@ SYM.Dump >PUSHW L.MSG.SYMBOLS
|
||||
|
||||
>PUSHW L.MSG.GSYMBOL
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
* bcs .9
|
||||
bcs .9
|
||||
|
||||
.4 jsr SYM.GetByteGBlock
|
||||
beq .5 End Locals...proceed next Global
|
||||
@ -119,11 +119,10 @@ SYM.Dump >PUSHW L.MSG.SYMBOLS
|
||||
>PUSHA
|
||||
>PUSHW L.MSG.LSYMBOL
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
* bcc .4
|
||||
bra .4
|
||||
bcc .4
|
||||
|
||||
.5 lda #13
|
||||
jsr COUT
|
||||
>SYSCALL SYS.CoutA
|
||||
|
||||
ldy #SYM.DumpCount
|
||||
lda (pData),y
|
||||
|
@ -10,7 +10,6 @@ AUTO 6
|
||||
*---------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/LIBSTR.I
|
||||
*---------------------------------------
|
||||
ZPPtr1 .EQ ZPBIN
|
||||
@ -139,7 +138,7 @@ J.LI .DA DIR.LI.CON
|
||||
.DA 0
|
||||
*---------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
@ -342,15 +341,6 @@ CS.QUIT jsr FIO.FileClose
|
||||
clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
COUT phx
|
||||
phy
|
||||
ldx #DEVMGR.COUT
|
||||
jsr pDevJmp
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
pDevJmp jmp (pDev)
|
||||
*---------------------------------------
|
||||
.INB BIN/ASM.S.DIR
|
||||
.INB BIN/ASM.S.EXP
|
||||
.INB BIN/ASM.S.FIO
|
||||
|
@ -6,23 +6,26 @@ AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF BIN/CHTYP
|
||||
.TF /A2OSX.BOOT/BIN/CHTYP
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
* Main entry point
|
||||
*--------------------------------------
|
||||
* Code signature and INIT table
|
||||
*--------------------------------------
|
||||
* CLD $D8
|
||||
* JMP (*,x) $7C
|
||||
* #JMPTABLE
|
||||
* /JMPTABLE
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
jmp (.1,x)
|
||||
.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
|
||||
@ -37,11 +40,11 @@ L.MSG.VOL.END .DA MSG.VOL.END
|
||||
L.MSG.DIR.END .DA MSG.DIR.END
|
||||
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA DS.END-DS.START Data Segment to Allocate
|
||||
*--------------------------------------
|
||||
CS.INIT >LIBLOADP L.LIB.LIBSTR
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
stz hDIRPATH
|
||||
stz hS.LISTDIR
|
||||
stz hVOLHEADER
|
||||
@ -50,7 +53,7 @@ CS.INIT >LIBLOADP L.LIB.LIBSTR
|
||||
stz bCANCEL
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
beq .99 no arg, exit with err=0
|
||||
|
||||
>PUSHA
|
||||
@ -76,25 +79,25 @@ CS.INIT >LIBLOADP L.LIB.LIBSTR
|
||||
bra .2
|
||||
|
||||
.10 ldy #S.PS.hARGS
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
>SYSCALL SYS.PStrCat
|
||||
sta hDIRPATH
|
||||
bra .3
|
||||
|
||||
.1 ldy #S.PS.hPREFIX
|
||||
.2 lda (pPsContext),y
|
||||
.2 lda (pPs),y
|
||||
|
||||
.3 >SYSCALL SYS.ListDirInitA
|
||||
bcs .98
|
||||
sta hS.LISTDIR
|
||||
|
||||
lda (pPsContext)
|
||||
lda (pPs)
|
||||
ora #S.PS.F.EVENT Now accept events
|
||||
sta (pPsContext)
|
||||
sta (pPs)
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -313,7 +316,7 @@ Push.Footer lda hVOLHEADER
|
||||
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
lda (pEvent),y
|
||||
ldy #S.PS.hINDEV
|
||||
cmp (pPsContext),y
|
||||
cmp (pPs),y
|
||||
bne .9
|
||||
lda (pEvent)
|
||||
and #S.EVT.F.KEY is it a KEY event?
|
||||
|
@ -3,15 +3,13 @@ PREFIX /A2OSX.SRC
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST ON
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF /A2OSX.BOOT/BIN/DNS
|
||||
.TF /A2OSX.BOOT/BIN/DNSINFO
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
@ -49,11 +47,11 @@ CS.INIT stz hHostName
|
||||
stz hIP
|
||||
|
||||
>LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
>LDYA L.LIBTCPIP
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBTCPIP
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
@ -201,5 +199,5 @@ hIP .BS 1
|
||||
IP .BS 4
|
||||
DNSNAME .BS K.DNS.MAXLEN+1
|
||||
MAN
|
||||
SAVE BIN/DNS.S
|
||||
SAVE BIN/DNSINFO.S
|
||||
ASM
|
@ -9,9 +9,7 @@ AUTO 6
|
||||
.TF /A2OSX.BOOT/BIN/EDIT
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
@ -44,17 +42,14 @@ CS.INIT lda #0
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
lda #12
|
||||
jsr COUT
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPs),y
|
||||
beq .7
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
>STYA ZPPTR1
|
||||
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPTR1)
|
||||
cmp #'/'
|
||||
bne .10
|
||||
|
||||
@ -83,18 +78,27 @@ CS.INIT lda #0
|
||||
bcs .9
|
||||
>LDYAI 0
|
||||
|
||||
.8 pha
|
||||
.8 pha Y,A = len,X=hMem
|
||||
tya
|
||||
ldy #FileLen
|
||||
sta (pData),y
|
||||
iny
|
||||
pla
|
||||
sta (pData),y
|
||||
|
||||
txa
|
||||
ldy #hBuffer
|
||||
txa
|
||||
sta (pData),y
|
||||
|
||||
lda #$80
|
||||
ldy #bSaved
|
||||
sta (pData),y
|
||||
ldy #bInsert
|
||||
sta (pData),y
|
||||
|
||||
lda #12
|
||||
jsr COUT
|
||||
|
||||
lda (pPs)
|
||||
ora #S.PS.F.EVENT Now accept events
|
||||
sta (pPs)
|
||||
@ -135,7 +139,7 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
sta (pData),y
|
||||
bra .8
|
||||
|
||||
.1
|
||||
.1 cmp #$20
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
@ -143,30 +147,13 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda #12
|
||||
jsr COUT
|
||||
CS.QUIT ldy #hBuffer
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
PRBYTE pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$B0
|
||||
cmp #$BA
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 jsr COUT
|
||||
pla
|
||||
and #$0F
|
||||
ora #$B0
|
||||
cmp #$BA
|
||||
bcc COUT
|
||||
adc #6
|
||||
bra COUT
|
||||
*--------------------------------------
|
||||
CROUT lda #13
|
||||
*--------------------------------------
|
||||
COUT phx
|
||||
@ -176,7 +163,6 @@ COUT phx
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
pDevJmp jmp (pDev)
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
@ -187,9 +173,10 @@ bCANCEL .BS 1
|
||||
hFileName .BS 1
|
||||
hBuffer .BS 1
|
||||
FileLen .BS 2
|
||||
xPos .BS 2
|
||||
yPos .BS 2
|
||||
|
||||
cPos .BS 1
|
||||
rPos .BS 2
|
||||
bInsert .BS 1
|
||||
bSaved .BS 1
|
||||
DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
|
101
BIN/LS.S.txt
101
BIN/LS.S.txt
@ -10,9 +10,12 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
ZPPtr1 .EQ ZPBIN
|
||||
ZPPtr2 .EQ ZPBIN+2
|
||||
ZPPtr3 .EQ ZPBIN+4
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
@ -43,7 +46,7 @@ L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
lda #0
|
||||
@ -57,11 +60,11 @@ CS.INIT >LDYA L.LIBSTR
|
||||
beq .1 no arg, go get current prefix
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
lda (ZPQuickPtr1)
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
beq .1
|
||||
ldy #1
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
cmp #'/' full path starting with '/'?
|
||||
bne .10 no, append to current prefix
|
||||
|
||||
@ -89,18 +92,18 @@ CS.INIT >LDYA L.LIBSTR
|
||||
pla
|
||||
pha
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
lda (ZPQuickPtr1)
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
tay
|
||||
lda #'/'
|
||||
cmp (ZPQuickPtr1),y
|
||||
cmp (ZPPtr1),y
|
||||
beq .31
|
||||
iny
|
||||
sta (ZPQuickPtr1),y
|
||||
sta (ZPPtr1),y
|
||||
|
||||
.31 iny
|
||||
lda #'*'
|
||||
sta (ZPQuickPtr1),y
|
||||
sta (ZPPtr1),y
|
||||
|
||||
.4 pla
|
||||
>SYSCALL SYS.ListDirInitA
|
||||
@ -138,12 +141,12 @@ CS.RUN ldy #bCANCEL
|
||||
|
||||
.3 pha
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
lda (ZPQuickPtr1)
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
pha
|
||||
|
||||
and #$0F
|
||||
sta (ZPQuickPtr1) Adjust Filename len
|
||||
sta (ZPPtr1) Adjust Filename len
|
||||
|
||||
pla
|
||||
and #$F0
|
||||
@ -153,7 +156,7 @@ CS.RUN ldy #bCANCEL
|
||||
pla
|
||||
ldy #hVOLHEADER
|
||||
sta (pData),y
|
||||
>PUSHW ZPQuickPtr1
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW L.MSG.VOL.HEADER
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
clc
|
||||
@ -166,7 +169,7 @@ CS.RUN ldy #bCANCEL
|
||||
ldy #hDIRHEADER
|
||||
sta (pData),y
|
||||
|
||||
>PUSHW ZPQuickPtr1
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW L.MSG.DIR.HEADER
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
clc
|
||||
@ -183,7 +186,7 @@ CS.RUN ldy #bCANCEL
|
||||
.5 cmp #$C0 Volume Name ?
|
||||
bne .6
|
||||
|
||||
>PUSHW ZPQuickPtr1
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW L.MSG.VOL
|
||||
bra .8
|
||||
|
||||
@ -199,55 +202,55 @@ CS.RUN ldy #bCANCEL
|
||||
rts
|
||||
*--------------------------------------
|
||||
Push.Dir ldy #$1E get access mask
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
>PUSHW ZPQuickPtr1
|
||||
>PUSHW ZPPtr1
|
||||
rts
|
||||
*--------------------------------------
|
||||
Push.File >PUSHBI 0 4th byte of file len=0
|
||||
ldy #$17 get file len (3 bytes)
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
ldy #$1E get access mask
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
ldy #$20 get aux type
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
ldy #$10 get filetype
|
||||
|
||||
lda L.PRODOS.FT.TXT
|
||||
sta ZPQuickPtr2
|
||||
sta ZPPtr2
|
||||
lda L.PRODOS.FT.TXT+1
|
||||
sta ZPQuickPtr2+1
|
||||
sta ZPPtr2+1
|
||||
ldx #0
|
||||
|
||||
.1 lda (ZPQuickPtr1),y
|
||||
.1 lda (ZPPtr1),y
|
||||
cmp PRODOS.FT.ID,x
|
||||
beq .3
|
||||
lda ZPQuickPtr2
|
||||
lda ZPPtr2
|
||||
clc
|
||||
adc #4
|
||||
sta ZPQuickPtr2
|
||||
sta ZPPtr2
|
||||
bcc .2
|
||||
inc ZPQuickPtr2+1
|
||||
inc ZPPtr2+1
|
||||
.2 inx
|
||||
cpx PRODOS.FT.COUNT
|
||||
bne .1
|
||||
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
@ -255,41 +258,41 @@ Push.File >PUSHBI 0 4th byte of file len=0
|
||||
tax
|
||||
lda HEXDIGIT,x
|
||||
sta PRODOS.FT.DFLT+2
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
and #$0F
|
||||
tax
|
||||
lda HEXDIGIT,x
|
||||
sta PRODOS.FT.DFLT+3
|
||||
|
||||
.3 >PUSHW ZPQuickPtr2
|
||||
>PUSHW ZPQuickPtr1
|
||||
.3 >PUSHW ZPPtr2
|
||||
>PUSHW ZPPtr1
|
||||
>LIBCALL hLIBSTR,LIBSTR.LCASEP
|
||||
>PUSHW ZPQuickPtr1
|
||||
>PUSHW ZPPtr1
|
||||
rts
|
||||
*--------------------------------------
|
||||
Push.Dates ldy #$24 get modification time
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
ldy #$22
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
ldy #$1B get creation time
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
ldy #$19
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -298,13 +301,13 @@ Push.Footer ldy #hVOLHEADER
|
||||
beq .20
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #$22 file_count
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
>PUSHW L.MSG.VOL.END
|
||||
@ -315,13 +318,13 @@ Push.Footer ldy #hVOLHEADER
|
||||
beq .21
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #$22 file_count
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
>PUSHW L.MSG.DIR.END
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
@ -42,7 +40,7 @@ L.MSG1 .DA MSG1
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
bcs .9
|
||||
sta hLIBSTR
|
||||
|
||||
|
@ -9,9 +9,7 @@ AUTO 6
|
||||
.TF /A2OSX.BOOT/BIN/MD
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
@ -123,7 +121,6 @@ COUT phx
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
pDevJmp jmp (pDev)
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
hFullPath .BS 1
|
||||
|
@ -9,9 +9,7 @@ AUTO 6
|
||||
.TF /A2OSX.BOOT/BIN/MEM
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
PAGELEN .EQ 22
|
||||
@ -49,7 +47,7 @@ L.MSG6 .DA MSG6
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
bcs .9
|
||||
sta hLIBSTR
|
||||
|
||||
@ -330,7 +328,6 @@ COUT phx
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
pDevJmp jmp (pDev)
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
LIBSTR >PSTRING "libstr.o"
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
@ -52,11 +50,11 @@ CS.INIT ldy #S.PS.hARGS
|
||||
rts
|
||||
|
||||
.1 >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
>LDYA L.LIBTCPIP
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBTCPIP
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
||||
|
@ -6,12 +6,10 @@ AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF /A2OSX.BOOT/BIN/NETCFG
|
||||
.TF /A2OSX.BOOT/BIN/NETINFO
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
@ -55,7 +53,7 @@ L.MSG1.END .DA MSG1.END
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
lda #K.PROTOID.IP
|
||||
@ -200,5 +198,5 @@ MSG1.DOMAIN >CSTRING ".%s"
|
||||
MSG1.END >CSTRING "\nEnd of network configuration.\n"
|
||||
hLIBSTR .BS 1
|
||||
MAN
|
||||
SAVE BIN/NETCFG.S
|
||||
SAVE BIN/NETINFO.S
|
||||
ASM
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
@ -20,6 +18,7 @@ PING.TIMEOUT .EQ 40 40*100ms = 4 sec.
|
||||
ZPFrameBase1 .EQ ZPBIN
|
||||
ZPFrameLen1 .EQ ZPBIN+2
|
||||
ZPFramePtr1 .EQ ZPBIN+4
|
||||
ZPIPCfgPtr .EQ ZPBIN+6
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -54,22 +53,22 @@ CS.INIT ldy #S.PS.hARGS
|
||||
rts
|
||||
|
||||
.1 >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
>LDYA L.LIBTCPIP
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBTCPIP
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
||||
bcs .9
|
||||
>STYA ZPQuickPtr1
|
||||
>STYA ZPIPCfgPtr
|
||||
|
||||
lda (ZPQuickPtr1) Configured ?
|
||||
lda (ZPIPCfgPtr) Configured ?
|
||||
bpl .9
|
||||
|
||||
ldy #S.IPCFG.HDEV
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPIPCfgPtr),y
|
||||
sta hDev
|
||||
|
||||
lda A2OSX.RANDOM16
|
||||
@ -113,7 +112,7 @@ CS.RUN.DNSQUERY >PUSHW pData DST.IP
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.QUERY
|
||||
bcc CS.RUN.IPOK
|
||||
|
||||
jsr A2osX.SLEEP
|
||||
>SYSCALL SYS.Sleep
|
||||
ldy #TimeOut
|
||||
lda (pData),y
|
||||
bne CS.RUN.DNSQUERY
|
||||
@ -212,7 +211,7 @@ CS.RUN.ECHO >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ICMP.FRAME
|
||||
bcc .4
|
||||
jsr A2osX.SLEEP
|
||||
>SYSCALL SYS.Sleep
|
||||
ldy #TimeOut
|
||||
lda (pData),y
|
||||
bne .3
|
||||
@ -228,7 +227,7 @@ CS.RUN.ECHO >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME
|
||||
ldy #TimeOut
|
||||
sta (pData),y
|
||||
|
||||
CS.RUN.WAIT jsr A2osX.SLEEP
|
||||
CS.RUN.WAIT >SYSCALL SYS.Sleep
|
||||
ldy #bReply
|
||||
lda (pData),y
|
||||
bne .1
|
||||
@ -257,7 +256,7 @@ CS.RUN.WAIT jsr A2osX.SLEEP
|
||||
lda (pData),y
|
||||
beq .2
|
||||
|
||||
jsr A2osX.SLEEP
|
||||
>SYSCALL SYS.Sleep
|
||||
bra .1
|
||||
|
||||
.2 jmp CS.RUN.ECHO
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
@ -43,7 +41,7 @@ L.MSG2 .DA MSG2
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLibStr
|
||||
clc
|
||||
rts
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
ZPListDirPTR .EQ ZPBIN
|
||||
*--------------------------------------
|
||||
@ -250,7 +248,6 @@ COUT phx
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
pDevJmp jmp (pDev)
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
FullPath .BS 64
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
@ -20,6 +18,7 @@ RPCINFO.TIMEOUT .EQ 40 40*100ms = 4 sec.
|
||||
ZPFrameBase1 .EQ ZPBIN
|
||||
ZPFrameLen1 .EQ ZPBIN+2
|
||||
ZPFramePtr1 .EQ ZPBIN+4
|
||||
ZPIPCfgPtr .EQ ZPBIN+6
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -54,22 +53,22 @@ CS.INIT ldy #S.PS.hARGS
|
||||
rts
|
||||
|
||||
.1 >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
>LDYA L.LIBTCPIP
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBTCPIP
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
||||
bcs .9
|
||||
>STYA ZPQuickPtr1
|
||||
>STYA ZPIPCfgPtr
|
||||
|
||||
lda (ZPQuickPtr1) Configured ?
|
||||
lda (ZPIPCfgPtr) Configured ?
|
||||
bpl .9
|
||||
|
||||
ldy #S.IPCFG.HDEV
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPIPCfgPtr),y
|
||||
sta hDev
|
||||
|
||||
lda A2OSX.RANDOM16
|
||||
|
@ -6,23 +6,26 @@ AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF BIN/TEST
|
||||
.TF /A2OSX.BOOT/BIN/TEST
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
* Main entry point
|
||||
*--------------------------------------
|
||||
* Code signature and INIT table
|
||||
*--------------------------------------
|
||||
* CLD $D8
|
||||
* JMP (*,x) $7C
|
||||
* #JMPTABLE
|
||||
* /JMPTABLE
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
jmp (.1,x)
|
||||
.DA #$61 6502,Level 1 (65c02)
|
||||
.DA #1 BIN Layout Version 1
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.EVENT
|
||||
@ -39,21 +42,20 @@ L.TEST1 .DA TEST1
|
||||
L.TEST2 .DA TEST2
|
||||
L.TEST3 .DA TEST3
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA 0 Data Segment to Allocate
|
||||
*--------------------------------------
|
||||
CS.INIT >LIBLOADP L.LIBSTR
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>PUSHW L.MSG0
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
ldy #S.PS.hCS
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
>SYSCALL SYS.GetMemByIDA
|
||||
>STYA ZPQuickPtr1
|
||||
ldy #S.MEM.BIN
|
||||
@ -64,18 +66,18 @@ CS.INIT >LIBLOADP L.LIBSTR
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
ldy #S.PS.hCMD
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>PUSHW L.MSG2
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
ldy #S.PS.hENV
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPBIN
|
||||
|
||||
@ -163,10 +165,8 @@ CROUT lda #13
|
||||
*--------------------------------------
|
||||
COUT phx
|
||||
phy
|
||||
>PUSHA
|
||||
ldy #S.PS.hOUTDEV
|
||||
lda (pPsContext),y
|
||||
>SYSCALL SYS.DevOutA
|
||||
ldx #DEVMGR.COUT
|
||||
jsr pDevJmp
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/IO.I
|
||||
*--------------------------------------
|
||||
CURSOR.BLINK.SPEED .EQ 2
|
||||
@ -37,16 +35,15 @@ L.MSG.DETECT .DA MSG.DETECT
|
||||
.DA 0 End Of Reloc Table
|
||||
*--------------------------------------
|
||||
Dev.Detect >LDYA L.MSG.DETECT
|
||||
>SYSCALL SYS.SysScrPPSTRYA
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
|
||||
lda A2osX.SCREENS
|
||||
ora #A2osX.SCREENS.C
|
||||
sta A2osX.SCREENS
|
||||
|
||||
clc
|
||||
rts
|
||||
CS.END
|
||||
MSG.DETECT >PSTRING "\nApple IIe/IIc 80 Col Driver."
|
||||
MSG.DETECT >PSTRING "Apple IIe/IIc 80 Col Driver.\n"
|
||||
*--------------------------------------
|
||||
* Device Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -72,8 +69,10 @@ L.DEVINFO .DA DEVINFO
|
||||
OPEN stz CURON
|
||||
lda #$80
|
||||
sta INVFLG
|
||||
|
||||
jsr HOME
|
||||
|
||||
lda #A2osX.SCREENS.C
|
||||
>SYSCALL SYS.ScreenSelectA
|
||||
|
||||
clc
|
||||
rts
|
||||
@ -84,7 +83,7 @@ GETEVENT lda A2osX.TIMER16
|
||||
beq .1
|
||||
jsr CURBLNK
|
||||
|
||||
.1 lda A2osX.SCREENS
|
||||
.1 lda A2osX.ASCREEN
|
||||
and #A2osX.SCREENS.C is screen active?
|
||||
beq .9
|
||||
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/IO.I
|
||||
*--------------------------------------
|
||||
ZPBASE .EQ ZPDRV
|
||||
@ -50,7 +48,7 @@ MSG.DETECT >PSTRING "\nApple IIe/IIc DoubleHGR Driver."
|
||||
*--------------------------------------
|
||||
DEV.HEADER cld
|
||||
jmp (DRV.CS.START,x)
|
||||
.DA #0
|
||||
.DA #S.DEV.F.EVENT
|
||||
>PSTRING "GFX" NAME
|
||||
.HS 00 NAME must Be 5 bytes long
|
||||
.HS 00.00
|
||||
@ -73,7 +71,12 @@ DRV.CS.START .DA OPEN
|
||||
L.DEVINFO .DA DEVINFO
|
||||
.DA 0 end or relocation
|
||||
*--------------------------------------
|
||||
OPEN sta SETHIRES
|
||||
OPEN lda #A2osX.SCREENS.G
|
||||
>SYSCALL SYS.ScreenSelectA
|
||||
|
||||
sta SETHIRES
|
||||
lda RD80STORE
|
||||
pha
|
||||
sta SET80STORE prepare for page switching
|
||||
|
||||
ldx #192
|
||||
@ -106,10 +109,25 @@ OPEN sta SETHIRES
|
||||
txa
|
||||
bne .81
|
||||
|
||||
clc
|
||||
pla
|
||||
bmi .84
|
||||
|
||||
sta CLR80STORE
|
||||
.84 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GETEVENT
|
||||
GETEVENT lda A2osX.ASCREEN
|
||||
and #A2osX.SCREENS.G is screen active?
|
||||
beq .9
|
||||
|
||||
>SYSCALL SYS.GetKeyboardEvent
|
||||
bcs .9
|
||||
rts
|
||||
|
||||
.9 lda #0 Error = no event
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
COUT
|
||||
IRQ sec
|
||||
rts
|
||||
|
@ -11,7 +11,6 @@ AUTO 6
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/IO.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
*--------------------------------------
|
||||
ZPGoMouse .EQ ZPDRV
|
||||
ZPTmpPtr1 .EQ ZPDRV+2
|
||||
@ -65,7 +64,7 @@ L.DEV.HEADER.NAME .DA DEV.HEADER.NAME
|
||||
.DA 0 End Of Reloc Table
|
||||
*--------------------------------------
|
||||
Dev.Detect >LDYA L.MSG.DETECT
|
||||
>SYSCALL SYS.SysScrPPSTRYA
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
|
||||
stz ZPTmpPtr1
|
||||
lda #$C1
|
||||
@ -87,7 +86,7 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
bne .1
|
||||
|
||||
>LDYA L.MSG.DETECT.KO
|
||||
>SYSCALL SYS.SysScrPPSTRYA
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
|
||||
lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
|
||||
sec
|
||||
@ -106,16 +105,18 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
sta DEVSLOTn0
|
||||
|
||||
>LDYA L.MSG.DETECT.OK
|
||||
>SYSCALL SYS.SysScrPPSTRYA
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
>LDYA L.DEV.HEADER.NAME
|
||||
>SYSCALL SYS.SysScrPPSTRYA
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.DETECT >PSTRING "\nApple II Mouse Driver."
|
||||
MSG.DETECT.OK >PSTRING "\nMouse Card Driver Installed As Device : "
|
||||
MSG.DETECT.KO >PSTRING "\nMouse Card Not Found."
|
||||
MSG.DETECT >PSTRING "Apple Mouse Card/IIc Mouse Driver."
|
||||
MSG.DETECT.OK >PSTRING "Mouse Installed As Device : "
|
||||
MSG.DETECT.KO >PSTRING "No Mouse Found.\n"
|
||||
*--------------------------------------
|
||||
* Device Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -188,7 +189,11 @@ OPEN
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GETEVENT php
|
||||
GETEVENT lda A2osX.ASCREEN
|
||||
and #A2osX.SCREENS.G is screen active?
|
||||
beq .9
|
||||
|
||||
php
|
||||
sei
|
||||
|
||||
lda RD80STORE
|
||||
@ -252,8 +257,9 @@ GETEVENT php
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec A=0 : no event
|
||||
rts
|
||||
.9 lda #0 Error = no event
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
COUT
|
||||
IRQ sec
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
*--------------------------------------
|
||||
ZPTmpPTR .EQ ZPDRV
|
||||
*--------------------------------------
|
||||
@ -126,11 +124,14 @@ CS.START cld
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
L.MSG.DETECT .DA MSG.DETECT
|
||||
L.MSG.DETECT.OK .DA MSG.DETECT.OK
|
||||
L.MSG.DETECT.KO .DA MSG.DETECT.KO
|
||||
L.DEV.HEADER.NAME .DA DEV.HEADER.NAME
|
||||
.DA 0 End Of Reloc Table
|
||||
*--------------------------------------
|
||||
Dev.Detect sta hArgs
|
||||
>LDYA L.MSG.DETECT
|
||||
>SYSCALL SYS.SysScrPPSTRYA
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
|
||||
ldx #$10
|
||||
.1 stx DEVSLOTx0
|
||||
@ -150,7 +151,10 @@ Dev.Detect sta hArgs
|
||||
cpx #$80
|
||||
bne .1
|
||||
|
||||
lda #DEVMGR.ERRNOHW
|
||||
>LDYA L.MSG.DETECT.KO
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
|
||||
lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
|
||||
sec
|
||||
rts
|
||||
|
||||
@ -165,7 +169,13 @@ Dev.Detect sta hArgs
|
||||
sec
|
||||
rts
|
||||
|
||||
.4 clc
|
||||
.4 >LDYA L.MSG.DETECT.OK
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
>LDYA L.DEV.HEADER.NAME
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DecodeMac lda (ZPTmpPTR)
|
||||
@ -221,7 +231,9 @@ Asc2NibbleA cmp #$30
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.DETECT >PSTRING "\nUtherNet/CS8900A Driver."
|
||||
MSG.DETECT >PSTRING "UtherNet/CS8900A Driver.\n"
|
||||
MSG.DETECT.OK >PSTRING "UtherNet/CS8900A Installed As Device : "
|
||||
MSG.DETECT.KO >PSTRING "Hardware Not Found.\n"
|
||||
hArgs .BS 1
|
||||
*--------------------------------------
|
||||
* Device Header (16 Bytes)
|
||||
|
1
ETC/HOSTNAME
Normal file
1
ETC/HOSTNAME
Normal file
@ -0,0 +1 @@
|
||||
apple2-host
|
@ -8,7 +8,6 @@ MASK=255.255.255.0
|
||||
GW=192.168.1.1
|
||||
DNS=192.168.1.2
|
||||
DNS=192.168.1.1
|
||||
HOSTNAME=apple2
|
||||
DOMAIN=coincoin.hd.free.fr
|
||||
MAN
|
||||
TEXT ETC/TCPIP.CONF
|
||||
|
@ -7,11 +7,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
* Aux ZP
|
||||
*--------------------------------------
|
||||
ZPQuickPtr1 .EQ $0 Temp Ptrs for use in very limited scope
|
||||
ZPQuickPtr2 .EQ $2 (could be trashed by any JSR)
|
||||
ZPQuickPtr3 .EQ $4
|
||||
ZPQuickPtr4 .EQ $6
|
||||
|
||||
pCode .EQ $10
|
||||
pData .EQ $12
|
||||
pStack .EQ $14
|
||||
@ -26,12 +21,12 @@ ZPDRV .EQ $80
|
||||
ZPBIN .EQ $90
|
||||
ZPLIB .EQ $A0
|
||||
*--------------------------------------
|
||||
* !!!!!!! RESERVED APPLESOFT.I !!!!!!!
|
||||
* $5E -> $C8
|
||||
*--------------------------------------
|
||||
* $B0 -> $FF KERNEL RESERVED
|
||||
*--------------------------------------
|
||||
ZPMemMgr .EQ $B0
|
||||
ZPSysScr .EQ $C0
|
||||
ZPDevMgr .EQ $D0
|
||||
ZPTskMgr .EQ $E0
|
||||
ZPMemMgr .EQ $E0
|
||||
*--------------------------------------
|
||||
R.VCPU16 .EQ $F0
|
||||
R.AX .EQ R.VCPU16
|
||||
@ -73,7 +68,6 @@ D.STACK.TOP .EQ $03F0 ...Down to $0300
|
||||
Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00
|
||||
Z80JMP .EQ $1000
|
||||
*--------------------------------------
|
||||
MLICALL.PARAMS .EQ $1100
|
||||
DevMgr.Table .EQ $1200 K.DEV.MAX*S.DEV.SIZE=32*16=512b
|
||||
*--------------------------------------
|
||||
TskMgr.Table .EQ $1400 K.PS.MAX*S.PS.SIZE=64*16=1k
|
||||
@ -103,6 +97,10 @@ pDevJmp .EQ $BE10
|
||||
pCodeJmp .EQ $BE13
|
||||
pLibJmp .EQ $BE16
|
||||
*--------------------------------------
|
||||
* $11 bytes min !!!!
|
||||
*--------------------------------------
|
||||
MLICALL.PARAMS .EQ $BEC0
|
||||
*--------------------------------------
|
||||
* $BEE0->$BEFF : Public Variables
|
||||
*--------------------------------------
|
||||
A2osX.SCREENS .EQ $BEE0
|
||||
@ -189,13 +187,13 @@ SYS.LoadDrvA .EQ $26
|
||||
*--------------------------------------
|
||||
SYS.ExpandPStrA .EQ $30
|
||||
SYS.ExpandPStrYA .EQ $32
|
||||
SYS.GetEnvVarH .EQ $34
|
||||
SYS.GetEnvVarP .EQ $36
|
||||
SYS.GetEnvVarA .EQ $34
|
||||
SYS.GetEnvVarYA .EQ $36
|
||||
|
||||
SYS.SetEnvVarH .EQ $38
|
||||
SYS.SetEnvVarP .EQ $3A
|
||||
SYS.DelEnvVarH .EQ $3C
|
||||
SYS.DelEnvVarP .EQ $3E
|
||||
SYS.DelEnvVarA .EQ $3C
|
||||
SYS.DelEnvVarYA .EQ $3E
|
||||
*--------------------------------------
|
||||
SYS.MLICreateFile .EQ $40
|
||||
SYS.MLICreateDirA .EQ $42
|
||||
@ -243,10 +241,10 @@ SYS.GetDevByNameYA .EQ $84
|
||||
|
||||
SYS.GetKeyboardEvent .EQ $88
|
||||
*--------------------------------------
|
||||
SYS.ExecProcessNewEnvA .EQ $90
|
||||
SYS.ExecProcessA .EQ $92
|
||||
SYS.CreateProcessNewEnvA .EQ $94
|
||||
SYS.CreateProcessA .EQ $96
|
||||
SYS.ExecProcessNewEnvYA .EQ $90
|
||||
SYS.ExecProcessYA .EQ $92
|
||||
SYS.CreateProcessNewEnvYA .EQ $94
|
||||
SYS.CreateProcessYA .EQ $96
|
||||
|
||||
SYS.GetPSByIDA .EQ $98
|
||||
|
||||
@ -267,9 +265,15 @@ SYS.GetNetCfgA .EQ $B4
|
||||
SYS.ClrNetCfgA .EQ $B6
|
||||
*--------------------------------------
|
||||
SYS.ScreenSelectA .EQ $C0
|
||||
*--------------------------------------
|
||||
SYS.COutA .EQ $D0
|
||||
SYS.PSTROutA .EQ $D2
|
||||
SYS.PSTROutYA .EQ $D4
|
||||
|
||||
SYS.SysScrPPSTRA .EQ $C4
|
||||
SYS.SysScrPPSTRYA .EQ $C6
|
||||
SYS.HexOutA .EQ $D8
|
||||
SYS.HexOutYA .EQ $DA
|
||||
SYS.DecOutA .EQ $DC
|
||||
SYS.DecOutYA .EQ $DE
|
||||
*--------------------------------------
|
||||
* ERROR CODES
|
||||
*--------------------------------------
|
||||
|
70
INC/APPLESOFT.I.txt
Normal file
70
INC/APPLESOFT.I.txt
Normal file
@ -0,0 +1,70 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.SRC
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* AppleSoft ZP
|
||||
* http://www.txbobsc.com/scsc/scdocumentor/index.html#toc
|
||||
*--------------------------------------
|
||||
SIGNFLG .EQ $16 FLAGS SIGN IN TAN
|
||||
INDEX .EQ $5E Ptr Used by Math routines
|
||||
RESULT .EQ $62 -> $66, RESULT OF LAST * OR /
|
||||
FAC .EQ $9D -> $A1 (5 bytes)
|
||||
FAC.SIGN .EQ $A2
|
||||
ARG .EQ $A5 -> $A9 (5 bytes)
|
||||
ARG.SIGN .EQ $AA
|
||||
SGNCPR .EQ $AB FLAGS OPP SIGN IN FP ROUT
|
||||
CHRGET .EQ $B1 -> $C8
|
||||
CHRGOT .EQ $B7
|
||||
TXTPTR .EQ $B8
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
* FAC = (Y,A) - FAC
|
||||
*--------------------------------------
|
||||
FSUB .EQ $E7A7
|
||||
*--------------------------------------
|
||||
* FAC = (Y,A) + FAC
|
||||
*--------------------------------------
|
||||
FADD .EQ $E7BE
|
||||
*--------------------------------------
|
||||
LOG .EQ $E941
|
||||
*--------------------------------------
|
||||
* FAC = (Y,A) * FAC
|
||||
*--------------------------------------
|
||||
FMULT .EQ $E97F
|
||||
*--------------------------------------
|
||||
* FAC = (Y,A) / FAC
|
||||
*--------------------------------------
|
||||
FDIV .EQ $EA66
|
||||
*--------------------------------------
|
||||
* CONVERT STRING TO FP VALUE IN FAC
|
||||
* STRING POINTED TO BY TXTPTR
|
||||
* FIRST CHAR ALREADY SCANNED BY CHRGET
|
||||
* (A) = FIRST CHAR, C=0 IF DIGIT.
|
||||
*--------------------------------------
|
||||
FIN .EQ $EC4A
|
||||
*--------------------------------------
|
||||
SQR .EQ $EE8D
|
||||
*--------------------------------------
|
||||
* FAC = E ^ FAC
|
||||
*--------------------------------------
|
||||
EXP .EQ $EF09
|
||||
*--------------------------------------
|
||||
RND .EQ $EFAE
|
||||
*--------------------------------------
|
||||
COS .EQ $EFEA
|
||||
*--------------------------------------
|
||||
SIN .EQ $EFF1
|
||||
*--------------------------------------
|
||||
TAN .EQ $F03A
|
||||
*--------------------------------------
|
||||
ATN .EQ $F09E
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE INC/APPLESOFT.I
|
@ -10,6 +10,14 @@ AUTO 6
|
||||
bpl :1
|
||||
sta $C010
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA DEBUGOA
|
||||
bit $C061
|
||||
bpl :2
|
||||
:1 bit $C000
|
||||
bpl :1
|
||||
sta $C010
|
||||
:2 .EM
|
||||
*--------------------------------------
|
||||
* SYSCALLs Macros
|
||||
*--------------------------------------
|
||||
@ -101,16 +109,6 @@ AUTO 6
|
||||
ldx #]2
|
||||
jsr A2osX.DRVCALL
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA LOADLIBYA
|
||||
ldx #SYS.LoadLibYA
|
||||
jsr A2osX.SYSCALL
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA LOADLIBA
|
||||
ldx #SYS.LoadLibA
|
||||
jsr A2osX.SYSCALL
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA LIBCALL
|
||||
ldy ]1
|
||||
@ -287,9 +285,9 @@ AUTO 6
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA PSTRING
|
||||
.DA #:2-:1
|
||||
:1 .AS "]1"
|
||||
:2 .EQ *
|
||||
.DA #:1-*-1
|
||||
.AS "]1"
|
||||
:1 .EQ *
|
||||
.EM
|
||||
MAN
|
||||
SAVE INC/MACROS.I
|
||||
|
@ -10,7 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
*--------------------------------------
|
||||
ZPTmpPtr1 .EQ ZPLIB+2
|
||||
ZPTmpPtr2 .EQ ZPLIB+4
|
||||
@ -761,7 +760,6 @@ COUT phx
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
pDevJmp jmp (pDev)
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
PRINTFTBL1 .AS -"abBdDLeEhHiIsStT"
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
ZPFrameBase1 .EQ ZPLIB
|
||||
@ -469,7 +467,6 @@ ComputeChecksum >PULLA
|
||||
eor #$FF
|
||||
rts
|
||||
*--------------------------------------
|
||||
pDevJmp jmp (pDev)
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
bFirstLoad .DA #0
|
||||
|
@ -10,14 +10,13 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
ZPFrameBase1 .EQ ZPBIN
|
||||
ZPFrameLen1 .EQ ZPBIN+2
|
||||
ZPFramePtr1 .EQ ZPBIN+4
|
||||
ZPPtr1 .EQ ZPBIN+6
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -43,20 +42,20 @@ L.IPCFG .DA IPCFG
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
>LDYA L.LIBTCPIP
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBTCPIP
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
||||
bcs .9
|
||||
>STYA ZPQuickPTR1
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #S.IPCFG
|
||||
.1 dey
|
||||
lda (ZPQuickPTR1),y
|
||||
lda (ZPPtr1),y
|
||||
sta IPCFG,y
|
||||
tya
|
||||
bne .1
|
||||
@ -97,7 +96,7 @@ CS.RUN.DISC jsr SendDHCPDiscFrame
|
||||
lda #S.IPCFG.STATUS.SDISC
|
||||
sta IPCFG
|
||||
|
||||
CS.RUN.OFFER jsr A2osX.SLEEP
|
||||
CS.RUN.OFFER >SYSCALL SYS.Sleep
|
||||
lda IPCFG
|
||||
and #S.IPCFG.STATUS.ROFFER
|
||||
bne CS.RUN.REQ
|
||||
@ -112,7 +111,7 @@ CS.RUN.REQ jsr SendDHCPReqFrame
|
||||
lda #S.IPCFG.STATUS.SREQ
|
||||
sta IPCFG
|
||||
|
||||
CS.RUN.RACK jsr A2osX.SLEEP
|
||||
CS.RUN.RACK >SYSCALL SYS.Sleep
|
||||
lda IPCFG
|
||||
and #S.IPCFG.STATUS.RACK
|
||||
bne CS.RUN.OK
|
||||
@ -209,15 +208,15 @@ SendDHCPDiscFrame
|
||||
lda ZPFrameBase1
|
||||
clc
|
||||
adc #S.UDP
|
||||
sta ZPQuickPTR1
|
||||
sta ZPPtr1
|
||||
lda ZPFrameBase1+1
|
||||
adc /S.UDP
|
||||
sta ZPQuickPTR1+1
|
||||
sta ZPPtr1+1
|
||||
|
||||
ldy #FRAME.DISC.LEN
|
||||
.1 dey
|
||||
lda FRAME.DISC,y
|
||||
sta (ZPQuickPTR1),y
|
||||
sta (ZPPtr1),y
|
||||
tya
|
||||
bne .1
|
||||
|
||||
@ -363,15 +362,15 @@ SendDHCPReqFrame
|
||||
lda ZPFrameBase1
|
||||
clc
|
||||
adc #S.UDP
|
||||
sta ZPQuickPTR1
|
||||
sta ZPPtr1
|
||||
lda ZPFrameBase1+1
|
||||
adc /S.UDP
|
||||
sta ZPQuickPTR1+1
|
||||
sta ZPPtr1+1
|
||||
|
||||
ldy #FRAME.REQ.LEN
|
||||
.1 dey
|
||||
lda FRAME.REQ,y
|
||||
sta (ZPQuickPTR1),y
|
||||
sta (ZPPtr1),y
|
||||
tya
|
||||
bne .1
|
||||
|
||||
|
104
SBIN/GETTY.S.txt
104
SBIN/GETTY.S.txt
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
*--------------------------------------
|
||||
ZPTmp1 .EQ ZPBIN
|
||||
*--------------------------------------
|
||||
@ -42,7 +40,8 @@ CS.INIT ldy #S.PS.hARGS
|
||||
bne .1
|
||||
|
||||
>LDYA L.MSG.USAGE
|
||||
jsr PRINT.MSG
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
@ -50,12 +49,13 @@ CS.INIT ldy #S.PS.hARGS
|
||||
>PUSHBI $20 Push SEP=' '
|
||||
>PUSHBI 1 Push 1 for getting INDEV
|
||||
>SYSCALL SYS.PStrGetTkn
|
||||
bcs .98
|
||||
bcs .99
|
||||
|
||||
sta hDEVNAME
|
||||
>SYSCALL SYS.GetDevByNameA
|
||||
bcs .99
|
||||
bcs .98
|
||||
|
||||
>STYA pDev
|
||||
txa
|
||||
ldy #S.PS.hINDEV
|
||||
sta (pPs),y
|
||||
@ -77,13 +77,11 @@ CS.INIT ldy #S.PS.hARGS
|
||||
|
||||
ldy #hBinName
|
||||
sta (pData),y
|
||||
|
||||
|
||||
ldx #DEVMGR.OPEN
|
||||
jsr pDevJmp if error CS, else...
|
||||
|
||||
rts ...Tell TskMgr To stay in memory
|
||||
|
||||
|
||||
.98 pha
|
||||
lda hDEVNAME
|
||||
>SYSCALL SYS.FreeMemA
|
||||
@ -91,41 +89,33 @@ CS.INIT ldy #S.PS.hARGS
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #S.PS.hOUTDEV
|
||||
lda (pPs),y
|
||||
>SYSCALL SYS.GetDevByIDA
|
||||
>STYA pDev
|
||||
|
||||
lda #13 try send a CR...
|
||||
|
||||
jsr COUT Device Is Ready ?
|
||||
CS.RUN lda #13 try send a CR...
|
||||
>SYSCALL SYS.COutA Device Is Ready ?
|
||||
|
||||
bcc .1
|
||||
clc no..loop...
|
||||
rts
|
||||
bcs .8 no..loop...
|
||||
|
||||
.1 >LDYA L.MSG.GREETINGS
|
||||
jsr PRINT.MSG
|
||||
bcs .9
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
|
||||
ldy #S.PS.hINDEV
|
||||
lda (pPs),y
|
||||
jsr PRBYTE
|
||||
bcs .9
|
||||
lda #','
|
||||
|
||||
jsr COUT
|
||||
bcs .9
|
||||
bcs .8 unable to send greetings...loop..
|
||||
|
||||
ldy #S.PS.hOUTDEV
|
||||
lda (pPs),y
|
||||
jsr PRBYTE
|
||||
bcs .9
|
||||
|
||||
>SYSCALL SYS.HexOutA
|
||||
bcs .8
|
||||
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
bcs .8
|
||||
|
||||
ldy #hBinName
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.ExecProcessNewEnvA
|
||||
ldy #0
|
||||
>SYSCALL SYS.ExecProcessNewEnvYA
|
||||
.9 rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT sec
|
||||
rts
|
||||
@ -140,53 +130,9 @@ CS.QUIT ldy #hBinName
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
PRINT.MSG >STYA ZPTmp1
|
||||
ldy #0
|
||||
.1 lda (ZPTmp1),y
|
||||
beq .2
|
||||
jsr COUT
|
||||
bcs .9
|
||||
iny
|
||||
bne .1
|
||||
.2 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PRBYTE pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$30
|
||||
cmp #$3A
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 jsr COUT
|
||||
pla
|
||||
bcs .9
|
||||
and #$0F
|
||||
ora #$30
|
||||
cmp #$3A
|
||||
bcc .2
|
||||
adc #6
|
||||
.2 jsr COUT
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CROUT lda #13
|
||||
*--------------------------------------
|
||||
COUT phx
|
||||
phy
|
||||
ldx #DEVMGR.COUT
|
||||
jsr pDevJmp
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
pDevJmp jmp (pDev)
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.USAGE >CSTRING "GETTY <INDEV> <OUTDEV> <PROGRAM>"
|
||||
MSG.GREETINGS >CSTRING "A2osX-GeTTY on Dev="
|
||||
MSG.USAGE >PSTRING "GETTY <DEV> <PROGRAM>"
|
||||
MSG.GREETINGS >PSTRING "A2osX-GeTTY on Dev="
|
||||
hDEVNAME .BS 1
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
|
@ -10,7 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
|
0
SBIN/HTTPD.S.txt
Normal file
0
SBIN/HTTPD.S.txt
Normal file
74
SBIN/INSDRV.S.txt
Normal file
74
SBIN/INSDRV.S.txt
Normal file
@ -0,0 +1,74 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.SRC
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF /A2OSX.BOOT/SBIN/INSDRV
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
ZPPTR2 .EQ ZPBIN+2
|
||||
ZPPTR3 .EQ ZPBIN+4
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
jmp (.1,x)
|
||||
.DA #$61 6502,Level 1 (65c02)
|
||||
.DA #1 BIN Layout Version 1
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA 0 Data Segment to Allocate
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.EVENT
|
||||
.DA CS.QUIT
|
||||
L.MSG.HELP .DA MSG.HELP
|
||||
L.MSG.LOADING .DA MSG.LOADING
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT ldy #S.PS.hARGS
|
||||
lda (pPs),y
|
||||
bne .1
|
||||
>LDYA L.MSG.HELP
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
bra .8
|
||||
|
||||
.1 sta hArgs
|
||||
>LDYA L.MSG.LOADING
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
bcs .9
|
||||
|
||||
lda hArgs
|
||||
>SYSCALL SYS.LoadDrvA
|
||||
|
||||
bcs .9
|
||||
|
||||
|
||||
.8 lda #0 tell TSKMGR that all done ok, but
|
||||
.9 sec we do not want to stay in memory
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN
|
||||
CS.EVENT
|
||||
CS.QUIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.HELP >PSTRING "Usage: insdrv </path/drv/>file.drv <args>\n"
|
||||
MSG.LOADING >PSTRING "INSDRV:\n"
|
||||
hArgs .BS 1
|
||||
MAN
|
||||
SAVE SBIN/INSDRV.S
|
||||
ASM
|
100
SBIN/LOGIN.S.txt
100
SBIN/LOGIN.S.txt
@ -10,7 +10,8 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
*--------------------------------------
|
||||
INPUT.BUFFER.SIZE .EQ 16
|
||||
*--------------------------------------
|
||||
@ -56,39 +57,49 @@ CS.RUN lda #0
|
||||
ldy #hPASSWORD
|
||||
sta (pData),y
|
||||
|
||||
jsr CROUT
|
||||
jsr CROUT
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
bcs .9
|
||||
|
||||
>LDYA L.MSG.LOGIN
|
||||
jsr PRINT.MSG
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
bcs .9
|
||||
|
||||
lda #0 Echo all caracters
|
||||
jsr INPUT.RESET
|
||||
|
||||
.1 jsr A2osX.Sleep
|
||||
.1 >SYSCALL SYS.Sleep
|
||||
jsr INPUT.LINEIN
|
||||
bcc .1
|
||||
|
||||
jsr CROUT
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
bcs .9
|
||||
|
||||
>LDYA L.MSG.PASSWORD
|
||||
jsr PRINT.MSG
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
lda #'*'
|
||||
jsr INPUT.RESET
|
||||
|
||||
.2 jsr A2osX.Sleep
|
||||
.2 >SYSCALL SYS.Sleep
|
||||
jsr INPUT.LINEIN
|
||||
bcc .2
|
||||
|
||||
jsr CROUT
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
bcs .9
|
||||
|
||||
ldy #hSHELL
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.ExecProcessNewEnvA
|
||||
ldy #0
|
||||
>SYSCALL SYS.ExecProcessNewEnvYA
|
||||
|
||||
bcc .8
|
||||
bcs .9
|
||||
|
||||
jsr PRBYTE
|
||||
.8 clc
|
||||
rts
|
||||
rts
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT ldy #S.EVT.hDEV
|
||||
lda (pEvent),y
|
||||
@ -113,7 +124,10 @@ CS.DOEVENT ldy #S.EVT.hDEV
|
||||
.99 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT clc
|
||||
CS.QUIT ldy #hSHELL
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.FreeMemA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
@ -133,31 +147,32 @@ INPUT.CHARIN tax saver char...
|
||||
lda #INPUT.BUFFER
|
||||
clc
|
||||
adc pData
|
||||
sta ZPQuickPtr1
|
||||
sta ZPPTR1
|
||||
lda pData+1
|
||||
adc /INPUT.BUFFER
|
||||
sta ZPQuickPtr1+1
|
||||
sta ZPPTR1+1
|
||||
|
||||
cpx #$20 Control Char?
|
||||
bcc .2
|
||||
|
||||
lda (ZPQuickPtr1)
|
||||
lda (ZPPTR1)
|
||||
|
||||
cmp #INPUT.BUFFER.SIZE Buffer full?
|
||||
beq .9
|
||||
|
||||
inc
|
||||
sta (ZPQuickPtr1)
|
||||
sta (ZPPTR1)
|
||||
tay
|
||||
|
||||
txa
|
||||
sta (ZPQuickPtr1),y
|
||||
sta (ZPPTR1),y
|
||||
|
||||
ldy #INPUT.STATUS
|
||||
lda (pData),y
|
||||
bne .1
|
||||
txa
|
||||
.1 jmp COUT
|
||||
.1 >SYSCALL SYS.COutA
|
||||
rts
|
||||
|
||||
.2 cpx #$0D
|
||||
bne .9
|
||||
@ -177,49 +192,10 @@ INPUT.LINEIN ldy #INPUT.STATUS
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PRINT.MSG >STYA ZPQuickPtr1
|
||||
ldy #0
|
||||
.1 lda (ZPQuickPtr1),y
|
||||
beq .2
|
||||
jsr COUT
|
||||
iny
|
||||
bne .1
|
||||
.2 rts
|
||||
*--------------------------------------
|
||||
PRBYTE pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$30
|
||||
cmp #$3A
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 jsr COUT
|
||||
pla
|
||||
and #$0F
|
||||
ora #$30
|
||||
cmp #$3A
|
||||
bcc COUT
|
||||
adc #6
|
||||
bra COUT
|
||||
*--------------------------------------
|
||||
CROUT lda #13
|
||||
*--------------------------------------
|
||||
COUT phx
|
||||
phy
|
||||
ldx #DEVMGR.COUT
|
||||
jsr pDevJmp
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
pDevJmp jmp (pDev)
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
MSG.LOGIN >CSTRING "login:"
|
||||
MSG.PASSWORD >CSTRING "password:"
|
||||
SHELL >PSTRING "SHELL"
|
||||
*--------------------------------------
|
||||
MSG.LOGIN >PSTRING "login:"
|
||||
MSG.PASSWORD >PSTRING "password:"
|
||||
SHELL >PSTRING "SBIN/SHELL"
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
|
@ -10,7 +10,8 @@ EXEC.CMD stz hFullCmd
|
||||
stz hEnvPath
|
||||
|
||||
ldy #hCmdLine
|
||||
>PUSHB (pData),y
|
||||
lda (pData),y
|
||||
>PUSHA
|
||||
>PUSHBI $20 Push SEP=' '
|
||||
>PUSHBI 0 Push 0 for getting CMD & ARGS
|
||||
>SYSCALL SYS.PStrGetTkn
|
||||
@ -38,7 +39,7 @@ EXEC.CMD stz hFullCmd
|
||||
lda (ZPPtr1),y
|
||||
cmp #'a'
|
||||
bcc .3
|
||||
cmp #'{'
|
||||
cmp #'z'+1
|
||||
bcs .3
|
||||
eor #$20 to Uppercase
|
||||
.3 cmp CMDS,x
|
||||
@ -60,24 +61,24 @@ EXEC.CMD stz hFullCmd
|
||||
inc ExecCmdIdx
|
||||
bra .1
|
||||
.99 rts
|
||||
|
||||
*--------------------------------------
|
||||
* ZPPtr1 = hExecCmd
|
||||
*--------------------------------------
|
||||
EXEC.CMD.EXT ldy #1
|
||||
lda (ZPPtr1),y
|
||||
cmp #'/'
|
||||
bne .2
|
||||
ldy #hCmdLine
|
||||
lda (pPs),y
|
||||
bra .11
|
||||
bne .1
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL SYS.NewPStrYA
|
||||
bra .10
|
||||
|
||||
.2 >PUSHW L.ENV.PATH push ENVNAME=PATH
|
||||
ldy #S.PS.hENV
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
>SYSCALL SYS.GetEnvVarP get value for ENV=PATH
|
||||
.1 >LDYA L.ENV.PATH push ENVNAME=PATH
|
||||
>SYSCALL SYS.GetEnvVarYA get value for ENV=PATH
|
||||
|
||||
bcs EXEC.CMD.ClnUp
|
||||
bcc .12
|
||||
jmp EXEC.CMD.ClnUp
|
||||
|
||||
sta hEnvPath
|
||||
.12 sta hEnvPath
|
||||
>PUSHB hExecCmd
|
||||
>PUSHB hEnvPath
|
||||
>SYSCALL SYS.FileSearch
|
||||
@ -89,27 +90,55 @@ EXEC.CMD.EXT ldy #1
|
||||
>PUSHA
|
||||
>SYSCALL SYS.FileSearch
|
||||
|
||||
bcs EXEC.CMD.ClnUp
|
||||
.10 bcs EXEC.CMD.ClnUp
|
||||
|
||||
.10 sta hFullCmd
|
||||
.11 >SYSCALL SYS.MLIGetFileInfoA
|
||||
sta hFullCmd
|
||||
>SYSCALL SYS.MLIGetFileInfoA
|
||||
bcs EXEC.CMD.ClnUp
|
||||
|
||||
>STYA ZPPTR1
|
||||
ldy #1 Get File Type
|
||||
lda (ZPPTR1),y
|
||||
cmp #$04 TXT File ?
|
||||
bne .1
|
||||
bne .2
|
||||
|
||||
lda hFullCmd
|
||||
jsr OpenTxtFileA
|
||||
bcs EXEC.CMD.ClnUp
|
||||
|
||||
lda hExecArgs
|
||||
beq .11
|
||||
|
||||
>SYSCALL SYS.PStrCpyA
|
||||
bcs EXEC.CMD.ClnUp
|
||||
.11 ldy #hInputArgs
|
||||
sta (pData),y
|
||||
bra EXEC.CMD.ClnUp
|
||||
|
||||
.2 cmp #$06 BIN File ?
|
||||
bne .4
|
||||
|
||||
ldy #S.PS.PID
|
||||
lda (pPs),y
|
||||
beq .3 0, we are in kernel space
|
||||
|
||||
lda hFullCmd
|
||||
ldy hExecArgs
|
||||
>SYSCALL SYS.ExecProcessNewEnvYA
|
||||
bra EXEC.CMD.ClnUp
|
||||
|
||||
.3 lda hFullCmd
|
||||
ldy hExecArgs
|
||||
>SYSCALL SYS.CreateProcessYA
|
||||
bra EXEC.CMD.ClnUp
|
||||
|
||||
.4 cmp #$ff SYS File ?
|
||||
bne .5
|
||||
|
||||
bra *
|
||||
|
||||
.1 jsr EXEC.CMD.ClnUp Discard CMD & ARGS
|
||||
ldy #hCmdLine
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.ExecProcessNewEnvA
|
||||
|
||||
rts
|
||||
|
||||
.5 lda #SYSMGR.ERRSYN
|
||||
sec
|
||||
EXEC.CMD.ClnUp pha
|
||||
php
|
||||
lda hFullCmd
|
||||
@ -138,10 +167,9 @@ EXEC.CMD.CD lda hExecArgs
|
||||
bne EXEC.CMD.CD.C
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTP
|
||||
jsr CROUT
|
||||
>SYSCALL SYS.PSTROutA
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -224,7 +252,7 @@ EXEC.CMD.CD.C >SYSCALL SYS.GetMemPtrA
|
||||
rts
|
||||
*--------------------------------------
|
||||
EXEC.CMD.SET lda hExecArgs
|
||||
bne .2
|
||||
bne EXEC.CMD.SETVAR
|
||||
|
||||
ldy #S.PS.hENV
|
||||
lda (pPs),y
|
||||
@ -233,9 +261,10 @@ EXEC.CMD.SET lda hExecArgs
|
||||
|
||||
.1 lda (ZPPTR1)
|
||||
beq .8 Ending 0 ?
|
||||
>PUSHW ZPPTR1
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTP
|
||||
jsr CROUT
|
||||
>LDYA ZPPTR1
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
|
||||
lda ZPPTR1
|
||||
sec
|
||||
@ -248,7 +277,7 @@ EXEC.CMD.SET lda hExecArgs
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.2 >PUSHA Push Cmd Line
|
||||
EXEC.CMD.SETVAR >PUSHA Push Cmd Line
|
||||
>PUSHBI $3D Push SEP='='
|
||||
>PUSHBI 0 Push Token IDX
|
||||
>SYSCALL SYS.PStrGetTkn
|
||||
@ -259,46 +288,42 @@ EXEC.CMD.SET lda hExecArgs
|
||||
.3 sta hVarName
|
||||
stx hVarValue
|
||||
txa
|
||||
bne .7
|
||||
beq .31
|
||||
|
||||
lda hExecArgs
|
||||
>PUSHB hVarValue
|
||||
>PUSHB hVarName
|
||||
>SYSCALL SYS.SetEnvVarH
|
||||
jmp .97
|
||||
|
||||
.31 lda hExecArgs
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPPTR1
|
||||
lda (ZPPTR1)
|
||||
tay
|
||||
lda (ZPPTR1),y
|
||||
cmp #'='
|
||||
beq .7
|
||||
bne .4
|
||||
|
||||
lda hVarName
|
||||
>SYSCALL SYS.DelEnvVarA
|
||||
bra .97
|
||||
|
||||
>PUSHB hVarName
|
||||
ldy #S.PS.hENV
|
||||
>PUSHB (pPs),y
|
||||
>SYSCALL SYS.GetEnvVarH
|
||||
.4 lda hVarName
|
||||
>SYSCALL SYS.GetEnvVarA
|
||||
bcs .97
|
||||
sta hVarValue
|
||||
|
||||
lda hVarName
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTP
|
||||
|
||||
>SYSCALL SYS.PSTROutA
|
||||
lda #'='
|
||||
jsr COUT
|
||||
|
||||
>SYSCALL SYS.COutA
|
||||
lda hVarValue
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTP
|
||||
jsr CROUT
|
||||
|
||||
bra .97
|
||||
|
||||
.7 >PUSHB hVarValue
|
||||
>PUSHB hVarName
|
||||
ldy #S.PS.hENV
|
||||
>PUSHB (pPs),y
|
||||
>SYSCALL SYS.SetEnvVarH
|
||||
|
||||
>SYSCALL SYS.PSTROutA
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
|
||||
clc
|
||||
|
||||
.97 php
|
||||
pha
|
||||
lda hVarValue
|
||||
@ -314,7 +339,8 @@ EXEC.CMD.DATE >SYSCALL SYS.MLIGetTime
|
||||
bcs .9
|
||||
>PUSHW DATELO
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTDATE
|
||||
jsr CROUT
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -322,7 +348,8 @@ EXEC.CMD.TIME >SYSCALL SYS.MLIGetTime
|
||||
bcs .9
|
||||
>PUSHW TIMELO
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTTIME
|
||||
jsr CROUT
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -332,10 +359,9 @@ EXEC.CMD.ECHO lda hExecArgs
|
||||
bcs .99
|
||||
|
||||
pha
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTP
|
||||
jsr CROUT
|
||||
>SYSCALL SYS.PSTROutA
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
pla
|
||||
>SYSCALL SYS.FreeMemA
|
||||
clc
|
||||
@ -363,7 +389,7 @@ EXEC.CMD.TYPE lda hExecArgs
|
||||
.2 dec ZPPTR2
|
||||
|
||||
lda (ZPPTR1)
|
||||
jsr COUT
|
||||
>SYSCALL SYS.COutA
|
||||
inc ZPPTR1
|
||||
bne .1
|
||||
inc ZPPTR1+1
|
||||
@ -378,6 +404,16 @@ EXEC.CMD.TYPE lda hExecArgs
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
EXEC.CMD.READ
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
EXEC.CMD.PAUSE ldy #bPause
|
||||
lda #$80
|
||||
sta (pData),y
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
EXEC.CMD.EXIT ldy #bEXIT
|
||||
lda #$FF
|
||||
sta (pData),y
|
||||
|
300
SBIN/SHELL.S.txt
300
SBIN/SHELL.S.txt
@ -11,7 +11,6 @@ AUTO 6
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/PRODOS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
@ -41,28 +40,35 @@ CS.START cld
|
||||
*--------------------------------------
|
||||
L.LIBSTR .DA LIBSTR
|
||||
L.MSG.GREETINGS .DA MSG.GREETINGS
|
||||
L.MSG.UNKNOWN .DA MSG.UNKNOWN
|
||||
L.MSG.SYNERR .DA MSG.SYNERR
|
||||
L.MSG.ERROR .DA MSG.ERROR
|
||||
L.ENV.PATH .DA ENV.PATH
|
||||
J.INTCMDS .DA EXEC.CMD.CD
|
||||
.DA EXEC.CMD.SET
|
||||
.DA EXEC.CMD.DATE
|
||||
.DA EXEC.CMD.TIME
|
||||
.DA EXEC.CMD.ECHO
|
||||
.DA EXEC.CMD.TYPE
|
||||
.DA EXEC.CMD.EXIT
|
||||
.DA EXEC.CMD.PAUSE
|
||||
.DA EXEC.CMD.READ
|
||||
.DA EXEC.CMD.SET
|
||||
.DA EXEC.CMD.TIME
|
||||
.DA EXEC.CMD.TYPE
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
CS.INIT >DEBUG
|
||||
>LDYA L.LIBSTR
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
bcs .9
|
||||
sta hLIBSTR
|
||||
|
||||
ldy #S.PS.hARGS Batch mode ?
|
||||
ldy #S.PS.hARGS Batch file ?
|
||||
lda (pPs),y
|
||||
beq CS.INIT.INTERACTIVE no,continue starting interactive
|
||||
|
||||
jsr OpenTxtFileA
|
||||
bcs .9
|
||||
|
||||
ldy #bExitOnEOF
|
||||
lda #$FF
|
||||
sta (pData),y
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -70,17 +76,11 @@ CS.INIT.INTERACTIVE
|
||||
jsr History.Init
|
||||
bcs .9
|
||||
|
||||
ldy #S.PS.ID
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
ldy #S.PS.hOUTDEV
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
ldy #S.PS.hINDEV
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
>PUSHW L.MSG.GREETINGS
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
>LDYA L.MSG.GREETINGS
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
|
||||
lda (pPs)
|
||||
ora #S.PS.F.EVENT Now accept events
|
||||
@ -92,56 +92,77 @@ CS.INIT.INTERACTIVE
|
||||
CS.RUN lda #0
|
||||
sta (pData)
|
||||
|
||||
lda #"$"
|
||||
jsr COUT
|
||||
lda #" "
|
||||
jsr COUT
|
||||
ldy #bPause
|
||||
lda (pData),y
|
||||
bpl .10
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 jsr A2osX.SLEEP
|
||||
.10 ldy #hInputFile batch mode ?
|
||||
lda (pData),y
|
||||
bne .2
|
||||
|
||||
jsr PrintPrompt
|
||||
|
||||
.1 >SYSCALL SYS.Sleep
|
||||
lda (pData)
|
||||
bpl .1
|
||||
|
||||
.2 and #$7F
|
||||
and #$7F
|
||||
sta (pData)
|
||||
bra .3
|
||||
|
||||
.2 jsr ReadTxtFile
|
||||
bcs .81
|
||||
|
||||
.3 lda (pData)
|
||||
beq CS.RUN Empty line
|
||||
|
||||
ldy #1
|
||||
lda (pData),y
|
||||
cmp #'#' Comment
|
||||
beq CS.RUN
|
||||
|
||||
jsr History.Add
|
||||
ldy #hInputFile
|
||||
lda (pData),y
|
||||
bne .32
|
||||
|
||||
ldy #bEchoOff
|
||||
lda (pData),y
|
||||
beq .31
|
||||
|
||||
>LDYA pData
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
|
||||
.31 jsr History.Add
|
||||
|
||||
.32 >LDYA pData
|
||||
>SYSCALL SYS.NewPStrYA
|
||||
bcs .99
|
||||
|
||||
ldy #hCmdLine
|
||||
sta (pData),y
|
||||
jsr EXEC.CMD
|
||||
bcc .3
|
||||
bcc .4
|
||||
|
||||
pha
|
||||
lda #"["
|
||||
jsr COUT
|
||||
pla
|
||||
jsr PRBYTE
|
||||
lda #"]"
|
||||
jsr COUT
|
||||
jsr CROUT
|
||||
jsr PrintError
|
||||
|
||||
.3 ldy #hCmdLine
|
||||
.4 ldy #hCmdLine
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.FreeMemA
|
||||
ldy #hCmdLine
|
||||
lda #0
|
||||
sta (pData),y
|
||||
|
||||
ldy #bEXIT
|
||||
.8 ldy #bEXIT
|
||||
lda (pData),y
|
||||
bne .99
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.81 jsr CloseTxtFile
|
||||
bra .8
|
||||
|
||||
.99 sec
|
||||
rts
|
||||
@ -150,8 +171,8 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
lda (pEvent),y
|
||||
ldy #S.PS.hINDEV
|
||||
cmp (pPs),y
|
||||
|
||||
bne .9
|
||||
|
||||
lda (pEvent)
|
||||
and #S.EVT.F.KEY is it a KEY event?
|
||||
beq .9
|
||||
@ -164,7 +185,37 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
lda (pEvent),y
|
||||
tax
|
||||
|
||||
cpx #$20
|
||||
ldy #bPause
|
||||
lda (pData),y
|
||||
bpl .11
|
||||
|
||||
lda #0
|
||||
sta (pData),y
|
||||
bra .8
|
||||
|
||||
.11 ldy #hInputFile Batch mode ?
|
||||
lda (pData),y
|
||||
beq .10
|
||||
|
||||
cpx #3 test Ctrl-c
|
||||
bne .12
|
||||
|
||||
jsr CloseTxtFile
|
||||
ldy #bExitOnEOF
|
||||
lda (pData),y
|
||||
ldy #bExit
|
||||
sta (pData),y
|
||||
clc
|
||||
rts
|
||||
|
||||
.12 cpx #19 test Ctrl-s
|
||||
bne .8
|
||||
ldy #bPause
|
||||
lda #$80
|
||||
sta (pData),y
|
||||
bra .8
|
||||
|
||||
.10 cpx #$20
|
||||
bcs .1
|
||||
jsr CS.EVENT.CTRL.CHAR
|
||||
bra .8
|
||||
@ -185,8 +236,7 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
txa
|
||||
sta (pData),y
|
||||
|
||||
ora #$80
|
||||
jsr COUT
|
||||
>SYSCALL SYS.COutA
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
@ -195,64 +245,89 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.EVENT.CTRL.CHAR
|
||||
cmp #13 CR
|
||||
cpx #13 CR
|
||||
bne .10
|
||||
jsr CROUT
|
||||
txa
|
||||
>SYSCALL SYS.COutA
|
||||
lda (pData) CmdBuffer
|
||||
ora #$80
|
||||
sta (pData)
|
||||
clc
|
||||
rts
|
||||
|
||||
.10 cmp #3
|
||||
.10 cpx #3 Ctrl-C
|
||||
bne .1
|
||||
|
||||
jsr CmdBuffer.CLR
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 cmp #8 BS (left arrow)
|
||||
.1 cpx #8 BS (left arrow)
|
||||
bne .2
|
||||
jsr CmdBuffer.DEL
|
||||
clc
|
||||
rts
|
||||
|
||||
.2 cmp #10 LF (down arrow)
|
||||
.2 cpx #10 LF (down arrow)
|
||||
bne .3
|
||||
|
||||
jsr HISTORY.GETNEXT
|
||||
clc
|
||||
rts
|
||||
|
||||
.3 cmp #11 VT (up arrow)
|
||||
.3 cpx #11 VT (up arrow)
|
||||
bne .4
|
||||
|
||||
jsr HISTORY.GETPREV
|
||||
clc
|
||||
rts
|
||||
|
||||
.4 cmp #21 NAK (right arrow)
|
||||
.4 cpx #21 NAK (right arrow)
|
||||
bne .8
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.8 jsr PRBYTE
|
||||
clc
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT jsr History.Quit
|
||||
lda hLIBSTR
|
||||
|
||||
ldy #hInputFile
|
||||
lda (pData),y
|
||||
beq .1
|
||||
>SYSCALL SYS.MLICloseA
|
||||
|
||||
.1 ldy #hInputBuffer
|
||||
lda (pData),y
|
||||
beq .2
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
.2 lda hLIBSTR
|
||||
>SYSCALL SYS.UnloadLibA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
PrintPrompt lda #"$"
|
||||
>SYSCALL SYS.COutA
|
||||
lda #" "
|
||||
>SYSCALL SYS.COutA
|
||||
rts
|
||||
*--------------------------------------
|
||||
PrintError pha
|
||||
>PUSHA
|
||||
>LDYA L.MSG.ERROR
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
pla
|
||||
rts
|
||||
*--------------------------------------
|
||||
CmdBuffer.PRINT ldy #0
|
||||
.1 iny
|
||||
lda (pData),y
|
||||
ora #$80
|
||||
jsr COUT
|
||||
>SYSCALL SYS.COutA
|
||||
tya
|
||||
cmp (pData)
|
||||
bne .1
|
||||
@ -265,40 +340,92 @@ CmdBuffer.CLR jsr CmdBuffer.DEL
|
||||
CmdBuffer.DEL lda (pData)
|
||||
beq .9
|
||||
lda #8
|
||||
jsr COUT
|
||||
>SYSCALL SYS.COutA
|
||||
lda (pData)
|
||||
dec
|
||||
sta (pData)
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PRBYTE pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$B0
|
||||
cmp #$BA
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 jsr COUT
|
||||
OpenTxtFileA >SYSCALL SYS.MLIOpenA
|
||||
bcs .9
|
||||
|
||||
ldy #hInputFile
|
||||
sta (pData),y
|
||||
pha
|
||||
txa
|
||||
ldy #hInputBuffer
|
||||
sta (pData),y
|
||||
|
||||
>PUSHBI $0D Line separator for TXT file
|
||||
>PUSHBI $FF
|
||||
pla
|
||||
and #$0F
|
||||
ora #$B0
|
||||
cmp #$BA
|
||||
bcc COUT
|
||||
adc #6
|
||||
bra COUT
|
||||
>PUSHA
|
||||
>SYSCALL SYS.MLINewLine
|
||||
bcc .9
|
||||
pha
|
||||
jsr CloseTxtFile
|
||||
pla
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CROUT lda #13
|
||||
ReadTxtFile >PUSHWI 127
|
||||
>PUSHWI TmpBuffer256+1
|
||||
ldy #hInputFile
|
||||
lda (pData),y
|
||||
>PUSHA
|
||||
>SYSCALL SYS.MLIRead
|
||||
bcs .9
|
||||
|
||||
lda TmpBuffer256,y Y,A=Bytes read
|
||||
cmp #$0D
|
||||
bne .10
|
||||
|
||||
dey
|
||||
|
||||
.10 tya
|
||||
sta (pData)
|
||||
|
||||
.1 lda TmpBuffer256,y
|
||||
sta (pData),y
|
||||
dey
|
||||
bne .1
|
||||
|
||||
lda #'>'
|
||||
>SYSCALL SYS.COutA
|
||||
lda #'"'
|
||||
>SYSCALL SYS.COutA
|
||||
>LDYA pData
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
lda #'"'
|
||||
>SYSCALL SYS.COutA
|
||||
lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
COUT phx
|
||||
phy
|
||||
ldx #DEVMGR.COUT
|
||||
jsr pDevJmp
|
||||
ply
|
||||
plx
|
||||
CloseTxtFile ldy #hInputArgs
|
||||
lda (pData),y
|
||||
beq .1
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
.1 ldy #hInputFile
|
||||
lda (pData),y
|
||||
beq .9
|
||||
|
||||
>SYSCALL SYS.MLICloseA
|
||||
ldy #hInputBuffer
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
.9 lda #0
|
||||
ldy #hInputArgs
|
||||
sta (pData),y
|
||||
ldy #hInputFile
|
||||
sta (pData),y
|
||||
ldy #hInputBuffer
|
||||
sta (pData),y
|
||||
rts
|
||||
pDevJmp jmp (pDev)
|
||||
*--------------------------------------
|
||||
.INB SBIN/SHELL.S.CMD
|
||||
.INB SBIN/SHELL.S.HIS
|
||||
@ -307,18 +434,21 @@ CS.END
|
||||
*--------------------------------------
|
||||
ENV.PATH >PSTRING "PATH"
|
||||
CMDS >PSTRING "CD"
|
||||
>PSTRING "SET"
|
||||
>PSTRING "DATE"
|
||||
>PSTRING "TIME"
|
||||
>PSTRING "ECHO"
|
||||
>PSTRING "TYPE"
|
||||
>PSTRING "EXIT"
|
||||
>PSTRING "PAUSE"
|
||||
>PSTRING "READ"
|
||||
>PSTRING "SET"
|
||||
>PSTRING "TIME"
|
||||
>PSTRING "TYPE"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
LIBSTR >PSTRING "libstr.o"
|
||||
MSG.GREETINGS >CSTRING "\nA2osX-Shell on Dev=(%h:%h),PS=%h\n\n"
|
||||
MSG.UNKNOWN >CSTRING "Command Not Found\n"
|
||||
MSG.SYNERR >CSTRING "Syntax Error Or Invalid Pathname\n"
|
||||
MSG.GREETINGS >PSTRING "\nA2osX-Shell on Dev=%h\n\n"
|
||||
MSG.ERROR >PSTRING "[%h]\n"
|
||||
*MSG.NOTFOUND >CSTRING "Command Not Found\n"
|
||||
*MSG.SYNERR >CSTRING "Syntax Error Or Invalid Pathname\n"
|
||||
hLIBSTR .BS 1
|
||||
hNEWPATH .BS 1
|
||||
hExecCmd .BS 1
|
||||
@ -333,10 +463,16 @@ ExecCmdIdx .BS 1
|
||||
.OR 0
|
||||
DS.START
|
||||
CmdBuffer .BS CmdBuffer.MAX+1
|
||||
bEXIT .BS 1
|
||||
bPause .BS 1
|
||||
bExit .BS 1
|
||||
bEchoOff .BS 1
|
||||
hCmdLine .BS 1
|
||||
hCmdHistory .BS 1
|
||||
CmdHistory.IDX .BS 1
|
||||
bExitOnEOF .BS 1
|
||||
hInputFile .BS 1
|
||||
hInputArgs .BS 1
|
||||
hInputBuffer .BS 1
|
||||
CmdHistory.END .BS 1
|
||||
DS.END
|
||||
.ED
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
ZPFrameBase1 .EQ ZPBIN
|
||||
@ -20,6 +18,8 @@ ZPFramePtr1 .EQ ZPBIN+4
|
||||
ZPFrameBase2 .EQ ZPBIN+6
|
||||
ZPFrameLen2 .EQ ZPBIN+8
|
||||
ZPFramePtr2 .EQ ZPBIN+10
|
||||
ZPIPCfgPtr .EQ ZPBIN+12
|
||||
ZPIPDevPtr .EQ ZPBIN+14
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -40,16 +40,26 @@ CS.START cld
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.MSG.HELP .DA MSG.HELP
|
||||
L.CFGFILENAME .DA CFGFILENAME
|
||||
L.IPCFG .DA IPCFG
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBTCPIP
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
bcs .99
|
||||
|
||||
sta hLIBTCPIP
|
||||
ldx #0
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPs),y
|
||||
bne .10
|
||||
>LDYA L.MSG.HELP
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.10 ldx #0
|
||||
.1 stz IPCFG,x
|
||||
inx
|
||||
cpx #S.IPCFG
|
||||
@ -103,14 +113,16 @@ CS.INIT.DEV ldy #S.PS.hARGS
|
||||
|
||||
ldx #DEVMGR.OPEN
|
||||
jsr pDevJmp
|
||||
|
||||
bcs .98
|
||||
|
||||
ldx #DEVMGR.GETINFO
|
||||
jsr pDevJmp
|
||||
>STYA ZPQuickPtr1
|
||||
bcs .98
|
||||
>STYA ZPIPDevPtr
|
||||
|
||||
ldy #1
|
||||
ldx #S.IPCFG.MAC
|
||||
.1 lda (ZPQuickPtr1),y
|
||||
.1 lda (ZPIPDevPtr),y
|
||||
sta IPCFG,x
|
||||
iny
|
||||
inx
|
||||
@ -138,7 +150,7 @@ CS.INIT.CFGFILE >LDYA L.CFGFILENAME
|
||||
>STYA hCfgFileLen
|
||||
txa
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
>STYA ZPIPCfgPtr
|
||||
|
||||
|
||||
|
||||
@ -431,11 +443,11 @@ DNSListener ldy #S.DNS.F+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
GetIPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
||||
>STYA ZPQuickPtr1
|
||||
>STYA ZPIPCfgPtr
|
||||
|
||||
ldy #S.IPCFG
|
||||
.1 dey
|
||||
lda (ZPQuickPtr1),y
|
||||
lda (ZPIPCfgPtr),y
|
||||
sta IPCFG,y
|
||||
tya
|
||||
bne .1
|
||||
@ -492,11 +504,11 @@ CopyFramePtr12 dey
|
||||
bne CopyFramePtr12
|
||||
rts
|
||||
*--------------------------------------
|
||||
pDevJmp jmp (pDev)
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
LIBTCPIP >PSTRING "libtcpip.o"
|
||||
CFGFILENAME >PSTRING "%ETC%TCPIP.CONF"
|
||||
MSG.HELP >PSTRING "Usage: TCPIP ETHx\n"
|
||||
CFGFILENAME >PSTRING "${A2OSX}ETC/TCPIP.CONF"
|
||||
DefaultHostName >CSTRING "a2osx-host"
|
||||
hLIBTCPIP .BS 1
|
||||
hDEVNAME .BS 1
|
||||
|
@ -10,8 +10,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
@ -36,7 +34,7 @@ L.LIBTCPIP .DA LIBTCPIP
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBTCPIP
|
||||
>LOADLIBYA
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
bcs .99
|
||||
|
||||
sta hLIBTCPIP
|
||||
|
@ -14,6 +14,7 @@ AUTO 6
|
||||
* X = hMem of Code Segment
|
||||
*--------------------------------------
|
||||
S.LoadBinA sta S.LoadBinA.hFilename save file path
|
||||
|
||||
jsr S.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
@ -21,12 +22,11 @@ S.LoadBinA sta S.LoadBinA.hFilename save file path
|
||||
tay
|
||||
|
||||
.1 lda (ZPQuickPtr1),y convert to UPPERCASE
|
||||
cmp #$61 "a"
|
||||
cmp #'a'
|
||||
bmi .2
|
||||
cmp #$7B "z"+1
|
||||
cmp #'z'+1
|
||||
bpl .2
|
||||
sec
|
||||
sbc #$20
|
||||
eor #$20
|
||||
sta (ZPQuickPtr1),y
|
||||
.2 dey
|
||||
bne .1
|
||||
|
201
SYS/KERNEL.S.CIO.txt
Normal file
201
SYS/KERNEL.S.CIO.txt
Normal file
@ -0,0 +1,201 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.SRC
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
*--------------------------------------
|
||||
S.DecOutA tay
|
||||
lda #0
|
||||
S.DecOutYA >STYA HEX
|
||||
stz BCD
|
||||
stz BCD+1
|
||||
stz BCD+2
|
||||
|
||||
ldx #16 let's roll 16 bits
|
||||
sed
|
||||
.2 asl HEX
|
||||
rol HEX+1
|
||||
php cpy will disturb carry while BCD adc
|
||||
ldy #0
|
||||
.3 plp
|
||||
lda BCD,y
|
||||
adc BCD,y
|
||||
sta BCD,y
|
||||
php
|
||||
iny
|
||||
cpy #3 Last byte of BCDBUF?
|
||||
bne .3
|
||||
plp
|
||||
dex
|
||||
bne .2
|
||||
|
||||
cld
|
||||
|
||||
stz bL0Flag
|
||||
ldx #2
|
||||
|
||||
.4 lda BCD,x
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
bne .5
|
||||
bit bL0Flag
|
||||
bpl .6
|
||||
.5 sec
|
||||
ror bL0Flag
|
||||
ora #$30
|
||||
jsr S.COutA
|
||||
bcs .9
|
||||
|
||||
.6 lda BCD,x
|
||||
and #$0F
|
||||
bne .7
|
||||
bit bL0Flag
|
||||
bpl .8
|
||||
.7 sec
|
||||
ror bL0Flag
|
||||
ora #$30
|
||||
jsr S.COutA
|
||||
bcs .9
|
||||
|
||||
.8 dex
|
||||
bpl .4
|
||||
|
||||
bit bL0Flag
|
||||
bmi .9
|
||||
lda #$30
|
||||
jsr S.COutA
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
S.HexOutYA phy
|
||||
jsr S.HexOutA
|
||||
bcs S.COutA.RTS
|
||||
pla
|
||||
*--------------------------------------
|
||||
S.HexOutA pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$30
|
||||
cmp #$3A
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 jsr S.COutA
|
||||
bcs S.COutA.RTS
|
||||
pla
|
||||
and #$0F
|
||||
ora #$30
|
||||
cmp #$3A
|
||||
bcc S.COutA
|
||||
adc #6
|
||||
*--------------------------------------
|
||||
S.COutA phx
|
||||
phy
|
||||
ldx #DEVMGR.COUT
|
||||
jsr pDevJmp
|
||||
ply
|
||||
plx
|
||||
S.COutA.RTS rts
|
||||
*--------------------------------------
|
||||
* Mini printf for PSTR
|
||||
* %d : byte
|
||||
* %D : word
|
||||
* %h : hex byte
|
||||
* %H : hex word
|
||||
* \n : CR
|
||||
*--------------------------------------
|
||||
S.PSTROutA jsr S.GetMemPtrA
|
||||
S.PSTROutYA >STYA ZPQuickPtr1
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 iny
|
||||
lda (ZPQuickPtr1),y
|
||||
cmp #'\'
|
||||
|
||||
bne .2
|
||||
tya
|
||||
cmp (ZPQuickPtr1)
|
||||
beq .8
|
||||
|
||||
iny
|
||||
lda (ZPQuickPtr1),y
|
||||
cmp #'n'
|
||||
bne .6
|
||||
lda #13
|
||||
bra .6
|
||||
|
||||
.2 cmp #'%'
|
||||
bne .6
|
||||
|
||||
tya
|
||||
cmp (ZPQuickPtr1)
|
||||
beq .8
|
||||
|
||||
iny
|
||||
lda (ZPQuickPtr1),y
|
||||
cmp #'d'
|
||||
bne .3
|
||||
phy
|
||||
>PULLA
|
||||
jsr S.DecOutA
|
||||
ply
|
||||
bcc .7
|
||||
rts
|
||||
|
||||
.3 cmp #'D'
|
||||
bne .4
|
||||
phy
|
||||
>PULLYA
|
||||
jsr S.DecOutYA
|
||||
ply
|
||||
bcc .7
|
||||
rts
|
||||
|
||||
.4 cmp #'h'
|
||||
bne .5
|
||||
phy
|
||||
>PULLA
|
||||
jsr S.HexOutA
|
||||
ply
|
||||
bcc .7
|
||||
rts
|
||||
|
||||
.5 cmp #'H'
|
||||
bne .51
|
||||
phy
|
||||
>PULLYA
|
||||
jsr S.HexOutYA
|
||||
ply
|
||||
bcc .7
|
||||
rts
|
||||
|
||||
.51 tax
|
||||
lda #'%'
|
||||
jsr S.COutA
|
||||
bcs .9
|
||||
txa
|
||||
|
||||
.6 jsr S.COutA
|
||||
bcs .9
|
||||
|
||||
.7 tya
|
||||
cmp (ZPQuickPtr1)
|
||||
bne .1
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
HEX .BS 2
|
||||
BCD .BS 3
|
||||
bL0Flag .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.CIO
|
||||
LOAD SYS/KERNEL.S
|
||||
ASM
|
@ -179,6 +179,7 @@ DevMgr.DevID .BS 1
|
||||
DevMgr.LastDevID .BS 1
|
||||
*--------------------------------------
|
||||
DevMgr.Count .EQ 2
|
||||
DevMgr.SYS.BASL0 .EQ $800
|
||||
*--------------------------------------
|
||||
DevMgr.NUL cld
|
||||
jmp (DevMgr.NUL.Code,x)
|
||||
@ -188,7 +189,7 @@ DevMgr.NUL cld
|
||||
.HS 00.00
|
||||
.HS 00.00.00.00
|
||||
*--------------------------------------
|
||||
DevMgr.SYS cld #S.DEV.F.EVENT
|
||||
DevMgr.SYS cld
|
||||
jmp (DevMgr.SYS.Code,x)
|
||||
.DA #S.DEV.F.INUSE+S.DEV.F.EVENT+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR
|
||||
>PSTRING "SYS" NAME
|
||||
@ -205,21 +206,59 @@ DevMgr.NUL.Code .DA .8 OPEN
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.Code .DA .8 OPEN
|
||||
DevMgr.SYS.Code .DA DevMgr.SYS.Open
|
||||
.DA DevMgr.SYS.GetEvent
|
||||
.DA .8 COUT
|
||||
.DA DevMgr.SYS.COut
|
||||
.DA .8 CLOSE
|
||||
.DA .8 GETINFO
|
||||
.DA .8 IRQ
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI
|
||||
stz DevMgr.SYS.CH
|
||||
stz DevMgr.SYS.CV
|
||||
|
||||
ldx #0
|
||||
|
||||
ldy #0
|
||||
.1 lda DevMgr.SYS.TITLE,y
|
||||
beq .2
|
||||
|
||||
jsr DevMgr.SYS.SetCharAtYX
|
||||
iny
|
||||
bne .1
|
||||
|
||||
.2 lda #$20
|
||||
jsr DevMgr.SYS.SetCharAtYX
|
||||
iny
|
||||
cpy #80
|
||||
bne .2
|
||||
|
||||
jsr DevMgr.SYS.Home
|
||||
|
||||
lda A2osX.SCREENS
|
||||
ora #A2osX.SCREENS.S
|
||||
sta A2osX.SCREENS
|
||||
lda #A2osX.SCREENS.S
|
||||
jsr S.ScreenSelectA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.GetEvent
|
||||
lda A2osX.ASCREEN
|
||||
and #A2osX.SCREENS.S is screen active?
|
||||
beq .9
|
||||
|
||||
jsr S.GetKeyboardEvent
|
||||
ldx DevMgr.SYS.CPULOADI
|
||||
lda DevMgr.SYS.CPULOADC,x
|
||||
sta DevMgr.SYS.BASL0+38
|
||||
dec DevMgr.SYS.CPULOADI
|
||||
bpl .1
|
||||
lda #3
|
||||
sta DevMgr.SYS.CPULOADI
|
||||
|
||||
.1 jsr S.GetKeyboardEvent
|
||||
bcs .9
|
||||
rts
|
||||
|
||||
@ -227,6 +266,163 @@ DevMgr.SYS.GetEvent
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.COut phx
|
||||
phy
|
||||
cmp #13
|
||||
bne .1
|
||||
jsr DevMgr.SYS.CROut
|
||||
ply
|
||||
plx
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 ldy DevMgr.SYS.CH
|
||||
ldx DevMgr.SYS.CV
|
||||
ora #$80
|
||||
jsr DevMgr.SYS.SetCharAtYX
|
||||
jsr DevMgr.SYS.FSOut
|
||||
ply
|
||||
plx
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.FSOut
|
||||
lda DevMgr.SYS.CH
|
||||
cmp #79
|
||||
beq DevMgr.SYS.CROut1
|
||||
inc DevMgr.SYS.CH
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.CROut
|
||||
jsr DevMgr.SYS.ClrEOL
|
||||
DevMgr.SYS.CROut1
|
||||
stz DevMgr.SYS.CH
|
||||
ldx DevMgr.SYS.CV
|
||||
cpx #23
|
||||
beq DevMgr.SYS.Scroll
|
||||
inc DevMgr.SYS.CV
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.ClrEOL
|
||||
ldx DevMgr.SYS.CV
|
||||
lda #$A0
|
||||
ldy DevMgr.SYS.CH
|
||||
.1 cpy #79
|
||||
beq .2
|
||||
jsr DevMgr.SYS.SetCharAtYX
|
||||
iny
|
||||
bne .1
|
||||
.2 rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.Scroll
|
||||
ldx #1
|
||||
.1 lda DevMgr.SYS.BASEL,x
|
||||
sta ZPDRV
|
||||
lda DevMgr.SYS.BASEH,x
|
||||
sta ZPDRV+1
|
||||
inx
|
||||
lda DevMgr.SYS.BASEL,x
|
||||
sta ZPDRV+2
|
||||
lda DevMgr.SYS.BASEH,x
|
||||
sta ZPDRV+3
|
||||
|
||||
ldy #39
|
||||
sta SETWRITEAUX
|
||||
sta SETREADAUX
|
||||
.2 lda (ZPDRV+2),y
|
||||
sta (ZPDRV),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
ldy #39
|
||||
sta CLRWRITEAUX
|
||||
sta CLRREADAUX
|
||||
.3 lda (ZPDRV+2),y
|
||||
sta (ZPDRV),y
|
||||
dey
|
||||
bpl .3
|
||||
|
||||
cpx #23
|
||||
bne .1
|
||||
|
||||
ldy #39
|
||||
lda #$A0
|
||||
.4 sta SETWRITEAUX
|
||||
sta (ZPDRV+2),y
|
||||
sta CLRWRITEAUX
|
||||
sta (ZPDRV+2),y
|
||||
dey
|
||||
bpl .4
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.ClrLineAtX
|
||||
lda DevMgr.SYS.BASEL,x
|
||||
sta ZPDRV
|
||||
lda DevMgr.SYS.BASEH,x
|
||||
sta ZPDRV+1
|
||||
|
||||
lda #$A0
|
||||
|
||||
ldy #39
|
||||
sta SETWRITEAUX
|
||||
.1 sta (ZPDRV),y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
ldy #39
|
||||
sta CLRWRITEAUX
|
||||
.2 sta (ZPDRV),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.Home ldx #23
|
||||
|
||||
.1 jsr DevMgr.SYS.ClrLineAtX
|
||||
dex
|
||||
bne .1
|
||||
|
||||
stz DevMgr.SYS.CH
|
||||
lda #1
|
||||
sta DevMgr.SYS.CV
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.SetCharAtYX
|
||||
cmp #$40
|
||||
bcc .1
|
||||
cmp #$5F
|
||||
bcs .1
|
||||
and #$3F
|
||||
|
||||
.1 phy
|
||||
pha
|
||||
lda DevMgr.SYS.BASEL,x
|
||||
sta ZPDRV
|
||||
lda DevMgr.SYS.BASEH,x
|
||||
sta ZPDRV+1
|
||||
tya
|
||||
lsr
|
||||
tay
|
||||
bcs .2
|
||||
sta SETWRITEAUX
|
||||
|
||||
.2 pla
|
||||
sta (ZPDRV),y
|
||||
sta CLRWRITEAUX
|
||||
ply
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.CH .BS 1
|
||||
DevMgr.SYS.CV .BS 1
|
||||
DevMgr.SYS.CPULOADI .BS 1
|
||||
DevMgr.SYS.CPULOADC .AS -"|/-\"
|
||||
*--------------------------------------
|
||||
DevMgr.SYS.TITLE >CSTRING "A2osX System Screen"
|
||||
DevMgr.SYS.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
|
||||
DevMgr.SYS.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B
|
||||
*--------------------------------------*--------------------------------------
|
||||
DevMgr.End .EQ *
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.DEV
|
||||
|
@ -13,9 +13,6 @@ AUTO 6
|
||||
* none
|
||||
*--------------------------------------
|
||||
S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
|
||||
>LDYAI MSG.DRVLOAD
|
||||
jsr S.SysScrPPSTRYA
|
||||
|
||||
>PUSHBI $20 Push SEP=' '
|
||||
>PUSHBI 0 Push 0 for getting CMD And ARGS
|
||||
jsr S.PStrGetTkn
|
||||
@ -24,17 +21,24 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
|
||||
|
||||
.1 sta LoadDrv.Cmd
|
||||
stx LoadDrv.Args
|
||||
pha
|
||||
jsr S.SysScrPPSTRA
|
||||
pla
|
||||
jsr S.ExpandPStrA
|
||||
sta LoadDrv.ExpCmd
|
||||
|
||||
>LDYAI ENV.DRV push ENVNAME=DRV
|
||||
jsr S.GetEnvVarYA get value for ENV=$DRV
|
||||
bcs .98
|
||||
sta LoadDrv.Path
|
||||
|
||||
>PUSHB LoadDrv.Cmd push CMD for S.FileSearch
|
||||
>PUSHB LoadDrv.Path
|
||||
jsr S.FileSearch find File in $DRV
|
||||
bcs .97 not Found
|
||||
|
||||
sta LoadDrv.FullName
|
||||
jsr S.LoadBinA
|
||||
bcs .96
|
||||
|
||||
>STYA pCode
|
||||
stx LoadDrv.hMem
|
||||
|
||||
|
||||
lda LoadDrv.Args
|
||||
jsr pCodeJmp call Dev.Detect
|
||||
|
||||
@ -58,7 +62,12 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
|
||||
pla
|
||||
|
||||
.96 pha
|
||||
lda LoadDrv.ExpCmd
|
||||
lda LoadDrv.FullName
|
||||
jsr S.FreeMemA
|
||||
pla
|
||||
|
||||
.97 pha
|
||||
lda LoadDrv.Path
|
||||
jsr S.FreeMemA
|
||||
pla
|
||||
|
||||
@ -72,10 +81,10 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
|
||||
.99 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MSG.DRVLOAD >PSTRING "\nLoadDrv:"
|
||||
LoadDrv.Cmd .BS 1
|
||||
LoadDrv.Args .BS 1
|
||||
LoadDrv.ExpCmd .BS 1
|
||||
LoadDrv.Path .BS 1
|
||||
LoadDrv.FullName .BS 1
|
||||
LoadDrv.hMem .BS 1
|
||||
*--------------------------------------
|
||||
* pCode = .DRV File Loaded Address
|
||||
|
@ -13,86 +13,133 @@ AUTO 6
|
||||
* A = hMem to Expanded String (PSTRING)
|
||||
*--------------------------------------
|
||||
S.ExpandPStrA jsr S.GetMemPtrA
|
||||
S.ExpandPStrYA >STYA R.AX
|
||||
S.ExpandPStrYA >STYA ZPQuickPtr3
|
||||
|
||||
stz TmpBuffer256 init Expanded String len=0
|
||||
stz R.BL reset "in var"
|
||||
|
||||
ldy #0
|
||||
.1 iny
|
||||
lda (R.AX),y
|
||||
cmp #'%'
|
||||
beq .10
|
||||
jmp .7
|
||||
.10 ldx R.BL in var?
|
||||
bne .2
|
||||
sty R.BL no, save start
|
||||
jmp .8 skip this char
|
||||
.2 sty R.BH yes, save end
|
||||
phy save Actual char position
|
||||
tya
|
||||
sec
|
||||
sbc R.BL compute len of %VAR% -1
|
||||
tay
|
||||
lda #0
|
||||
>PUSHYA
|
||||
>PUSHBI 0
|
||||
jsr S.GetMem create VARNAME
|
||||
phx save hMem for discard
|
||||
>STYA R.CX
|
||||
lda R.BH
|
||||
sec
|
||||
sbc R.BL
|
||||
dec skip %
|
||||
sta (R.CX)
|
||||
ldy R.BL
|
||||
|
||||
.10 stz S.ExpandPStrA.Start
|
||||
|
||||
.1 tya
|
||||
cmp (ZPQuickPtr3) End of PSTR?
|
||||
beq .6
|
||||
|
||||
iny
|
||||
.3 inc R.CL
|
||||
bne .4
|
||||
inc R.CH
|
||||
.4 lda (R.AX),y Copy string between % to ENVNAME
|
||||
sta (R.CX)
|
||||
iny
|
||||
cpy R.BH
|
||||
bne .3
|
||||
pla
|
||||
pha Get back ENVNAME hMem
|
||||
>PUSHA
|
||||
lda (ZPQuickPtr3),y
|
||||
|
||||
ldx S.ExpandPStrA.Start
|
||||
bne .3 already in a var?
|
||||
|
||||
cmp #'$' no, found one ?
|
||||
beq .2
|
||||
|
||||
inc TmpBuffer256 no, copy char
|
||||
ldx TmpBuffer256
|
||||
sta TmpBuffer256,x
|
||||
bra .1
|
||||
|
||||
.2 sty S.ExpandPStrA.Start save var start
|
||||
stz S.ExpandPStrA.End
|
||||
bra .1 skip this char
|
||||
|
||||
.3 cmp #'{' in var, "{" after "$"?
|
||||
beq .2
|
||||
|
||||
cmp #'}' end of var?
|
||||
beq .5
|
||||
|
||||
.4 jsr S.ExpandPStrA.VC valid char ?
|
||||
bcs .5 no, end here
|
||||
sty S.ExpandPStrA.End yes, save end
|
||||
bra .1
|
||||
|
||||
.5 lda S.ExpandPStrA.End get end
|
||||
beq .1 empty {} or $/
|
||||
|
||||
phy save current index
|
||||
jsr S.ExpandPStrA.AV
|
||||
ply restore index in string...
|
||||
bra .10 reset start flag and continue
|
||||
|
||||
.6 sty S.ExpandPStrA.End end of PSTR
|
||||
lda S.ExpandPStrA.Start are we in a var?
|
||||
beq .7 no...exit...
|
||||
|
||||
jsr S.ExpandPStrA.AV yes, expand and add to STR
|
||||
|
||||
.7 >LDYAI TmpBuffer256
|
||||
jsr S.NewPStrYA
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.ExpandPStrA.AV
|
||||
ldy #S.PS.hENV
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
jsr S.GetEnvVarH
|
||||
bcs .5
|
||||
pha save hMem of VALUE
|
||||
jsr S.GetMemPtrA
|
||||
>STYA R.DX
|
||||
>STYA ZPQuickPtr1 Store ENV for FindVar
|
||||
|
||||
lda S.ExpandPStrA.End
|
||||
sec
|
||||
sbc S.ExpandPStrA.Start compute len of VAR End-Start+1
|
||||
|
||||
ldx TmpBuffer256
|
||||
inx
|
||||
sta TmpBuffer256,x
|
||||
|
||||
stx ZPQuickPtr2
|
||||
lda /TmpBuffer256
|
||||
sta ZPQuickPtr2+1
|
||||
|
||||
ldy S.ExpandPStrA.Start
|
||||
|
||||
.1 iny
|
||||
inx
|
||||
lda (ZPQuickPtr3),y
|
||||
sta TmpBuffer256,x
|
||||
cpy S.ExpandPStrA.End
|
||||
bne .1
|
||||
|
||||
jsr S.FindVar
|
||||
bcs .9
|
||||
|
||||
ldy #0
|
||||
.41 iny
|
||||
lda (R.DX),y
|
||||
.2 iny
|
||||
lda (ZPQuickPtr1),y
|
||||
cmp #'='
|
||||
bne .2
|
||||
|
||||
.3 iny
|
||||
lda (ZPQuickPtr1),y
|
||||
inc TmpBuffer256
|
||||
ldx TmpBuffer256
|
||||
sta TmpBuffer256,x
|
||||
|
||||
tya
|
||||
cmp (R.DX)
|
||||
bne .41
|
||||
pla
|
||||
jsr S.FreeMemA discard VALUE hMem
|
||||
.5 pla
|
||||
jsr S.FreeMemA discard VARNAME hMem
|
||||
* ldy R.BL TODO:continue scanning from first % found
|
||||
stz R.BL reset "in var"
|
||||
ply
|
||||
bra .8
|
||||
.7 ldx R.BL in var?
|
||||
bne .8 yes, skip this char
|
||||
inc TmpBuffer256
|
||||
ldx TmpBuffer256
|
||||
sta TmpBuffer256,x
|
||||
.8 tya
|
||||
cmp (R.AX) last char?
|
||||
beq .81
|
||||
jmp .1
|
||||
.81 >LDYAI TmpBuffer256
|
||||
jsr S.NewPStrYA
|
||||
cmp (ZPQuickPtr1) last char?
|
||||
bne .3
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
S.ExpandPStrA.VC
|
||||
cmp #'0'
|
||||
bcc .9
|
||||
cmp #'9'+1
|
||||
bcc .8
|
||||
|
||||
cmp #'A'
|
||||
bcc .9
|
||||
cmp #'Z'+1
|
||||
bcc .8
|
||||
|
||||
cmp #'_'
|
||||
bne .9
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.ExpandPStrA.Start .BS 1
|
||||
S.ExpandPStrA.End .BS 1
|
||||
*--------------------------------------
|
||||
* S.CreateEnv
|
||||
* in :
|
||||
@ -140,22 +187,21 @@ S.DupEnvA pha
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* S.GetEnvVarH
|
||||
* S.GetEnvVarA
|
||||
* In:
|
||||
* PULLB = hENV
|
||||
* PULLB = hMem to NAME (PSTRING)
|
||||
* A = hMem to NAME (PSTRING)
|
||||
*--------------------------------------
|
||||
* S.GetEnvVarP
|
||||
* S.GetEnvVarYA
|
||||
* In:
|
||||
* PULLB = hENV
|
||||
* PULLW = PTR to NAME (PSTRING)
|
||||
* Y,A = PTR to NAME (PSTRING)
|
||||
* Out:
|
||||
* A = hMem to VALUE (PSTRING) 0,"" if not exist
|
||||
*--------------------------------------
|
||||
S.GetEnvVarH jsr S.FindVarH
|
||||
bra S.GetEnvVar
|
||||
S.GetEnvVarP jsr S.FindVarP
|
||||
S.GetEnvVar bcc .1
|
||||
S.GetEnvVarA >PULLA
|
||||
jsr S.GetMemPtrA
|
||||
S.GetEnvVarYA >STYA ZPQuickPtr2
|
||||
jsr S.FindVar
|
||||
bcc .1
|
||||
>LDYAI 1 not found
|
||||
>PUSHYA create "" PSTR
|
||||
>PUSHBI 0
|
||||
@ -200,29 +246,25 @@ S.GetEnvVar bcc .1
|
||||
*--------------------------------------
|
||||
* S.SetEnvVarH
|
||||
* In:
|
||||
* PULLB = hENV
|
||||
* PULLB = hMem To Name (PSTRING)
|
||||
* PULLB = hMem To Value (PSTRING)
|
||||
*--------------------------------------
|
||||
* S.SetEnvVarP
|
||||
* In:
|
||||
* PULLB = hENV
|
||||
* PULLW = PTR To Name (PSTRING)
|
||||
* PULLW = PTR To Value (PSTRING)
|
||||
* Out:
|
||||
*--------------------------------------
|
||||
S.SetEnvVarH jsr S.FindVarH
|
||||
php
|
||||
S.SetEnvVarH >PULLA
|
||||
jsr S.GetMemPtrA
|
||||
>STYA ZPQuickPtr2
|
||||
>PULLA
|
||||
jsr S.GetMemPtrA
|
||||
>STYA ZPQuickPtr3 ZPQuickPtr3 = VALUE
|
||||
bra S.SetEnvVar
|
||||
|
||||
S.SetEnvVarP jsr S.FindVarP
|
||||
php
|
||||
>PULLW ZPQuickPtr3 ZPQuickPtr3 = VALUE
|
||||
|
||||
S.SetEnvVar plp
|
||||
S.SetEnvVarP >PULLW ZPQuickPtr2
|
||||
>PULLYA
|
||||
S.SetEnvVar >STYA ZPQuickPtr3 ZPQuickPtr3 = VALUE
|
||||
jsr S.FindVar
|
||||
bcs .3 Not Found,ZPQuickPtr1 -> End Of Env
|
||||
lda (ZPQuickPtr1) Found, Discard current NAME definition
|
||||
sec
|
||||
@ -304,22 +346,20 @@ S.SetEnvVar plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* S.DelEnvVarH
|
||||
* S.DelEnvVarA
|
||||
* In:
|
||||
* PULLB = hENV
|
||||
* PULLB = hMem To Name (PSTRING)
|
||||
*--------------------------------------
|
||||
* S.DelEnvVarP
|
||||
* S.DelEnvVarYA
|
||||
* In:
|
||||
* PULLB = hENV
|
||||
* PULLW = PTR To Name (PSTRING)
|
||||
* Out:
|
||||
*--------------------------------------
|
||||
S.DelEnvVarH jsr S.FindVarH
|
||||
bra S.DelEnvVar
|
||||
S.DelEnvVarP jsr S.FindVarP
|
||||
|
||||
S.DelEnvVar bcs .8 not found, quit
|
||||
S.DelEnvVarA >PULLA get NAME
|
||||
jsr S.GetMemPtrA
|
||||
S.DelEnvVarYA >STYA ZPQuickPtr2 Store VAR Name
|
||||
S.DelEnvVar jsr S.FindVar
|
||||
bcs .8 not found, quit
|
||||
|
||||
lda (ZPQuickPtr1) Found, Discard current NAME definition
|
||||
sec
|
||||
@ -346,15 +386,9 @@ S.DelEnvVar bcs .8 not found, quit
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
* S.FindVarH
|
||||
* S.FindVar
|
||||
* In:
|
||||
* PULLB = hENV
|
||||
* PULLB = hMem to NAME (PSTRING)
|
||||
*--------------------------------------
|
||||
* S.FindVarP
|
||||
* In:
|
||||
* PULLB = hENV
|
||||
* PULLW = PTR to NAME (PSTRING)
|
||||
* ZPQuickPtr2 -> NAME
|
||||
*--------------------------------------
|
||||
* Out:
|
||||
* CC: Found
|
||||
@ -364,20 +398,11 @@ S.DelEnvVar bcs .8 not found, quit
|
||||
* ZPQuickPtr1 -> PTR to Ending 0
|
||||
* ZPQuickPtr2 -> NAME
|
||||
*--------------------------------------
|
||||
S.FindVarH >PULLA get ENV
|
||||
S.FindVar ldy #S.PS.hENV
|
||||
lda (pPs),y
|
||||
jsr S.GetMemPtrA
|
||||
>STYA ZPQuickPtr1 Store ENV
|
||||
>PULLA get NAME
|
||||
jsr S.GetMemPtrA
|
||||
>STYA ZPQuickPtr2 Store VAR Name
|
||||
bra S.FindVar
|
||||
|
||||
S.FindVarP >PULLA get ENV
|
||||
jsr S.GetMemPtrA
|
||||
>STYA ZPQuickPtr1 Store ENV
|
||||
>PULLW ZPQuickPtr2 get NAME
|
||||
|
||||
S.FindVar
|
||||
.1 lda (ZPQuickPtr1)
|
||||
beq .9
|
||||
ldy #0
|
||||
|
@ -1,199 +0,0 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.SRC
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
*--------------------------------------
|
||||
* S.ExecFileA (R)
|
||||
* in :
|
||||
* A = hMem of FilePath (PSTRING)
|
||||
* out :
|
||||
*
|
||||
*--------------------------------------
|
||||
S.ExecFileA jsr S.LoadFileA
|
||||
bcc S.ExecFileAOK
|
||||
rts
|
||||
|
||||
S.ExecFileAOK >STYA S.ExecFileA.DataLen
|
||||
stx S.ExecFileA.hData
|
||||
txa
|
||||
jsr S.GetMemPtrA
|
||||
>STYA S.ExecFileA.DataPtr
|
||||
|
||||
.1 stz TmpBuffer256
|
||||
|
||||
.2 >LDYA S.ExecFileA.DataPtr
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
inc S.ExecFileA.DataPtr
|
||||
bne .21
|
||||
inc S.ExecFileA.DataPtr+1
|
||||
|
||||
.21 lda S.ExecFileA.DataLen
|
||||
bne .22
|
||||
dec S.ExecFileA.DataLen+1
|
||||
.22 dec S.ExecFileA.DataLen
|
||||
|
||||
lda (ZPQuickPtr1)
|
||||
cmp #$0D
|
||||
beq .3
|
||||
inc TmpBuffer256
|
||||
ldx TmpBuffer256
|
||||
sta TmpBuffer256,x
|
||||
|
||||
lda S.ExecFileA.DataLen
|
||||
bne .2
|
||||
lda S.ExecFileA.DataLen+1
|
||||
bne .2
|
||||
|
||||
.3 lda TmpBuffer256
|
||||
beq .4
|
||||
lda TmpBuffer256+1
|
||||
cmp #'*'
|
||||
beq .4
|
||||
lda #'-'
|
||||
jsr S.SysScrCOUTA
|
||||
lda #'>'
|
||||
jsr S.SysScrCOUTA
|
||||
>LDYAI TmpBuffer256
|
||||
jsr S.SysScrPPSTRYA
|
||||
>LDYAI TmpBuffer256
|
||||
jsr S.NewPStrYA
|
||||
bcs .99
|
||||
|
||||
pha
|
||||
jsr S.ExecCmdLineA
|
||||
jsr S.SysScrPRCode
|
||||
pla
|
||||
jsr S.FreeMemA
|
||||
|
||||
.4 lda S.ExecFileA.DataLen
|
||||
bne .1
|
||||
lda S.ExecFileA.DataLen+1
|
||||
bne .1
|
||||
|
||||
jsr .99
|
||||
clc
|
||||
rts
|
||||
|
||||
.99 lda S.ExecFileA.hData
|
||||
jsr S.FreeMemA
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.ExecCmdLineA >PUSHA Push Cmd Line
|
||||
>PUSHBI $20 Push SEP=' '
|
||||
>PUSHBI 0 Push Token IDX
|
||||
jsr S.PStrGetTkn
|
||||
bcs .99
|
||||
|
||||
sta S.ExecFileA.hCMD
|
||||
stx S.ExecFileA.hARGS
|
||||
jsr S.GetMemPtrA
|
||||
>PUSHYA
|
||||
>PUSHWI EXECCMDS
|
||||
jsr S.GetPStrIndex
|
||||
bcs .98
|
||||
|
||||
asl
|
||||
tax
|
||||
lda S.ExecFileA.hARGS
|
||||
jsr S.ExecCmdLine
|
||||
bcs .98
|
||||
|
||||
jsr .98
|
||||
clc
|
||||
rts
|
||||
|
||||
.98 pha
|
||||
lda S.ExecFileA.hARGS
|
||||
jsr S.FreeMemA
|
||||
lda S.ExecFileA.hCMD
|
||||
jsr S.FreeMemA
|
||||
pla
|
||||
.99 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.ExecFileA.hData .BS 1
|
||||
S.ExecFileA.DataLen .BS 2
|
||||
S.ExecFileA.DataPtr .BS 2
|
||||
S.ExecFileA.hCMD .BS 1
|
||||
S.ExecFileA.hARGS .BS 1
|
||||
*--------------------------------------
|
||||
EXECCMDS .HS .03
|
||||
.AS "SET"
|
||||
.HS 04
|
||||
.AS "LOAD"
|
||||
.HS 04
|
||||
.AS "EXEC"
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
S.ExecCmdLine jmp (.1,x)
|
||||
.1 .DA S.SetSysEnvA
|
||||
.DA S.LoadDrvA VCPU!!!!
|
||||
.DA S.CreateProcessA VCPU!!!!
|
||||
*--------------------------------------
|
||||
* S.GetPStrIndex
|
||||
* in :
|
||||
* PULLW = String Table (Array Of PSTR)
|
||||
* PULLW = String To Search (PSTR)
|
||||
* out :
|
||||
* CC: A = String Index In Table
|
||||
*--------------------------------------
|
||||
S.GetPStrIndex >PULLW ZPQuickPtr1
|
||||
>PULLW ZPQuickPtr2
|
||||
ldx #0
|
||||
.1 lda (ZPQuickPtr1)
|
||||
beq .99
|
||||
cmp (ZPQuickPtr2)
|
||||
bne .3
|
||||
tay
|
||||
.2 lda (ZPQuickPtr1),y
|
||||
eor (ZPQuickPtr2),y
|
||||
and #$7F
|
||||
bne .3
|
||||
dey
|
||||
bne .2
|
||||
txa
|
||||
clc
|
||||
rts
|
||||
.3 inx
|
||||
lda (ZPQuickPtr1)
|
||||
sec
|
||||
adc ZPQuickPtr1
|
||||
sta ZPQuickPtr1
|
||||
bcc .1
|
||||
inc ZPQuickPtr1+1
|
||||
bra .1
|
||||
.99 lda #SYSMGR.ERRSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.SetSysEnvA >PUSHA Push Cmd Line
|
||||
>PUSHBI $3D Push SEP='='
|
||||
>PUSHBI 0 Push Token IDX
|
||||
jsr S.PStrGetTkn
|
||||
bcs *
|
||||
phx save X,A for discard
|
||||
pha
|
||||
pha
|
||||
txa
|
||||
>PUSHA
|
||||
pla
|
||||
>PUSHA
|
||||
ldy #S.PS.hENV
|
||||
lda TSKMGR.TABLE,y
|
||||
>PUSHA
|
||||
jsr S.SetEnvVarH
|
||||
|
||||
pla disard NAME
|
||||
jsr S.FreeMemA
|
||||
pla discard VALUE
|
||||
jmp S.FreeMemA
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.EXE
|
||||
LOAD SYS/KERNEL.S
|
||||
ASM
|
@ -47,50 +47,59 @@ S.FileSearch >PULLA Get Search path
|
||||
sec
|
||||
rts
|
||||
|
||||
.10 sta R.BL Store Expanded path list to search
|
||||
>PULLB R.AH Store Filename
|
||||
.10 sta S.FileSearch.hSrch Store Expanded path list to search
|
||||
|
||||
>PULLB S.FileSearch.hFile Store Filename
|
||||
lda #1
|
||||
sta R.BH Start At Token 1
|
||||
sta S.FileSearch.Idx Start At Token 1
|
||||
|
||||
.1 >PUSHB R.BL push expanded path list
|
||||
>PUSHBI $3B Push SEP=';'
|
||||
>PUSHB R.BH Push Token IDX
|
||||
jsr S.PStrGetTkn Get R.BL token in A
|
||||
.1 >PUSHB S.FileSearch.hSrch push expanded path list
|
||||
>PUSHBI $3B Push SEP=';'
|
||||
>PUSHB S.FileSearch.Idx Push Token IDX
|
||||
jsr S.PStrGetTkn Get token in A
|
||||
bcs .98
|
||||
|
||||
sta R.CL Store Token path
|
||||
>PUSHB R.AH push filename
|
||||
>PUSHB R.CL Push Token path
|
||||
sta S.FileSearch.hPath Store Token path
|
||||
>PUSHB S.FileSearch.hFile push filename
|
||||
>PUSHB S.FileSearch.hPath Push Token path
|
||||
jsr S.PStrCat
|
||||
bcs .97
|
||||
|
||||
sta R.CH Store Full path (Token Path+filename)
|
||||
sta S.FileSearch.hFull Store Full path (Token Path+filename)
|
||||
|
||||
jsr S.MLIGetFileInfoA
|
||||
bcc .8
|
||||
|
||||
lda R.CH Discard this Full Path
|
||||
lda S.FileSearch.hFull Discard this Full Path
|
||||
jsr S.FreeMemA
|
||||
lda R.CL Discard Token path
|
||||
lda S.FileSearch.hPath Discard Token path
|
||||
jsr S.FreeMemA
|
||||
inc R.BH Try next Token
|
||||
|
||||
inc S.FileSearch.Idx Try next Token
|
||||
bne .1
|
||||
|
||||
beq .98 go to discard Expanded path list
|
||||
beq .98 go to discard Expanded path list
|
||||
|
||||
.97 lda R.CL Discard Token path
|
||||
.97 lda S.FileSearch.hPath Discard Token path
|
||||
jsr S.FreeMemA
|
||||
|
||||
.98 lda R.BL Discard Expanded Path list
|
||||
.98 lda S.FileSearch.hSrch Discard Expanded hSrch list
|
||||
jsr S.FreeMemA
|
||||
lda #SYSMGR.ERRFNF
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 jsr .97 Dicard all except Full Path
|
||||
lda R.CH
|
||||
.8 jsr .97 Dicard all except Full Path
|
||||
lda S.FileSearch.hFull
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.FileSearch.hSrch .BS 1
|
||||
S.FileSearch.hFile .BS 1
|
||||
S.FileSearch.Idx .BS 1
|
||||
S.FileSearch.hPath .BS 1
|
||||
S.FileSearch.hFull .BS 1
|
||||
*--------------------------------------
|
||||
* S.LoadFileA
|
||||
* in :
|
||||
* A = hMem of FilePath (PSTRING)
|
||||
@ -100,7 +109,9 @@ S.FileSearch >PULLA Get Search path
|
||||
*--------------------------------------
|
||||
S.LoadFileA jsr S.MLIOpenA
|
||||
bcc S.LoadFile
|
||||
S.LoadFile.RTS rts
|
||||
|
||||
S.LoadFile.RTS rts
|
||||
|
||||
S.LoadFileYA jsr S.MLIOpenYA
|
||||
bcs S.LoadFile.RTS
|
||||
|
||||
@ -592,6 +603,6 @@ S.ListDirReadBlock
|
||||
TmpFileName .BS 16
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.FS
|
||||
SAVE SYS/KERNEL.S.FIO
|
||||
LOAD SYS/KERNEL.S
|
||||
ASM
|
@ -19,13 +19,13 @@ S.LoadLibYA jsr S.NewPStrYA
|
||||
jsr S.LoadLibA
|
||||
|
||||
php save error status
|
||||
|
||||
pha save error code/hMem
|
||||
lda S.LoadLibYA.hLibName
|
||||
jsr S.FreeMemA discard STR hMem
|
||||
pla get back error code/hMem
|
||||
plp ..and error status
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
S.LoadLibYA.hLibName .BS 1
|
||||
*--------------------------------------
|
||||
* S.LoadLibA
|
||||
@ -34,26 +34,22 @@ S.LoadLibYA.hLibName .BS 1
|
||||
* out :
|
||||
* A = hMem of Loaded Lib
|
||||
*--------------------------------------
|
||||
S.LoadLibA >PUSHA push libname for S.FileSearch
|
||||
>LDYAI MSG.LOADLIB
|
||||
jsr S.SysScrPPSTRYA
|
||||
>PUSHWI ENV.LIB push ENVNAME=LIB
|
||||
ldy #S.PS.hENV
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
jsr S.GetEnvVarP get value for ENV=LIB
|
||||
S.LoadLibA sta S.LoadLibA.hName push libname for S.FileSearch
|
||||
>LDYAI ENV.LIB push ENVNAME=LIB
|
||||
jsr S.GetEnvVarYA get value for ENV=LIB
|
||||
bcs .99
|
||||
pha save hMem to LIB VALUE
|
||||
>PUSHA Push %LIB% VALUE
|
||||
jsr S.FileSearch find libname in %LIB%
|
||||
|
||||
sta S.LoadLibA.hSrch save hMem to LIB VALUE
|
||||
|
||||
>PUSHB S.LoadLibA.hName
|
||||
>PUSHB S.LoadLibA.hSrch
|
||||
jsr S.FileSearch find libname in $LIB
|
||||
bcs .98
|
||||
pha save hMem to LIB full path
|
||||
jsr S.SysScrPPSTRA
|
||||
pla
|
||||
pha
|
||||
|
||||
sta S.LoadLibA.hPath
|
||||
jsr S.LoadBinA A = hMem of filename full path
|
||||
bcs .97
|
||||
phx
|
||||
stx S.LoadLibA.hMem
|
||||
>STYA pLib
|
||||
|
||||
ldx #LIBMGR.LOAD
|
||||
@ -61,22 +57,25 @@ S.LoadLibA >PUSHA push libname for S.FileSearch
|
||||
|
||||
bcs .97
|
||||
|
||||
plx
|
||||
pla discard LIB PATH
|
||||
jsr S.FreeMemA
|
||||
pla discard LIB VALUE
|
||||
jsr S.FreeMemA
|
||||
txa
|
||||
jsr .97
|
||||
|
||||
lda S.LoadLibA.hMem
|
||||
clc
|
||||
rts
|
||||
|
||||
.97 pla discard LIB PATH
|
||||
jsr S.FreeMemA
|
||||
.98 pla discard LIB VALUE
|
||||
jsr S.FreeMemA
|
||||
.97 lda S.LoadLibA.hPath discard LIB PATH
|
||||
jsr S.FreeMemA
|
||||
|
||||
.98 lda S.LoadLibA.hSrch discard LIB VALUE
|
||||
jsr S.FreeMemA
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
S.LoadLibA.hName .BS 1
|
||||
S.LoadLibA.hSrch .BS 1
|
||||
S.LoadLibA.hPath .BS 1
|
||||
S.LoadLibA.hMem .BS 1
|
||||
*--------------------------------------
|
||||
* S.UnloadLibA
|
||||
* in :
|
||||
* A = hMem To Lib
|
||||
@ -107,8 +106,6 @@ S.UnloadLibA pha
|
||||
pla
|
||||
jmp S.FreeMemA
|
||||
*--------------------------------------
|
||||
MSG.LOADLIB >PSTRING "\nLoadLib:"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.LIB
|
||||
LOAD SYS/KERNEL.S
|
||||
|
@ -1,304 +0,0 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.SRC
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
*--------------------------------------
|
||||
* !!!!!!!! DO NOT USE VCPU16 !!!!!!!!
|
||||
* !!!!!! DO NOT USE ZPQuickPTRs !!!!!
|
||||
*--------------------------------------
|
||||
SYSSCR.BASL .EQ ZPSysScr COUT
|
||||
SYSSCR.BASLTMP .EQ ZPSysScr+2 Scrolling
|
||||
SYSSCR.STRPTR .EQ ZPSysScr+4 PPSTR
|
||||
*--------------------------------------
|
||||
SYSSCR.BASL0 .EQ $800
|
||||
*--------------------------------------
|
||||
* S.SysScrInit
|
||||
*--------------------------------------
|
||||
S.SysScrInit stz SYSSCR.CPULOADI
|
||||
stz SYSSCR.CH
|
||||
stz SYSSCR.CV
|
||||
|
||||
ldx #0
|
||||
|
||||
ldy #0
|
||||
.1 lda SYSSCR.TITLE,y
|
||||
beq .2
|
||||
|
||||
jsr S.SysScrSetCharAtYX
|
||||
iny
|
||||
bne .1
|
||||
|
||||
.2 lda #$20
|
||||
jsr S.SysScrSetCharAtYX
|
||||
iny
|
||||
cpy #80
|
||||
bne .2
|
||||
|
||||
jsr S.SysScrHOME
|
||||
|
||||
lda A2osX.SCREENS
|
||||
ora #A2osX.SCREENS.S
|
||||
sta A2osX.SCREENS
|
||||
lda #A2osX.SCREENS.S
|
||||
jsr S.ScreenSelectA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* S.SysScrPRCode
|
||||
* In:
|
||||
* CC : Prints [OK]
|
||||
* CS : [$$] at column 76-79
|
||||
*--------------------------------------
|
||||
S.SysScrPRCode php save P to keep carry
|
||||
bcs .1
|
||||
lda #0 ensure we have ERR=0 if cc
|
||||
.1 pha
|
||||
ldy #76 HTAB to 76
|
||||
sty SYSSCR.CH
|
||||
lda #"["
|
||||
jsr S.SysScrCOUTA
|
||||
pla
|
||||
pha
|
||||
bne .2
|
||||
|
||||
lda #"O"
|
||||
jsr S.SysScrCOUTA
|
||||
lda #"K"
|
||||
jsr S.SysScrCOUTA
|
||||
bra .3
|
||||
|
||||
.2 jsr S.SysScrPRBYTEA
|
||||
.3 lda #"]"
|
||||
jsr S.SysScrCOUTA
|
||||
pla
|
||||
plp
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.DumpEvent lda (pEvent)
|
||||
jsr S.SysScrPRBYTEA
|
||||
ldy #S.EVT.hDEV
|
||||
lda (pEvent),y
|
||||
jsr S.SysScrPRBYTEA
|
||||
ldy #S.EVT.DATALO
|
||||
lda (pEvent),y
|
||||
jsr S.SysScrPRBYTEA
|
||||
ldy #S.EVT.DATAHI
|
||||
lda (pEvent),y
|
||||
jsr S.SysScrPRBYTEA
|
||||
|
||||
lda #'.'
|
||||
jsr S.SysScrCOUTA
|
||||
ldy #S.EVT.DATAW1
|
||||
lda (pEvent),y
|
||||
jsr S.SysScrPRBYTEA
|
||||
iny
|
||||
lda (pEvent),y
|
||||
jsr S.SysScrPRBYTEA
|
||||
|
||||
lda #'.'
|
||||
jsr S.SysScrCOUTA
|
||||
ldy #S.EVT.DATAW2
|
||||
lda (pEvent),y
|
||||
jsr S.SysScrPRBYTEA
|
||||
iny
|
||||
lda (pEvent),y
|
||||
jmp S.SysScrPRBYTEA
|
||||
*--------------------------------------
|
||||
S.SysScrPPSTRA jsr S.GetMemPtrA
|
||||
S.SysScrPPSTRYA >STYA SYSSCR.STRPTR
|
||||
lda (SYSSCR.STRPTR)
|
||||
beq .9
|
||||
ldy #0
|
||||
.1 iny
|
||||
lda (SYSSCR.STRPTR),y
|
||||
cmp #'\'
|
||||
bne .7
|
||||
tya
|
||||
cmp (SYSSCR.STRPTR)
|
||||
beq .9
|
||||
iny
|
||||
lda (SYSSCR.STRPTR),y
|
||||
cmp #'n'
|
||||
bne .7
|
||||
lda #13
|
||||
.7 jsr S.SysScrCOUTA
|
||||
.8 tya
|
||||
cmp (SYSSCR.STRPTR)
|
||||
bne .1
|
||||
.9 >LDYA SYSSCR.STRPTR
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.SysScrPRBYTEA pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$B0
|
||||
cmp #$BA
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 jsr S.SysScrCOUTA
|
||||
pla
|
||||
and #$0F
|
||||
ora #$B0
|
||||
cmp #$BA
|
||||
bcc S.SysScrCOUTA
|
||||
adc #6
|
||||
*--------------------------------------
|
||||
S.SysScrCOUTA phx
|
||||
phy
|
||||
cmp #13
|
||||
bne .1
|
||||
jsr S.SysScrCROUT
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
|
||||
.1 ldy SYSSCR.CH
|
||||
ldx SYSSCR.CV
|
||||
ora #$80
|
||||
jsr S.SysScrSetCharAtYX
|
||||
jsr S.SysScrFSOUT
|
||||
ply
|
||||
plx
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.SysScrFSOUT lda SYSSCR.CH
|
||||
cmp #79
|
||||
beq S.SysScrCROUT1
|
||||
inc SYSSCR.CH
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.SysScrCROUT jsr S.SysScrCLREOL
|
||||
S.SysScrCROUT1 stz SYSSCR.CH
|
||||
ldx SYSSCR.CV
|
||||
cpx #23
|
||||
beq S.SysScrScroll
|
||||
inc SYSSCR.CV
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.SysScrCLREOL ldx SYSSCR.CV
|
||||
lda #$A0
|
||||
ldy SYSSCR.CH
|
||||
.1 cpy #79
|
||||
beq .2
|
||||
jsr S.SysScrSetCharAtYX
|
||||
iny
|
||||
bne .1
|
||||
.2 rts
|
||||
*--------------------------------------
|
||||
S.SysScrScroll ldx #1
|
||||
.1 lda SYSSCR.BASEL,x
|
||||
sta SYSSCR.BASL
|
||||
lda SYSSCR.BASEH,x
|
||||
sta SYSSCR.BASL+1
|
||||
inx
|
||||
lda SYSSCR.BASEL,x
|
||||
sta SYSSCR.BASLTMP
|
||||
lda SYSSCR.BASEH,x
|
||||
sta SYSSCR.BASLTMP+1
|
||||
|
||||
ldy #39
|
||||
sta SETWRITEAUX
|
||||
sta SETREADAUX
|
||||
.2 lda (SYSSCR.BASLTMP),y
|
||||
sta (SYSSCR.BASL),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
ldy #39
|
||||
sta CLRWRITEAUX
|
||||
sta CLRREADAUX
|
||||
.3 lda (SYSSCR.BASLTMP),y
|
||||
sta (SYSSCR.BASL),y
|
||||
dey
|
||||
bpl .3
|
||||
|
||||
cpx #23
|
||||
bne .1
|
||||
|
||||
ldy #39
|
||||
lda #$A0
|
||||
.4 sta SETWRITEAUX
|
||||
sta (SYSSCR.BASLTMP),y
|
||||
sta CLRWRITEAUX
|
||||
sta (SYSSCR.BASLTMP),y
|
||||
dey
|
||||
bpl .4
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.SysScrClrLineAtX
|
||||
lda SYSSCR.BASEL,x
|
||||
sta SYSSCR.BASL
|
||||
lda SYSSCR.BASEH,x
|
||||
sta SYSSCR.BASL+1
|
||||
|
||||
lda #$A0
|
||||
|
||||
ldy #39
|
||||
sta SETWRITEAUX
|
||||
.1 sta (SYSSCR.BASL),y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
ldy #39
|
||||
sta CLRWRITEAUX
|
||||
.2 sta (SYSSCR.BASL),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.SysScrHOME ldx #23
|
||||
|
||||
.1 jsr S.SysScrClrLineAtX
|
||||
dex
|
||||
bne .1
|
||||
|
||||
stz SYSSCR.CH
|
||||
lda #1
|
||||
sta SYSSCR.CV
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.SysScrSetCharAtYX
|
||||
cmp #$40
|
||||
bcc .1
|
||||
cmp #$5F
|
||||
bcs .1
|
||||
and #$3F
|
||||
|
||||
.1 phy
|
||||
pha
|
||||
lda SYSSCR.BASEL,x
|
||||
sta SYSSCR.BASL
|
||||
lda SYSSCR.BASEH,x
|
||||
sta SYSSCR.BASL+1
|
||||
tya
|
||||
lsr
|
||||
tay
|
||||
bcs .2
|
||||
sta SETWRITEAUX
|
||||
|
||||
.2 pla
|
||||
sta (SYSSCR.BASL),y
|
||||
sta CLRWRITEAUX
|
||||
ply
|
||||
rts
|
||||
*--------------------------------------
|
||||
SYSSCR.CH .BS 1
|
||||
SYSSCR.CV .BS 1
|
||||
SYSSCR.CPULOADI .BS 1
|
||||
SYSSCR.CPULOADC .AS -"|/-\"
|
||||
*--------------------------------------
|
||||
SYSSCR.TITLE >CSTRING "A2osX System Screen"
|
||||
SYSSCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
|
||||
SYSSCR.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.SCR
|
||||
LOAD SYS/KERNEL.S
|
||||
ASM
|
@ -12,35 +12,31 @@ S.TskMgrInit stz TSKMGR.LASTID
|
||||
lda #1
|
||||
sta TSKMGR.SIZE One Slot Busy (Kernel PS=0)
|
||||
|
||||
>LDYAI TskMgr.Table Make PS #0 as current process
|
||||
>STYA pPs
|
||||
>LDYAI TskMgr.Table Clear whole process table
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
ldx #K.PS.MAX
|
||||
|
||||
.1 lda #0
|
||||
ldy #S.PS.SIZE-1
|
||||
|
||||
.2 sta (pPs),y
|
||||
.2 sta (ZPQuickPtr1),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
lda pPs
|
||||
lda ZPQuickPtr1
|
||||
clc
|
||||
adc #S.PS.SIZE
|
||||
sta pPs
|
||||
sta ZPQuickPtr1
|
||||
bcc .3
|
||||
|
||||
inc pPs+1
|
||||
inc ZPQuickPtr1+1
|
||||
.3 dex
|
||||
bne .1
|
||||
|
||||
>LDYAI TskMgr.Table Make PS #0 as current process
|
||||
>STYA pPs
|
||||
|
||||
lda #0
|
||||
|
||||
lda #1
|
||||
ldy #S.PS.hINDEV
|
||||
sta TskMgr.Table,y Make In DEV = NUL
|
||||
inc
|
||||
sta TskMgr.Table,y Make In DEV = SYS
|
||||
ldy #S.PS.hOUTDEV
|
||||
sta TskMgr.Table,y Make OUT DEV = SYS
|
||||
ldy #S.PS.hERRDEV
|
||||
@ -62,16 +58,33 @@ S.TskMgrInit stz TSKMGR.LASTID
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
sta TskMgr.Table,y
|
||||
S.TskMgrInit.Env
|
||||
>PUSHWI TmpBuffer256 push ENV value
|
||||
>PUSHWI ENV.A2osX push ENV name
|
||||
ldy #S.PS.hENV
|
||||
lda TskMgr.Table,y
|
||||
>PUSHA
|
||||
jsr S.SetEnvVarP
|
||||
rts
|
||||
bcs .9
|
||||
|
||||
>PUSHWI ENV.PATH.VALUE
|
||||
>PUSHWI ENV.PATH
|
||||
jsr S.SetEnvVarP
|
||||
bcs .9
|
||||
|
||||
>PUSHWI ENV.LIB.VALUE
|
||||
>PUSHWI ENV.LIB
|
||||
jsr S.SetEnvVarP
|
||||
bcs .9
|
||||
|
||||
>PUSHWI ENV.DRV.VALUE
|
||||
>PUSHWI ENV.DRV
|
||||
jsr S.SetEnvVarP
|
||||
bcs .9
|
||||
|
||||
jsr S.SelectProcess0
|
||||
|
||||
ldx #DEVMGR.OPEN
|
||||
jsr pDevJmp
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* S.TskMgrRun
|
||||
*--------------------------------------
|
||||
@ -209,16 +222,20 @@ S.TskMgrQuit clc
|
||||
*--------------------------------------
|
||||
* PUBLIC
|
||||
*--------------------------------------
|
||||
* S.ExecProcessA (Blocking Parent PID)
|
||||
* S.ExecProcessNewEnvYA
|
||||
* S.ExecProcessYA (Blocking Parent PID)
|
||||
* S.CreateProcessNewEnvYA
|
||||
* S.CreateProcessYA (Non Blocking)
|
||||
* in :
|
||||
* A = hMem To Cmd Line
|
||||
* Y = hMem To Args
|
||||
* out :
|
||||
* A = Child PSID
|
||||
*--------------------------------------
|
||||
S.ExecProcessNewEnvA
|
||||
ldy #S.PS.F.ENV
|
||||
bra S.ExecProcess
|
||||
S.ExecProcessA ldy #0
|
||||
S.ExecProcessNewEnvYA
|
||||
ldx #S.PS.F.ENV
|
||||
.HS 2C bit abs
|
||||
S.ExecProcessYA ldx #0
|
||||
S.ExecProcess jsr S.CreateProcess
|
||||
bcs .9 terminated, do not set PID as HOLD
|
||||
|
||||
@ -233,31 +250,36 @@ S.ExecProcess jsr S.CreateProcess
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* S.CreateProcessA (Non Blocking)
|
||||
* in :
|
||||
* A = hMem To Full Cmd Line
|
||||
* out :
|
||||
* A = Child PSID
|
||||
*--------------------------------------
|
||||
S.CreateProcessNewEnvA
|
||||
ldy #S.PS.F.ENV
|
||||
bra S.CreateProcess
|
||||
S.CreateProcessA
|
||||
ldy #0
|
||||
S.CreateProcess sty S.CreateChildProcess.Flags
|
||||
S.CreateProcessNewEnvYA
|
||||
ldx #S.PS.F.ENV
|
||||
.HS 2C bit abs
|
||||
S.CreateProcessYA
|
||||
ldx #0
|
||||
S.CreateProcess stx S.CreateChildProcess.Flags
|
||||
sta S.CreateProcessA.Cmd
|
||||
>LDYAI MSG.NEWPS
|
||||
jsr S.SysScrPPSTRYA
|
||||
sty S.CreateProcessA.Args
|
||||
|
||||
* lda #'|'
|
||||
* jsr S.CoutA
|
||||
* lda S.CreateProcessA.Cmd
|
||||
* jsr S.PSTROutA
|
||||
* lda #'|'
|
||||
* jsr S.CoutA
|
||||
* lda S.CreateProcessA.Args
|
||||
* beq .1
|
||||
* jsr S.PSTROutA
|
||||
*.1 lda #'|'
|
||||
* jsr S.CoutA
|
||||
* lda #13
|
||||
* jsr S.CoutA
|
||||
|
||||
jsr S.CreateChildProcess
|
||||
bcs .99
|
||||
|
||||
sta S.CreateProcessA.CPSID
|
||||
|
||||
jsr S.SelectProcessA
|
||||
|
||||
lda S.CreateProcessA.Cmd
|
||||
jsr S.InitProcessA
|
||||
jsr S.InitProcess
|
||||
bcs .98 Init Failed or exit?
|
||||
|
||||
ldy #S.PS.PID switch back to Parent Process
|
||||
@ -284,6 +306,7 @@ S.CreateProcess sty S.CreateChildProcess.Flags
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.CreateProcessA.Cmd .BS 1
|
||||
S.CreateProcessA.Args .BS 1
|
||||
S.CreateProcessA.CPSID .BS 1
|
||||
*--------------------------------------
|
||||
* S.GetPSByIDA
|
||||
@ -469,62 +492,24 @@ S.CreateChildProcess
|
||||
S.CreateChildProcess.Flags
|
||||
.BS 1
|
||||
*--------------------------------------
|
||||
* S.InitProcessA
|
||||
* S.InitProcess
|
||||
* In :
|
||||
* A = hMem To Full Cmd Line
|
||||
*--------------------------------------
|
||||
S.InitProcessA stz S.InitProcessA.hPath
|
||||
stz S.InitProcessA.hFullPath
|
||||
>PUSHA Push Cmd Line
|
||||
>PUSHBI $20 Push SEP=' '
|
||||
>PUSHBI 0 Push 0 for getting CMD And ARGS
|
||||
jsr S.PStrGetTkn
|
||||
bcc .10
|
||||
.99 rts OOM error
|
||||
|
||||
.10 sta S.InitProcessA.hCmd
|
||||
pha
|
||||
txa
|
||||
ldy #S.PS.hARGS
|
||||
S.InitProcess lda S.CreateProcessA.Args
|
||||
beq .1
|
||||
jsr S.ExpandPStrA
|
||||
.1 ldy #S.PS.hARGS
|
||||
sta (pPs),y set ARGS hMem (0 if none)
|
||||
|
||||
lda S.CreateProcessA.Cmd
|
||||
jsr S.ExpandPStrA
|
||||
|
||||
pla
|
||||
jsr S.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
lda (ZPQuickPtr1)
|
||||
cmp #'/'
|
||||
bne .20
|
||||
|
||||
lda S.InitProcessA.hCmd
|
||||
bra .30
|
||||
|
||||
.20 >PUSHWI ENV.PATH push ENVNAME=PATH
|
||||
ldy #S.PS.hENV
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
jsr S.GetEnvVarP get value for ENV=PATH
|
||||
bcs .99
|
||||
|
||||
sta S.InitProcessA.hPath save VALUE hMem for discard
|
||||
pha
|
||||
lda S.InitProcessA.hCmd
|
||||
>PUSHA push CMD for S.FileSearch
|
||||
pla
|
||||
>PUSHA A=PStr to ENV Value
|
||||
jsr S.FileSearch find File in %PATH%
|
||||
bcs S.InitProcessA.ClnUp
|
||||
|
||||
sta S.InitProcessA.hFullPath save FULLPATH hMem for discard
|
||||
|
||||
.30 jsr S.PStrCpyA
|
||||
ldy #S.PS.hCMD
|
||||
sta (pPs),y
|
||||
pha
|
||||
jsr S.SysScrPPSTRA
|
||||
pla
|
||||
|
||||
jsr S.LoadBinA A = BinPath hMem
|
||||
bcs S.InitProcessA.ClnUp
|
||||
bcs .99
|
||||
|
||||
>STYA pCode save PTR to Code Segment
|
||||
txa
|
||||
@ -537,48 +522,38 @@ S.InitProcessA stz S.InitProcessA.hPath
|
||||
dey
|
||||
ora (pCode),y
|
||||
|
||||
beq .1 DS.SIZE=0...
|
||||
beq .2 DS.SIZE=0...
|
||||
|
||||
lda (pCode),y
|
||||
>PUSHAX Push DS.SIZE
|
||||
>PUSHBI S.MEM.F.INIT0 Clear DS
|
||||
jsr S.GetMem
|
||||
bcs S.InitProcessA.ClnUp
|
||||
bcs .99
|
||||
|
||||
>STYA pData
|
||||
txa
|
||||
ldy #S.PS.hDS
|
||||
sta (pPs),y save DS hMem in TSKSLOT
|
||||
|
||||
.1 ldx #TSKMGR.INIT
|
||||
.2 ldx #TSKMGR.INIT
|
||||
jsr pCodeJmp Call INIT function
|
||||
|
||||
S.InitProcessA.ClnUp
|
||||
php save Carry
|
||||
pha save ERR
|
||||
lda S.InitProcessA.hFullPath
|
||||
beq .1
|
||||
jsr S.FreeMemA
|
||||
|
||||
.1 lda S.InitProcessA.hPath
|
||||
beq .2
|
||||
jsr S.FreeMemA
|
||||
|
||||
.2 pla
|
||||
plp
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.InitProcessA.hCmd .BS 1
|
||||
S.InitProcessA.hPath .BS 1
|
||||
S.InitProcessA.hFullPath .BS 1
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
* S.SelectProcessA
|
||||
* In : A=PSID
|
||||
*--------------------------------------
|
||||
S.SelectProcessA
|
||||
tay
|
||||
bne S.SelectProcessN
|
||||
S.SelectProcess0
|
||||
>LDYAI TskMgr.Table Make PS #0 as current process
|
||||
>STYA pPs
|
||||
bra S.SelectProcessDev
|
||||
S.SelectProcessN
|
||||
jsr S.GetPSByIDA
|
||||
bcs *
|
||||
>STYA pPS
|
||||
>STYA pPs
|
||||
|
||||
S.SelectProcess ldy #S.PS.hCS
|
||||
lda (pPs),y
|
||||
@ -587,12 +562,13 @@ S.SelectProcess ldy #S.PS.hCS
|
||||
|
||||
ldy #S.PS.hDS
|
||||
lda (pPs),y
|
||||
beq .1
|
||||
beq S.SelectProcessDev
|
||||
|
||||
jsr S.GetMemPtrA
|
||||
>STYA pData
|
||||
|
||||
.1 ldy #S.PS.hOUTDEV
|
||||
S.SelectProcessDev
|
||||
ldy #S.PS.hOUTDEV
|
||||
lda (pPs),y
|
||||
beq .8
|
||||
|
||||
@ -658,7 +634,6 @@ TSKMGR.SIZE .BS 1
|
||||
TSKMGR.COUNT .BS 1
|
||||
TSKMGR.LASTID .BS 1
|
||||
*--------------------------------------
|
||||
MSG.NEWPS >PSTRING "\nTskMgr:"
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.TSK
|
||||
LOAD SYS/KERNEL.S
|
||||
|
184
SYS/KERNEL.S.txt
184
SYS/KERNEL.S.txt
@ -13,6 +13,11 @@ AUTO 6
|
||||
.INB INC/IO.I
|
||||
.INB INC/PRODOS.I
|
||||
*--------------------------------------
|
||||
ZPQuickPtr1 .EQ $0 Temp Ptrs for use in very limited scope
|
||||
ZPQuickPtr2 .EQ $2 (could be trashed by any JSR)
|
||||
ZPQuickPtr3 .EQ $4
|
||||
ZPQuickPtr4 .EQ $6
|
||||
*--------------------------------------
|
||||
* $D000-D0FF KERNEL.SYSCALL Jmp Table
|
||||
*--------------------------------------
|
||||
.DA S.GetMem $00
|
||||
@ -47,13 +52,13 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.DA S.ExpandPStrA $30
|
||||
.DA S.ExpandPStrYA
|
||||
.DA S.GetEnvVarH
|
||||
.DA S.GetEnvVarP
|
||||
.DA S.GetEnvVarA
|
||||
.DA S.GetEnvVarYA
|
||||
|
||||
.DA S.SetEnvVarH
|
||||
.DA S.SetEnvVarP
|
||||
.DA S.DelEnvVarH
|
||||
.DA S.DelEnvVarP
|
||||
.DA S.DelEnvVarA
|
||||
.DA S.DelEnvVarYA
|
||||
*--------------------------------------
|
||||
.DA S.MLICreateFile $40
|
||||
.DA S.MLICreateDirA
|
||||
@ -105,10 +110,10 @@ AUTO 6
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
.DA S.ExecProcessNewEnvA $90
|
||||
.DA S.ExecProcessA
|
||||
.DA S.CreateProcessNewEnvA
|
||||
.DA S.CreateProcessA
|
||||
.DA S.ExecProcessNewEnvYA $90
|
||||
.DA S.ExecProcessYA
|
||||
.DA S.CreateProcessNewEnvYA
|
||||
.DA S.CreateProcessYA
|
||||
|
||||
.DA S.GetPSByIDA
|
||||
.DA 0
|
||||
@ -137,22 +142,22 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.DA S.ScreenSelectA $C0
|
||||
.DA 0
|
||||
.DA S.SysScrPPSTRA
|
||||
.DA S.SysScrPPSTRYA
|
||||
.DA 0
|
||||
.DA 0
|
||||
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
.DA 0 $D0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA S.COutA $D0
|
||||
.DA S.PSTROutA
|
||||
.DA S.PSTROutYA
|
||||
.DA 0
|
||||
.DA S.HexOutA
|
||||
.DA S.HexOutYA
|
||||
.DA S.DecOutA
|
||||
.DA S.DecOutYA
|
||||
*--------------------------------------
|
||||
.DA 0 $E0
|
||||
.DA 0
|
||||
@ -185,73 +190,50 @@ Kernel.Init sei
|
||||
stz A2osX.SCREENS
|
||||
stz A2osX.ASCREEN
|
||||
|
||||
jsr S.SysScrInit
|
||||
jsr S.MemMgrInit
|
||||
bcs *
|
||||
jsr S.DevMgrInit
|
||||
bcs *
|
||||
jsr S.EvtMgrInit
|
||||
bcs *
|
||||
jsr S.TskMgrInit
|
||||
bcs *
|
||||
|
||||
>DEBUG
|
||||
|
||||
>LDYAI MSG.Init
|
||||
jsr S.SysScrPPSTRYA
|
||||
|
||||
>LDYAI MSG.Init.MemMgr
|
||||
jsr S.SysScrPPSTRYA
|
||||
jsr S.MemMgrInit
|
||||
jsr S.SysScrPRCode
|
||||
bcs .1
|
||||
|
||||
>LDYAI MSG.Init.TskMgr
|
||||
jsr S.SysScrPPSTRYA
|
||||
jsr S.TskMgrInit
|
||||
jsr S.SysScrPRCode
|
||||
.1 bcs .2
|
||||
|
||||
>LDYAI MSG.Init.DevMgr
|
||||
jsr S.SysScrPPSTRYA
|
||||
jsr S.DevMgrInit
|
||||
jsr S.SysScrPRCode
|
||||
.2 bcs .3
|
||||
|
||||
>LDYAI MSG.Init.EvtMgr
|
||||
jsr S.SysScrPPSTRYA
|
||||
jsr S.EvtMgrInit
|
||||
jsr S.SysScrPRCode
|
||||
.3 bcs .99
|
||||
jsr S.PSTROutYA
|
||||
|
||||
>LDYAI MSG.Init.Startup
|
||||
jsr S.SysScrPPSTRYA
|
||||
|
||||
>LDYAI STARTUP.FILE Build A2osX.STARTUP full path...
|
||||
jsr S.PSTROutYA
|
||||
|
||||
>LDYAI STARTUP.ARGS Get A2osX.STARTUP full path...
|
||||
jsr S.NewPStrYA
|
||||
pha save for discard
|
||||
|
||||
>PUSHA
|
||||
>PUSHWI ENV.A2osX get KRNL root path
|
||||
ldy #S.PS.hENV
|
||||
lda TskMgr.Table,y
|
||||
>PUSHA
|
||||
jsr S.GetEnvVarP
|
||||
pha save for discard
|
||||
>PUSHA
|
||||
jsr S.PStrCat
|
||||
pha save for discard
|
||||
|
||||
jsr S.ExecFileA
|
||||
jsr S.SysScrPRCode
|
||||
pha
|
||||
>LDYAI STARTUP.CMD Get A2osX.STARTUP full path...
|
||||
jsr S.NewPStrYA
|
||||
ply get back ARGS in Y
|
||||
phy
|
||||
pha A=CMH, save for discard
|
||||
>DEBUG
|
||||
jsr S.CreateProcessYA
|
||||
bcs *
|
||||
|
||||
>DEBUG
|
||||
|
||||
pla
|
||||
jsr S.FreeMemA
|
||||
pla
|
||||
jsr S.FreeMemA
|
||||
pla
|
||||
jsr S.FreeMemA
|
||||
|
||||
.99 bcs *
|
||||
|
||||
>LDYAI MSG.Init.OK
|
||||
jsr S.SysScrPPSTRYA
|
||||
jsr S.PSTROutYA
|
||||
>DEBUG
|
||||
|
||||
*--------------------------------------
|
||||
S.KernelRun jsr S.TskMgrRun
|
||||
bcs .98
|
||||
|
||||
jsr S.SysScrCPULoad
|
||||
jsr S.GetEvent
|
||||
bcs S.KernelRun CS=no event
|
||||
|
||||
@ -264,7 +246,9 @@ S.KernelRun jsr S.TskMgrRun
|
||||
jsr S.DestroyEvent
|
||||
bra S.KernelRun
|
||||
|
||||
.1 lda (pEvent)
|
||||
.1 jsr S.SelectProcess0
|
||||
|
||||
lda (pEvent)
|
||||
and #S.EVT.F.KEY any special key?
|
||||
beq .99
|
||||
|
||||
@ -298,16 +282,36 @@ S.KernelRun jsr S.TskMgrRun
|
||||
.98 lda #A2osX.SCREENS.S
|
||||
jsr S.ScreenSelectA
|
||||
>LDYAI MSG.KRNLPANIC
|
||||
jsr S.SysScrPPSTRYA
|
||||
jsr S.PSTROutYA
|
||||
bra *
|
||||
|
||||
.99 >LDYAI MSG.EVNTPANIC
|
||||
jsr S.SysScrPPSTRYA
|
||||
jsr S.DumpEvent
|
||||
.99 jsr S.DumpEvent
|
||||
|
||||
jsr S.DestroyEvent
|
||||
jmp S.KernelRun
|
||||
*--------------------------------------
|
||||
S.DumpEvent ldy #S.EVT.DATAW2+1
|
||||
>PUSHB (pEvent),y
|
||||
dey
|
||||
>PUSHB (pEvent),y
|
||||
|
||||
ldy #S.EVT.DATAW1+1
|
||||
>PUSHB (pEvent),y
|
||||
dey
|
||||
>PUSHB (pEvent),y
|
||||
|
||||
ldy #S.EVT.DATAHI
|
||||
>PUSHB (pEvent),y
|
||||
ldy #S.EVT.DATALO
|
||||
>PUSHB (pEvent),y
|
||||
|
||||
ldy #S.EVT.hDEV
|
||||
>PUSHB (pEvent),y
|
||||
|
||||
>PUSHB (pEvent)
|
||||
>LDYAI MSG.DumpEvent
|
||||
jmp S.PSTROutYA
|
||||
*--------------------------------------
|
||||
* S.ScreenSelectA
|
||||
* IN :
|
||||
* A = Screen to display
|
||||
@ -318,19 +322,19 @@ S.ScreenSelectA and A2osX.SCREENS Screen is available ?
|
||||
cmp #A2osX.SCREENS.S
|
||||
bne .1
|
||||
sta SETTEXT
|
||||
sta SETALTCHAR
|
||||
sta SET80DISP
|
||||
sta CLR80STORE
|
||||
sta SETPAGE2
|
||||
sta SETALTCHAR
|
||||
bra .8
|
||||
|
||||
.1 cmp #A2osX.SCREENS.C
|
||||
bne .2
|
||||
sta SETTEXT
|
||||
sta SETALTCHAR
|
||||
sta SET80DISP
|
||||
sta CLR80STORE
|
||||
sta CLRPAGE2
|
||||
sta SETALTCHAR
|
||||
bra .8
|
||||
|
||||
.2 cmp #A2osX.SCREENS.G
|
||||
@ -341,6 +345,7 @@ S.ScreenSelectA and A2osX.SCREENS Screen is available ?
|
||||
sta SETHIRES
|
||||
sta CLR80STORE
|
||||
sta CLRPAGE2
|
||||
sta SET80STORE
|
||||
sta SETIOUDIS
|
||||
sta SETDHIRES
|
||||
|
||||
@ -355,46 +360,35 @@ S.ScreenSelectA and A2osX.SCREENS Screen is available ?
|
||||
.8 sta A2osX.ASCREEN
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
S.SysScrCPULoad ldx SYSSCR.CPULOADI
|
||||
lda SYSSCR.CPULOADC,x
|
||||
sta SYSSCR.BASL0+38
|
||||
dec SYSSCR.CPULOADI
|
||||
bpl .1
|
||||
lda #3
|
||||
sta SYSSCR.CPULOADI
|
||||
.1 rts
|
||||
*--------------------------------------
|
||||
MSG.Init >PSTRING "A2osX[Stage2]:Init\n"
|
||||
MSG.Init.MemMgr >PSTRING "->MemMgr Init"
|
||||
MSG.Init.TskMgr >PSTRING "->TskMgr Init"
|
||||
MSG.Init.DevMgr >PSTRING "->DevMgr Init"
|
||||
MSG.Init.EvtMgr >PSTRING "->EvtMgr Init"
|
||||
MSG.Init.Startup >PSTRING "EXEC A2osX.Startup...\n"
|
||||
MSG.Init.OK >PSTRING "A2osX[Stage2]:Complete."
|
||||
|
||||
MSG.EVNTPANIC >PSTRING "\nEVT:F/hDev/DATA/W1/W2="
|
||||
MSG.Init.OK >PSTRING "A2osX[Stage2]:Complete.\n"
|
||||
MSG.DumpEvent >PSTRING "\nEVT:F=%h,hDev=%d,DATA=%H,W1=%H,W2=%H"
|
||||
MSG.KRNLPANIC >PSTRING "\n\n!!!Kernel Panic!!!"
|
||||
*--------------------------------------
|
||||
STARTUP.FILE >PSTRING "A2osX.STARTUP"
|
||||
STARTUP.CMD >PSTRING "${A2OSX}SBIN/SHELL"
|
||||
STARTUP.ARGS >PSTRING "${A2OSX}A2osX.STARTUP"
|
||||
*--------------------------------------
|
||||
ENV.A2osX >PSTRING "A2OSX"
|
||||
ENV.PATH >PSTRING "PATH"
|
||||
ENV.PATH.VALUE >PSTRING "${A2OSX}SBIN/;${A2OSX}BIN/"
|
||||
ENV.LIB >PSTRING "LIB"
|
||||
ENV.LIB.VALUE >PSTRING "${A2OSX}LIB/"
|
||||
ENV.DRV >PSTRING "DRV"
|
||||
ENV.DRV.VALUE >PSTRING "${A2OSX}DRV/"
|
||||
*--------------------------------------
|
||||
.INB SYS/KERNEL.S.MEM
|
||||
.INB SYS/KERNEL.S.SCR
|
||||
.INB SYS/KERNEL.S.STR
|
||||
.INB SYS/KERNEL.S.FS
|
||||
.INB SYS/KERNEL.S.CIO
|
||||
.INB SYS/KERNEL.S.FIO
|
||||
.INB SYS/KERNEL.S.MLI
|
||||
.INB SYS/KERNEL.S.BIN
|
||||
.INB SYS/KERNEL.S.DRV
|
||||
.INB SYS/KERNEL.S.LIB
|
||||
.INB SYS/KERNEL.S.NET
|
||||
* .INB SYS/KERNEL.S.RDR
|
||||
.INB SYS/KERNEL.S.ENV
|
||||
.INB SYS/KERNEL.S.TSK
|
||||
.INB SYS/KERNEL.S.EVT
|
||||
.INB SYS/KERNEL.S.EXE
|
||||
*--------------------------------------
|
||||
.INB SYS/KERNEL.S.DEV
|
||||
*--------------------------------------
|
||||
|
@ -1,9 +1,10 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.BOOT
|
||||
PREFIX /A2OSX.SRC
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
BLOAD A
|
||||
PREFIX /A2OSX.BOOT
|
||||
BLOAD A2OSX
|
||||
BSAVE A2OSX.SYSTEM,TSYS,A$2000,L$1300
|
||||
-A2OSX.SYSTEM
|
||||
MAN
|
||||
|
Loading…
x
Reference in New Issue
Block a user