Complete Rewrite #4 : Still debbuging...

This commit is contained in:
Rémy GIBERT 2015-11-22 23:30:06 +01:00
parent 71a00af938
commit 5d49c27c79
59 changed files with 1678 additions and 1538 deletions

Binary file not shown.

Binary file not shown.

View File

@ -59,16 +59,25 @@ A2osX.MLICALL1 jsr GO.MAINLC
jsr GO.AUXLC jsr GO.AUXLC
rts 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 GO.MAINLC php
clc clc
bra GO.SAVE.REG .HS 2C bit abs
GO.AUXLC php GO.AUXLC php
sec sec
GO.SAVE.REG sta A2osX.SaveA sta A2osX.SaveA
pla keep P in A for later pla keep P in A for later
stx A2osX.SaveX stx A2osX.SaveX
sty A2osX.SaveY sty A2osX.SaveY
@ -79,6 +88,10 @@ GO.SAVE.REG sta A2osX.SaveA
iny iny
.1 stx GO.EXIT.JMP+1 .1 stx GO.EXIT.JMP+1
sty GO.EXIT.JMP+2 sty GO.EXIT.JMP+2
ldx RRAMWRAMBNK1
ldx RRAMWRAMBNK1
sei sei
ldy pStack ldy pStack
bcs GO.AUXLC1 bcs GO.AUXLC1
@ -88,7 +101,6 @@ GO.MAINLC1 tsx
ldx A2osX.SaveSM ldx A2osX.SaveSM
txs txs
stx CLRALTZP stx CLRALTZP
ldx RROMBNK1
bra GO.EXIT bra GO.EXIT
*-------------------------------------- *--------------------------------------
GO.AUXLC1 stx SETALTZP GO.AUXLC1 stx SETALTZP
@ -96,8 +108,6 @@ GO.AUXLC1 stx SETALTZP
stx A2osX.SaveSM stx A2osX.SaveSM
ldx A2osX.SaveSX ldx A2osX.SaveSX
txs txs
ldx RRAMWRAMBNK1
ldx RRAMWRAMBNK1
*-------------------------------------- *--------------------------------------
GO.EXIT sty pStack GO.EXIT sty pStack
pha push P on stack pha push P on stack
@ -110,39 +120,18 @@ GO.EXIT.JMP jmp $FFFF
GO.Reset jsr GO.AUXLC GO.Reset jsr GO.AUXLC
jmp KERNEL.COLDBOOT 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.SaveA .BS 1
A2osX.SaveX .BS 1 A2osX.SaveX .BS 1
A2osX.SaveY .BS 1 A2osX.SaveY .BS 1
*-------------------------------------- *--------------------------------------
A2osX.GP.End .EQ * 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 A2osX.GP.SIZE .EQ A2osX.GP.END-A2osX.GP.START
.BS A2osX.GP.START+$100-* .BS A2osX.GP.START+$100-*
.EP .EP

View File

@ -76,7 +76,7 @@ PrintCStrAX >STAX TmpPtr1
*-------------------------------------- *--------------------------------------
PrintADec ldx #0 PrintADec ldx #0
PrintAXDec >STAX HEX PrintAXDec >STAX HEX
PrintDec stz BCD stz BCD
stz BCD+1 stz BCD+1
stz BCD+2 stz BCD+2

View File

@ -6,7 +6,7 @@ AUTO 6
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF /A2OSX.BOOT/A .TF /A2OSX.BOOT/A2OSX
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I

View File

@ -3,21 +3,24 @@ PREFIX /A2OSX.BOOT
NEW NEW
INC 1 INC 1
AUTO 6 AUTO 6
SET PATH=%A2OSX%SBIN/;%A2OSX%BIN/ ECHO *** A2osX Startup file ***
SET LIB=%A2OSX%LIB/ echo Env:
LOAD %A2OSX%DRV/CONSOLE.DRV SET
EXEC GETTY CON LOGIN INSDRV CONSOLE.DRV
*LOAD %A2OSX%DRV/SSC.DRV 9600 N 8 1 X GETTY CON SBIN/LOGIN
*EXEC GETTY COM2 LOGIN INSDRV UTHERNET.DRV 000E3A123456
*LOAD %A2OSX%DRV/PPIC.DRV TCPIP ETH3
LOAD %A2OSX%DRV/UTHERNET.DRV 000E3A123456 DHCPCLNT
EXEC TCPIP ETH3 #INSDRV SSC.DRV 9600 N 8 1 X
EXEC DHCPCLNT #GETTY COM2 SBIN/LOGIN
*EXEC TELNETD #INSDRV PPIC.DRV
*MOUNT TFTP 192.168.1.5:/A2OSX /MNT/A2OSX #TELNETD
*MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE #MOUNT TFTP 192.168.1.5:/A2OSX /MNT/A2OSX
*LOAD %A2OSX%DRV/DHGR.DRV #MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE
*LOAD %A2OSX%DRV/MOUSE.DRV INSDRV DHGR.DRV
*EXEC GUI INSDRV MOUSE.DRV
GUI
PS
ECHO *** End A2osX Startup file ***
MAN MAN
TEXT A2OSX.STARTUP TEXT A2OSX.STARTUP

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
@ -48,11 +46,11 @@ L.MSG2 .DA MSG2
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBSTR sta hLIBSTR
>LDYA L.LIBTCPIP >LDYA L.LIBTCPIP
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBTCPIP sta hLIBTCPIP
ldy #S.PS.hARGS ldy #S.PS.hARGS
@ -139,7 +137,7 @@ CS.RUN lda #ARP.TIMEOUT
lda TimeOut lda TimeOut
beq .9 beq .9
jsr A2osX.SLEEP >SYSCALL SYS.Sleep
bra .1 bra .1
.2 ldx #5 .2 ldx #5

View File

@ -77,7 +77,12 @@ EXP.Eval stz EXP.Operator
lda (pData),y pass#2? lda (pData),y pass#2?
bne .96 yes, undefined symbol bne .96 yes, undefined symbol
jsr
bra *
.41 ldx #3 .41 ldx #3
.5 lda SRC.FLabel.Value,x .5 lda SRC.FLabel.Value,x

View File

@ -65,9 +65,9 @@ FIO.OpenFileA sta FIO.hFileName
>SYSCALL SYS.MLIGetFileInfoA >SYSCALL SYS.MLIGetFileInfoA
bcs .99 bcs .99
>STYA ZPQuickPtr1 >STYA ZPPtr1
ldy #1 ldy #1
lda (ZPQuickPtr1),y lda (ZPPtr1),y
tax tax
ldy #SRC.COUNT ldy #SRC.COUNT

View File

@ -107,7 +107,7 @@ SYM.Dump >PUSHW L.MSG.SYMBOLS
>PUSHW L.MSG.GSYMBOL >PUSHW L.MSG.GSYMBOL
>LIBCALL hLIBSTR,LIBSTR.PRINTF >LIBCALL hLIBSTR,LIBSTR.PRINTF
* bcs .9 bcs .9
.4 jsr SYM.GetByteGBlock .4 jsr SYM.GetByteGBlock
beq .5 End Locals...proceed next Global beq .5 End Locals...proceed next Global
@ -119,11 +119,10 @@ SYM.Dump >PUSHW L.MSG.SYMBOLS
>PUSHA >PUSHA
>PUSHW L.MSG.LSYMBOL >PUSHW L.MSG.LSYMBOL
>LIBCALL hLIBSTR,LIBSTR.PRINTF >LIBCALL hLIBSTR,LIBSTR.PRINTF
* bcc .4 bcc .4
bra .4
.5 lda #13 .5 lda #13
jsr COUT >SYSCALL SYS.CoutA
ldy #SYM.DumpCount ldy #SYM.DumpCount
lda (pData),y lda (pData),y

View File

@ -10,7 +10,6 @@ AUTO 6
*--------------------------------------- *---------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*--------------------------------------- *---------------------------------------
ZPPtr1 .EQ ZPBIN ZPPtr1 .EQ ZPBIN
@ -139,7 +138,7 @@ J.LI .DA DIR.LI.CON
.DA 0 .DA 0
*--------------------------------------- *---------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBSTR sta hLIBSTR
ldy #S.PS.hARGS ldy #S.PS.hARGS
@ -342,15 +341,6 @@ CS.QUIT jsr FIO.FileClose
clc clc
rts rts
*--------------------------------------- *---------------------------------------
COUT phx
phy
ldx #DEVMGR.COUT
jsr pDevJmp
ply
plx
rts
pDevJmp jmp (pDev)
*---------------------------------------
.INB BIN/ASM.S.DIR .INB BIN/ASM.S.DIR
.INB BIN/ASM.S.EXP .INB BIN/ASM.S.EXP
.INB BIN/ASM.S.FIO .INB BIN/ASM.S.FIO

View File

@ -6,23 +6,26 @@ AUTO 6
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF BIN/CHTYP .TF /A2OSX.BOOT/BIN/CHTYP
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
* Main entry point * File Header (16 Bytes)
*--------------------------------------
* Code signature and INIT table
*--------------------------------------
* CLD $D8
* JMP (*,x) $7C
* #JMPTABLE
* /JMPTABLE
*-------------------------------------- *--------------------------------------
CS.START cld CS.START cld
jmp (.1,x) 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 .1 .DA CS.INIT
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
@ -37,11 +40,11 @@ L.MSG.VOL.END .DA MSG.VOL.END
L.MSG.DIR.END .DA MSG.DIR.END L.MSG.DIR.END .DA MSG.DIR.END
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
.DA 0 .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 sta hLIBSTR
stz hDIRPATH stz hDIRPATH
stz hS.LISTDIR stz hS.LISTDIR
stz hVOLHEADER stz hVOLHEADER
@ -50,7 +53,7 @@ CS.INIT >LIBLOADP L.LIB.LIBSTR
stz bCANCEL stz bCANCEL
ldy #S.PS.hARGS ldy #S.PS.hARGS
lda (pPsContext),y lda (pPs),y
beq .99 no arg, exit with err=0 beq .99 no arg, exit with err=0
>PUSHA >PUSHA
@ -76,25 +79,25 @@ CS.INIT >LIBLOADP L.LIB.LIBSTR
bra .2 bra .2
.10 ldy #S.PS.hARGS .10 ldy #S.PS.hARGS
lda (pPsContext),y lda (pPs),y
>PUSHA >PUSHA
ldy #S.PS.hPREFIX ldy #S.PS.hPREFIX
lda (pPsContext),y lda (pPs),y
>PUSHA >PUSHA
>SYSCALL SYS.PStrCat >SYSCALL SYS.PStrCat
sta hDIRPATH sta hDIRPATH
bra .3 bra .3
.1 ldy #S.PS.hPREFIX .1 ldy #S.PS.hPREFIX
.2 lda (pPsContext),y .2 lda (pPs),y
.3 >SYSCALL SYS.ListDirInitA .3 >SYSCALL SYS.ListDirInitA
bcs .98 bcs .98
sta hS.LISTDIR sta hS.LISTDIR
lda (pPsContext) lda (pPs)
ora #S.PS.F.EVENT Now accept events ora #S.PS.F.EVENT Now accept events
sta (pPsContext) sta (pPs)
clc clc
rts rts
@ -313,7 +316,7 @@ Push.Footer lda hVOLHEADER
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
lda (pEvent),y lda (pEvent),y
ldy #S.PS.hINDEV ldy #S.PS.hINDEV
cmp (pPsContext),y cmp (pPs),y
bne .9 bne .9
lda (pEvent) lda (pEvent)
and #S.EVT.F.KEY is it a KEY event? and #S.EVT.F.KEY is it a KEY event?

View File

@ -3,15 +3,13 @@ PREFIX /A2OSX.SRC
NEW NEW
INC 1 INC 1
AUTO 6 AUTO 6
.LIST ON .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF /A2OSX.BOOT/BIN/DNS .TF /A2OSX.BOOT/BIN/DNSINFO
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
@ -49,11 +47,11 @@ CS.INIT stz hHostName
stz hIP stz hIP
>LDYA L.LIBSTR >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBSTR sta hLIBSTR
>LDYA L.LIBTCPIP >LDYA L.LIBTCPIP
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBTCPIP sta hLIBTCPIP
ldy #S.PS.hARGS ldy #S.PS.hARGS
@ -201,5 +199,5 @@ hIP .BS 1
IP .BS 4 IP .BS 4
DNSNAME .BS K.DNS.MAXLEN+1 DNSNAME .BS K.DNS.MAXLEN+1
MAN MAN
SAVE BIN/DNS.S SAVE BIN/DNSINFO.S
ASM ASM

View File

@ -9,9 +9,7 @@ AUTO 6
.TF /A2OSX.BOOT/BIN/EDIT .TF /A2OSX.BOOT/BIN/EDIT
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/KERNEL.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
ZPPTR1 .EQ ZPBIN ZPPTR1 .EQ ZPBIN
@ -44,17 +42,14 @@ CS.INIT lda #0
dey dey
bpl .1 bpl .1
lda #12
jsr COUT
ldy #S.PS.hARGS ldy #S.PS.hARGS
lda (pPs),y lda (pPs),y
beq .7 beq .7
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPPTR1
lda (ZPQuickPtr1),y lda (ZPPTR1)
cmp #'/' cmp #'/'
bne .10 bne .10
@ -83,18 +78,27 @@ CS.INIT lda #0
bcs .9 bcs .9
>LDYAI 0 >LDYAI 0
.8 pha .8 pha Y,A = len,X=hMem
tya tya
ldy #FileLen ldy #FileLen
sta (pData),y sta (pData),y
iny iny
pla pla
sta (pData),y sta (pData),y
txa txa
ldy #hBuffer ldy #hBuffer
txa
sta (pData),y sta (pData),y
lda #$80
ldy #bSaved
sta (pData),y
ldy #bInsert
sta (pData),y
lda #12
jsr COUT
lda (pPs) lda (pPs)
ora #S.PS.F.EVENT Now accept events ora #S.PS.F.EVENT Now accept events
sta (pPs) sta (pPs)
@ -135,7 +139,7 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
sta (pData),y sta (pData),y
bra .8 bra .8
.1 .1 cmp #$20
.8 clc .8 clc
rts rts
@ -143,30 +147,13 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT lda #12 CS.QUIT ldy #hBuffer
jsr COUT lda (pData),y
>SYSCALL SYS.FreeMemA
clc clc
rts 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 CROUT lda #13
*-------------------------------------- *--------------------------------------
COUT phx COUT phx
@ -176,7 +163,6 @@ COUT phx
ply ply
plx plx
rts rts
pDevJmp jmp (pDev)
*-------------------------------------- *--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
@ -187,9 +173,10 @@ bCANCEL .BS 1
hFileName .BS 1 hFileName .BS 1
hBuffer .BS 1 hBuffer .BS 1
FileLen .BS 2 FileLen .BS 2
xPos .BS 2 cPos .BS 1
yPos .BS 2 rPos .BS 2
bInsert .BS 1
bSaved .BS 1
DS.END DS.END
.ED .ED
*-------------------------------------- *--------------------------------------

View File

@ -10,9 +10,12 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2
ZPPtr3 .EQ ZPBIN+4
*--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
CS.START cld CS.START cld
@ -43,7 +46,7 @@ L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBSTR sta hLIBSTR
lda #0 lda #0
@ -57,11 +60,11 @@ CS.INIT >LDYA L.LIBSTR
beq .1 no arg, go get current prefix beq .1 no arg, go get current prefix
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPPtr1
lda (ZPQuickPtr1) lda (ZPPtr1)
beq .1 beq .1
ldy #1 ldy #1
lda (ZPQuickPtr1),y lda (ZPPtr1),y
cmp #'/' full path starting with '/'? cmp #'/' full path starting with '/'?
bne .10 no, append to current prefix bne .10 no, append to current prefix
@ -89,18 +92,18 @@ CS.INIT >LDYA L.LIBSTR
pla pla
pha pha
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPPtr1
lda (ZPQuickPtr1) lda (ZPPtr1)
tay tay
lda #'/' lda #'/'
cmp (ZPQuickPtr1),y cmp (ZPPtr1),y
beq .31 beq .31
iny iny
sta (ZPQuickPtr1),y sta (ZPPtr1),y
.31 iny .31 iny
lda #'*' lda #'*'
sta (ZPQuickPtr1),y sta (ZPPtr1),y
.4 pla .4 pla
>SYSCALL SYS.ListDirInitA >SYSCALL SYS.ListDirInitA
@ -138,12 +141,12 @@ CS.RUN ldy #bCANCEL
.3 pha .3 pha
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPPtr1
lda (ZPQuickPtr1) lda (ZPPtr1)
pha pha
and #$0F and #$0F
sta (ZPQuickPtr1) Adjust Filename len sta (ZPPtr1) Adjust Filename len
pla pla
and #$F0 and #$F0
@ -153,7 +156,7 @@ CS.RUN ldy #bCANCEL
pla pla
ldy #hVOLHEADER ldy #hVOLHEADER
sta (pData),y sta (pData),y
>PUSHW ZPQuickPtr1 >PUSHW ZPPtr1
>PUSHW L.MSG.VOL.HEADER >PUSHW L.MSG.VOL.HEADER
>LIBCALL hLIBSTR,LIBSTR.PRINTF >LIBCALL hLIBSTR,LIBSTR.PRINTF
clc clc
@ -166,7 +169,7 @@ CS.RUN ldy #bCANCEL
ldy #hDIRHEADER ldy #hDIRHEADER
sta (pData),y sta (pData),y
>PUSHW ZPQuickPtr1 >PUSHW ZPPtr1
>PUSHW L.MSG.DIR.HEADER >PUSHW L.MSG.DIR.HEADER
>LIBCALL hLIBSTR,LIBSTR.PRINTF >LIBCALL hLIBSTR,LIBSTR.PRINTF
clc clc
@ -183,7 +186,7 @@ CS.RUN ldy #bCANCEL
.5 cmp #$C0 Volume Name ? .5 cmp #$C0 Volume Name ?
bne .6 bne .6
>PUSHW ZPQuickPtr1 >PUSHW ZPPtr1
>PUSHW L.MSG.VOL >PUSHW L.MSG.VOL
bra .8 bra .8
@ -199,55 +202,55 @@ CS.RUN ldy #bCANCEL
rts rts
*-------------------------------------- *--------------------------------------
Push.Dir ldy #$1E get access mask Push.Dir ldy #$1E get access mask
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
>PUSHW ZPQuickPtr1 >PUSHW ZPPtr1
rts rts
*-------------------------------------- *--------------------------------------
Push.File >PUSHBI 0 4th byte of file len=0 Push.File >PUSHBI 0 4th byte of file len=0
ldy #$17 get file len (3 bytes) ldy #$17 get file len (3 bytes)
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
dey dey
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
dey dey
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
ldy #$1E get access mask ldy #$1E get access mask
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
ldy #$20 get aux type ldy #$20 get aux type
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
dey dey
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
ldy #$10 get filetype ldy #$10 get filetype
lda L.PRODOS.FT.TXT lda L.PRODOS.FT.TXT
sta ZPQuickPtr2 sta ZPPtr2
lda L.PRODOS.FT.TXT+1 lda L.PRODOS.FT.TXT+1
sta ZPQuickPtr2+1 sta ZPPtr2+1
ldx #0 ldx #0
.1 lda (ZPQuickPtr1),y .1 lda (ZPPtr1),y
cmp PRODOS.FT.ID,x cmp PRODOS.FT.ID,x
beq .3 beq .3
lda ZPQuickPtr2 lda ZPPtr2
clc clc
adc #4 adc #4
sta ZPQuickPtr2 sta ZPPtr2
bcc .2 bcc .2
inc ZPQuickPtr2+1 inc ZPPtr2+1
.2 inx .2 inx
cpx PRODOS.FT.COUNT cpx PRODOS.FT.COUNT
bne .1 bne .1
lda (ZPQuickPtr1),y lda (ZPPtr1),y
lsr lsr
lsr lsr
lsr lsr
@ -255,41 +258,41 @@ Push.File >PUSHBI 0 4th byte of file len=0
tax tax
lda HEXDIGIT,x lda HEXDIGIT,x
sta PRODOS.FT.DFLT+2 sta PRODOS.FT.DFLT+2
lda (ZPQuickPtr1),y lda (ZPPtr1),y
and #$0F and #$0F
tax tax
lda HEXDIGIT,x lda HEXDIGIT,x
sta PRODOS.FT.DFLT+3 sta PRODOS.FT.DFLT+3
.3 >PUSHW ZPQuickPtr2 .3 >PUSHW ZPPtr2
>PUSHW ZPQuickPtr1 >PUSHW ZPPtr1
>LIBCALL hLIBSTR,LIBSTR.LCASEP >LIBCALL hLIBSTR,LIBSTR.LCASEP
>PUSHW ZPQuickPtr1 >PUSHW ZPPtr1
rts rts
*-------------------------------------- *--------------------------------------
Push.Dates ldy #$24 get modification time Push.Dates ldy #$24 get modification time
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
dey dey
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
ldy #$22 ldy #$22
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
dey dey
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
ldy #$1B get creation time ldy #$1B get creation time
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
dey dey
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
ldy #$19 ldy #$19
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
dey dey
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
rts rts
*-------------------------------------- *--------------------------------------
@ -298,13 +301,13 @@ Push.Footer ldy #hVOLHEADER
beq .20 beq .20
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPPtr1
ldy #$22 file_count ldy #$22 file_count
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
dey dey
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
>PUSHW L.MSG.VOL.END >PUSHW L.MSG.VOL.END
@ -315,13 +318,13 @@ Push.Footer ldy #hVOLHEADER
beq .21 beq .21
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPPtr1
ldy #$22 file_count ldy #$22 file_count
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
dey dey
lda (ZPQuickPtr1),y lda (ZPPtr1),y
>PUSHA >PUSHA
>PUSHW L.MSG.DIR.END >PUSHW L.MSG.DIR.END

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
ZPPTR1 .EQ ZPBIN ZPPTR1 .EQ ZPBIN
@ -42,7 +40,7 @@ L.MSG1 .DA MSG1
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
bcs .9 bcs .9
sta hLIBSTR sta hLIBSTR

View File

@ -9,9 +9,7 @@ AUTO 6
.TF /A2OSX.BOOT/BIN/MD .TF /A2OSX.BOOT/BIN/MD
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/KERNEL.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
ZPPTR1 .EQ ZPBIN ZPPTR1 .EQ ZPBIN
@ -123,7 +121,6 @@ COUT phx
ply ply
plx plx
rts rts
pDevJmp jmp (pDev)
*-------------------------------------- *--------------------------------------
CS.END CS.END
hFullPath .BS 1 hFullPath .BS 1

View File

@ -9,9 +9,7 @@ AUTO 6
.TF /A2OSX.BOOT/BIN/MEM .TF /A2OSX.BOOT/BIN/MEM
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/KERNEL.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
PAGELEN .EQ 22 PAGELEN .EQ 22
@ -49,7 +47,7 @@ L.MSG6 .DA MSG6
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
bcs .9 bcs .9
sta hLIBSTR sta hLIBSTR
@ -330,7 +328,6 @@ COUT phx
ply ply
plx plx
rts rts
pDevJmp jmp (pDev)
*-------------------------------------- *--------------------------------------
CS.END CS.END
LIBSTR >PSTRING "libstr.o" LIBSTR >PSTRING "libstr.o"

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
@ -52,11 +50,11 @@ CS.INIT ldy #S.PS.hARGS
rts rts
.1 >LDYA L.LIBSTR .1 >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBSTR sta hLIBSTR
>LDYA L.LIBTCPIP >LDYA L.LIBTCPIP
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBTCPIP sta hLIBTCPIP
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?

View File

@ -6,12 +6,10 @@ AUTO 6
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF /A2OSX.BOOT/BIN/NETCFG .TF /A2OSX.BOOT/BIN/NETINFO
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
@ -55,7 +53,7 @@ L.MSG1.END .DA MSG1.END
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBSTR sta hLIBSTR
lda #K.PROTOID.IP lda #K.PROTOID.IP
@ -200,5 +198,5 @@ MSG1.DOMAIN >CSTRING ".%s"
MSG1.END >CSTRING "\nEnd of network configuration.\n" MSG1.END >CSTRING "\nEnd of network configuration.\n"
hLIBSTR .BS 1 hLIBSTR .BS 1
MAN MAN
SAVE BIN/NETCFG.S SAVE BIN/NETINFO.S
ASM ASM

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
@ -20,6 +18,7 @@ PING.TIMEOUT .EQ 40 40*100ms = 4 sec.
ZPFrameBase1 .EQ ZPBIN ZPFrameBase1 .EQ ZPBIN
ZPFrameLen1 .EQ ZPBIN+2 ZPFrameLen1 .EQ ZPBIN+2
ZPFramePtr1 .EQ ZPBIN+4 ZPFramePtr1 .EQ ZPBIN+4
ZPIPCfgPtr .EQ ZPBIN+6
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -54,22 +53,22 @@ CS.INIT ldy #S.PS.hARGS
rts rts
.1 >LDYA L.LIBSTR .1 >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBSTR sta hLIBSTR
>LDYA L.LIBTCPIP >LDYA L.LIBTCPIP
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBTCPIP sta hLIBTCPIP
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
bcs .9 bcs .9
>STYA ZPQuickPtr1 >STYA ZPIPCfgPtr
lda (ZPQuickPtr1) Configured ? lda (ZPIPCfgPtr) Configured ?
bpl .9 bpl .9
ldy #S.IPCFG.HDEV ldy #S.IPCFG.HDEV
lda (ZPQuickPtr1),y lda (ZPIPCfgPtr),y
sta hDev sta hDev
lda A2OSX.RANDOM16 lda A2OSX.RANDOM16
@ -113,7 +112,7 @@ CS.RUN.DNSQUERY >PUSHW pData DST.IP
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.QUERY >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.QUERY
bcc CS.RUN.IPOK bcc CS.RUN.IPOK
jsr A2osX.SLEEP >SYSCALL SYS.Sleep
ldy #TimeOut ldy #TimeOut
lda (pData),y lda (pData),y
bne CS.RUN.DNSQUERY bne CS.RUN.DNSQUERY
@ -212,7 +211,7 @@ CS.RUN.ECHO >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME
>PUSHYA >PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ICMP.FRAME >LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ICMP.FRAME
bcc .4 bcc .4
jsr A2osX.SLEEP >SYSCALL SYS.Sleep
ldy #TimeOut ldy #TimeOut
lda (pData),y lda (pData),y
bne .3 bne .3
@ -228,7 +227,7 @@ CS.RUN.ECHO >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME
ldy #TimeOut ldy #TimeOut
sta (pData),y sta (pData),y
CS.RUN.WAIT jsr A2osX.SLEEP CS.RUN.WAIT >SYSCALL SYS.Sleep
ldy #bReply ldy #bReply
lda (pData),y lda (pData),y
bne .1 bne .1
@ -257,7 +256,7 @@ CS.RUN.WAIT jsr A2osX.SLEEP
lda (pData),y lda (pData),y
beq .2 beq .2
jsr A2osX.SLEEP >SYSCALL SYS.Sleep
bra .1 bra .1
.2 jmp CS.RUN.ECHO .2 jmp CS.RUN.ECHO

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
ZPPTR1 .EQ ZPBIN ZPPTR1 .EQ ZPBIN
@ -43,7 +41,7 @@ L.MSG2 .DA MSG2
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLibStr sta hLibStr
clc clc
rts rts

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
ZPListDirPTR .EQ ZPBIN ZPListDirPTR .EQ ZPBIN
*-------------------------------------- *--------------------------------------
@ -250,7 +248,6 @@ COUT phx
ply ply
plx plx
rts rts
pDevJmp jmp (pDev)
*-------------------------------------- *--------------------------------------
CS.END CS.END
FullPath .BS 64 FullPath .BS 64

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
@ -20,6 +18,7 @@ RPCINFO.TIMEOUT .EQ 40 40*100ms = 4 sec.
ZPFrameBase1 .EQ ZPBIN ZPFrameBase1 .EQ ZPBIN
ZPFrameLen1 .EQ ZPBIN+2 ZPFrameLen1 .EQ ZPBIN+2
ZPFramePtr1 .EQ ZPBIN+4 ZPFramePtr1 .EQ ZPBIN+4
ZPIPCfgPtr .EQ ZPBIN+6
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -54,22 +53,22 @@ CS.INIT ldy #S.PS.hARGS
rts rts
.1 >LDYA L.LIBSTR .1 >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBSTR sta hLIBSTR
>LDYA L.LIBTCPIP >LDYA L.LIBTCPIP
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBTCPIP sta hLIBTCPIP
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
bcs .9 bcs .9
>STYA ZPQuickPtr1 >STYA ZPIPCfgPtr
lda (ZPQuickPtr1) Configured ? lda (ZPIPCfgPtr) Configured ?
bpl .9 bpl .9
ldy #S.IPCFG.HDEV ldy #S.IPCFG.HDEV
lda (ZPQuickPtr1),y lda (ZPIPCfgPtr),y
sta hDev sta hDev
lda A2OSX.RANDOM16 lda A2OSX.RANDOM16

View File

@ -6,23 +6,26 @@ AUTO 6
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF BIN/TEST .TF /A2OSX.BOOT/BIN/TEST
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
* Main entry point * File Header (16 Bytes)
*--------------------------------------
* Code signature and INIT table
*--------------------------------------
* CLD $D8
* JMP (*,x) $7C
* #JMPTABLE
* /JMPTABLE
*-------------------------------------- *--------------------------------------
CS.START cld CS.START cld
jmp (.1,x) 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 .1 .DA CS.INIT
.DA CS.RUN .DA CS.RUN
.DA CS.EVENT .DA CS.EVENT
@ -39,21 +42,20 @@ L.TEST1 .DA TEST1
L.TEST2 .DA TEST2 L.TEST2 .DA TEST2
L.TEST3 .DA TEST3 L.TEST3 .DA TEST3
.DA 0 .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 sta hLIBSTR
ldy #S.PS.hPREFIX ldy #S.PS.hPREFIX
lda (pPsContext),y lda (pPs),y
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>PUSHYA >PUSHYA
>PUSHW L.MSG0 >PUSHW L.MSG0
>LIBCALL hLIBSTR,LIBSTR.PRINTF >LIBCALL hLIBSTR,LIBSTR.PRINTF
ldy #S.PS.hCS ldy #S.PS.hCS
lda (pPsContext),y lda (pPs),y
>SYSCALL SYS.GetMemByIDA >SYSCALL SYS.GetMemByIDA
>STYA ZPQuickPtr1 >STYA ZPQuickPtr1
ldy #S.MEM.BIN ldy #S.MEM.BIN
@ -64,18 +66,18 @@ CS.INIT >LIBLOADP L.LIBSTR
>LIBCALL hLIBSTR,LIBSTR.PRINTF >LIBCALL hLIBSTR,LIBSTR.PRINTF
ldy #S.PS.hARGS ldy #S.PS.hARGS
lda (pPsContext),y lda (pPs),y
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>PUSHYA >PUSHYA
ldy #S.PS.hCMD ldy #S.PS.hCMD
lda (pPsContext),y lda (pPs),y
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>PUSHYA >PUSHYA
>PUSHW L.MSG2 >PUSHW L.MSG2
>LIBCALL hLIBSTR,LIBSTR.PRINTF >LIBCALL hLIBSTR,LIBSTR.PRINTF
ldy #S.PS.hENV ldy #S.PS.hENV
lda (pPsContext),y lda (pPs),y
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPBIN >STYA ZPBIN
@ -163,10 +165,8 @@ CROUT lda #13
*-------------------------------------- *--------------------------------------
COUT phx COUT phx
phy phy
>PUSHA ldx #DEVMGR.COUT
ldy #S.PS.hOUTDEV jsr pDevJmp
lda (pPsContext),y
>SYSCALL SYS.DevOutA
ply ply
plx plx
rts rts

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/IO.I .INB INC/IO.I
*-------------------------------------- *--------------------------------------
CURSOR.BLINK.SPEED .EQ 2 CURSOR.BLINK.SPEED .EQ 2
@ -37,16 +35,15 @@ L.MSG.DETECT .DA MSG.DETECT
.DA 0 End Of Reloc Table .DA 0 End Of Reloc Table
*-------------------------------------- *--------------------------------------
Dev.Detect >LDYA L.MSG.DETECT Dev.Detect >LDYA L.MSG.DETECT
>SYSCALL SYS.SysScrPPSTRYA >SYSCALL SYS.PSTROutYA
lda A2osX.SCREENS lda A2osX.SCREENS
ora #A2osX.SCREENS.C ora #A2osX.SCREENS.C
sta A2osX.SCREENS sta A2osX.SCREENS
clc clc
rts rts
CS.END 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) * Device Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -72,8 +69,10 @@ L.DEVINFO .DA DEVINFO
OPEN stz CURON OPEN stz CURON
lda #$80 lda #$80
sta INVFLG sta INVFLG
jsr HOME jsr HOME
lda #A2osX.SCREENS.C
>SYSCALL SYS.ScreenSelectA
clc clc
rts rts
@ -84,7 +83,7 @@ GETEVENT lda A2osX.TIMER16
beq .1 beq .1
jsr CURBLNK jsr CURBLNK
.1 lda A2osX.SCREENS .1 lda A2osX.ASCREEN
and #A2osX.SCREENS.C is screen active? and #A2osX.SCREENS.C is screen active?
beq .9 beq .9

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/IO.I .INB INC/IO.I
*-------------------------------------- *--------------------------------------
ZPBASE .EQ ZPDRV ZPBASE .EQ ZPDRV
@ -50,7 +48,7 @@ MSG.DETECT >PSTRING "\nApple IIe/IIc DoubleHGR Driver."
*-------------------------------------- *--------------------------------------
DEV.HEADER cld DEV.HEADER cld
jmp (DRV.CS.START,x) jmp (DRV.CS.START,x)
.DA #0 .DA #S.DEV.F.EVENT
>PSTRING "GFX" NAME >PSTRING "GFX" NAME
.HS 00 NAME must Be 5 bytes long .HS 00 NAME must Be 5 bytes long
.HS 00.00 .HS 00.00
@ -73,7 +71,12 @@ DRV.CS.START .DA OPEN
L.DEVINFO .DA DEVINFO L.DEVINFO .DA DEVINFO
.DA 0 end or relocation .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 sta SET80STORE prepare for page switching
ldx #192 ldx #192
@ -106,10 +109,25 @@ OPEN sta SETHIRES
txa txa
bne .81 bne .81
clc pla
bmi .84
sta CLR80STORE
.84 clc
rts 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 COUT
IRQ sec IRQ sec
rts rts

View File

@ -11,7 +11,6 @@ AUTO 6
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/IO.I .INB INC/IO.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
*-------------------------------------- *--------------------------------------
ZPGoMouse .EQ ZPDRV ZPGoMouse .EQ ZPDRV
ZPTmpPtr1 .EQ ZPDRV+2 ZPTmpPtr1 .EQ ZPDRV+2
@ -65,7 +64,7 @@ L.DEV.HEADER.NAME .DA DEV.HEADER.NAME
.DA 0 End Of Reloc Table .DA 0 End Of Reloc Table
*-------------------------------------- *--------------------------------------
Dev.Detect >LDYA L.MSG.DETECT Dev.Detect >LDYA L.MSG.DETECT
>SYSCALL SYS.SysScrPPSTRYA >SYSCALL SYS.PSTROutYA
stz ZPTmpPtr1 stz ZPTmpPtr1
lda #$C1 lda #$C1
@ -87,7 +86,7 @@ Dev.Detect >LDYA L.MSG.DETECT
bne .1 bne .1
>LDYA L.MSG.DETECT.KO >LDYA L.MSG.DETECT.KO
>SYSCALL SYS.SysScrPPSTRYA >SYSCALL SYS.PSTROutYA
lda #DEVMGR.ERRNOHW Not Found in any slot, exiting lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
sec sec
@ -106,16 +105,18 @@ Dev.Detect >LDYA L.MSG.DETECT
sta DEVSLOTn0 sta DEVSLOTn0
>LDYA L.MSG.DETECT.OK >LDYA L.MSG.DETECT.OK
>SYSCALL SYS.SysScrPPSTRYA >SYSCALL SYS.PSTROutYA
>LDYA L.DEV.HEADER.NAME >LDYA L.DEV.HEADER.NAME
>SYSCALL SYS.SysScrPPSTRYA >SYSCALL SYS.PSTROutYA
lda #13
>SYSCALL SYS.COutA
clc clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG.DETECT >PSTRING "\nApple II Mouse Driver." MSG.DETECT >PSTRING "Apple Mouse Card/IIc Mouse Driver."
MSG.DETECT.OK >PSTRING "\nMouse Card Driver Installed As Device : " MSG.DETECT.OK >PSTRING "Mouse Installed As Device : "
MSG.DETECT.KO >PSTRING "\nMouse Card Not Found." MSG.DETECT.KO >PSTRING "No Mouse Found.\n"
*-------------------------------------- *--------------------------------------
* Device Header (16 Bytes) * Device Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -188,7 +189,11 @@ OPEN
clc clc
rts rts
*-------------------------------------- *--------------------------------------
GETEVENT php GETEVENT lda A2osX.ASCREEN
and #A2osX.SCREENS.G is screen active?
beq .9
php
sei sei
lda RD80STORE lda RD80STORE
@ -252,8 +257,9 @@ GETEVENT php
clc clc
rts rts
.9 sec A=0 : no event .9 lda #0 Error = no event
rts sec
rts
*-------------------------------------- *--------------------------------------
COUT COUT
IRQ sec IRQ sec

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
*-------------------------------------- *--------------------------------------
ZPTmpPTR .EQ ZPDRV ZPTmpPTR .EQ ZPDRV
*-------------------------------------- *--------------------------------------
@ -126,11 +124,14 @@ CS.START cld
* Relocation Table * Relocation Table
*-------------------------------------- *--------------------------------------
L.MSG.DETECT .DA MSG.DETECT 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 .DA 0 End Of Reloc Table
*-------------------------------------- *--------------------------------------
Dev.Detect sta hArgs Dev.Detect sta hArgs
>LDYA L.MSG.DETECT >LDYA L.MSG.DETECT
>SYSCALL SYS.SysScrPPSTRYA >SYSCALL SYS.PSTROutYA
ldx #$10 ldx #$10
.1 stx DEVSLOTx0 .1 stx DEVSLOTx0
@ -150,7 +151,10 @@ Dev.Detect sta hArgs
cpx #$80 cpx #$80
bne .1 bne .1
lda #DEVMGR.ERRNOHW >LDYA L.MSG.DETECT.KO
>SYSCALL SYS.PSTROutYA
lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
sec sec
rts rts
@ -165,7 +169,13 @@ Dev.Detect sta hArgs
sec sec
rts 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 rts
*-------------------------------------- *--------------------------------------
DecodeMac lda (ZPTmpPTR) DecodeMac lda (ZPTmpPTR)
@ -221,7 +231,9 @@ Asc2NibbleA cmp #$30
rts rts
*-------------------------------------- *--------------------------------------
CS.END 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 hArgs .BS 1
*-------------------------------------- *--------------------------------------
* Device Header (16 Bytes) * Device Header (16 Bytes)

1
ETC/HOSTNAME Normal file
View File

@ -0,0 +1 @@
apple2-host

0
ETC/HOSTS Normal file
View File

View File

@ -8,7 +8,6 @@ MASK=255.255.255.0
GW=192.168.1.1 GW=192.168.1.1
DNS=192.168.1.2 DNS=192.168.1.2
DNS=192.168.1.1 DNS=192.168.1.1
HOSTNAME=apple2
DOMAIN=coincoin.hd.free.fr DOMAIN=coincoin.hd.free.fr
MAN MAN
TEXT ETC/TCPIP.CONF TEXT ETC/TCPIP.CONF

View File

@ -7,11 +7,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
* Aux ZP * 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 pCode .EQ $10
pData .EQ $12 pData .EQ $12
pStack .EQ $14 pStack .EQ $14
@ -26,12 +21,12 @@ ZPDRV .EQ $80
ZPBIN .EQ $90 ZPBIN .EQ $90
ZPLIB .EQ $A0 ZPLIB .EQ $A0
*-------------------------------------- *--------------------------------------
* !!!!!!! RESERVED APPLESOFT.I !!!!!!!
* $5E -> $C8
*--------------------------------------
* $B0 -> $FF KERNEL RESERVED * $B0 -> $FF KERNEL RESERVED
*-------------------------------------- *--------------------------------------
ZPMemMgr .EQ $B0 ZPMemMgr .EQ $E0
ZPSysScr .EQ $C0
ZPDevMgr .EQ $D0
ZPTskMgr .EQ $E0
*-------------------------------------- *--------------------------------------
R.VCPU16 .EQ $F0 R.VCPU16 .EQ $F0
R.AX .EQ R.VCPU16 R.AX .EQ R.VCPU16
@ -73,7 +68,6 @@ D.STACK.TOP .EQ $03F0 ...Down to $0300
Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00 Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00
Z80JMP .EQ $1000 Z80JMP .EQ $1000
*-------------------------------------- *--------------------------------------
MLICALL.PARAMS .EQ $1100
DevMgr.Table .EQ $1200 K.DEV.MAX*S.DEV.SIZE=32*16=512b 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 TskMgr.Table .EQ $1400 K.PS.MAX*S.PS.SIZE=64*16=1k
@ -103,6 +97,10 @@ pDevJmp .EQ $BE10
pCodeJmp .EQ $BE13 pCodeJmp .EQ $BE13
pLibJmp .EQ $BE16 pLibJmp .EQ $BE16
*-------------------------------------- *--------------------------------------
* $11 bytes min !!!!
*--------------------------------------
MLICALL.PARAMS .EQ $BEC0
*--------------------------------------
* $BEE0->$BEFF : Public Variables * $BEE0->$BEFF : Public Variables
*-------------------------------------- *--------------------------------------
A2osX.SCREENS .EQ $BEE0 A2osX.SCREENS .EQ $BEE0
@ -189,13 +187,13 @@ SYS.LoadDrvA .EQ $26
*-------------------------------------- *--------------------------------------
SYS.ExpandPStrA .EQ $30 SYS.ExpandPStrA .EQ $30
SYS.ExpandPStrYA .EQ $32 SYS.ExpandPStrYA .EQ $32
SYS.GetEnvVarH .EQ $34 SYS.GetEnvVarA .EQ $34
SYS.GetEnvVarP .EQ $36 SYS.GetEnvVarYA .EQ $36
SYS.SetEnvVarH .EQ $38 SYS.SetEnvVarH .EQ $38
SYS.SetEnvVarP .EQ $3A SYS.SetEnvVarP .EQ $3A
SYS.DelEnvVarH .EQ $3C SYS.DelEnvVarA .EQ $3C
SYS.DelEnvVarP .EQ $3E SYS.DelEnvVarYA .EQ $3E
*-------------------------------------- *--------------------------------------
SYS.MLICreateFile .EQ $40 SYS.MLICreateFile .EQ $40
SYS.MLICreateDirA .EQ $42 SYS.MLICreateDirA .EQ $42
@ -243,10 +241,10 @@ SYS.GetDevByNameYA .EQ $84
SYS.GetKeyboardEvent .EQ $88 SYS.GetKeyboardEvent .EQ $88
*-------------------------------------- *--------------------------------------
SYS.ExecProcessNewEnvA .EQ $90 SYS.ExecProcessNewEnvYA .EQ $90
SYS.ExecProcessA .EQ $92 SYS.ExecProcessYA .EQ $92
SYS.CreateProcessNewEnvA .EQ $94 SYS.CreateProcessNewEnvYA .EQ $94
SYS.CreateProcessA .EQ $96 SYS.CreateProcessYA .EQ $96
SYS.GetPSByIDA .EQ $98 SYS.GetPSByIDA .EQ $98
@ -267,9 +265,15 @@ SYS.GetNetCfgA .EQ $B4
SYS.ClrNetCfgA .EQ $B6 SYS.ClrNetCfgA .EQ $B6
*-------------------------------------- *--------------------------------------
SYS.ScreenSelectA .EQ $C0 SYS.ScreenSelectA .EQ $C0
*--------------------------------------
SYS.COutA .EQ $D0
SYS.PSTROutA .EQ $D2
SYS.PSTROutYA .EQ $D4
SYS.SysScrPPSTRA .EQ $C4 SYS.HexOutA .EQ $D8
SYS.SysScrPPSTRYA .EQ $C6 SYS.HexOutYA .EQ $DA
SYS.DecOutA .EQ $DC
SYS.DecOutYA .EQ $DE
*-------------------------------------- *--------------------------------------
* ERROR CODES * ERROR CODES
*-------------------------------------- *--------------------------------------

70
INC/APPLESOFT.I.txt Normal file
View 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

View File

@ -10,6 +10,14 @@ AUTO 6
bpl :1 bpl :1
sta $C010 sta $C010
.EM .EM
*--------------------------------------
.MA DEBUGOA
bit $C061
bpl :2
:1 bit $C000
bpl :1
sta $C010
:2 .EM
*-------------------------------------- *--------------------------------------
* SYSCALLs Macros * SYSCALLs Macros
*-------------------------------------- *--------------------------------------
@ -101,16 +109,6 @@ AUTO 6
ldx #]2 ldx #]2
jsr A2osX.DRVCALL jsr A2osX.DRVCALL
.EM .EM
*--------------------------------------
.MA LOADLIBYA
ldx #SYS.LoadLibYA
jsr A2osX.SYSCALL
.EM
*--------------------------------------
.MA LOADLIBA
ldx #SYS.LoadLibA
jsr A2osX.SYSCALL
.EM
*-------------------------------------- *--------------------------------------
.MA LIBCALL .MA LIBCALL
ldy ]1 ldy ]1
@ -287,9 +285,9 @@ AUTO 6
.EM .EM
*-------------------------------------- *--------------------------------------
.MA PSTRING .MA PSTRING
.DA #:2-:1 .DA #:1-*-1
:1 .AS "]1" .AS "]1"
:2 .EQ * :1 .EQ *
.EM .EM
MAN MAN
SAVE INC/MACROS.I SAVE INC/MACROS.I

View File

@ -10,7 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
*-------------------------------------- *--------------------------------------
ZPTmpPtr1 .EQ ZPLIB+2 ZPTmpPtr1 .EQ ZPLIB+2
ZPTmpPtr2 .EQ ZPLIB+4 ZPTmpPtr2 .EQ ZPLIB+4
@ -761,7 +760,6 @@ COUT phx
ply ply
plx plx
rts rts
pDevJmp jmp (pDev)
*-------------------------------------- *--------------------------------------
CS.END CS.END
PRINTFTBL1 .AS -"abBdDLeEhHiIsStT" PRINTFTBL1 .AS -"abBdDLeEhHiIsStT"

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
ZPFrameBase1 .EQ ZPLIB ZPFrameBase1 .EQ ZPLIB
@ -469,7 +467,6 @@ ComputeChecksum >PULLA
eor #$FF eor #$FF
rts rts
*-------------------------------------- *--------------------------------------
pDevJmp jmp (pDev)
CS.END CS.END
*-------------------------------------- *--------------------------------------
bFirstLoad .DA #0 bFirstLoad .DA #0

View File

@ -10,14 +10,13 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
ZPFrameBase1 .EQ ZPBIN ZPFrameBase1 .EQ ZPBIN
ZPFrameLen1 .EQ ZPBIN+2 ZPFrameLen1 .EQ ZPBIN+2
ZPFramePtr1 .EQ ZPBIN+4 ZPFramePtr1 .EQ ZPBIN+4
ZPPtr1 .EQ ZPBIN+6
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -43,20 +42,20 @@ L.IPCFG .DA IPCFG
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >LDYA L.LIBSTR
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBSTR sta hLIBSTR
>LDYA L.LIBTCPIP >LDYA L.LIBTCPIP
>LOADLIBYA >SYSCALL SYS.LoadLibYA
sta hLIBTCPIP sta hLIBTCPIP
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
bcs .9 bcs .9
>STYA ZPQuickPTR1 >STYA ZPPtr1
ldy #S.IPCFG ldy #S.IPCFG
.1 dey .1 dey
lda (ZPQuickPTR1),y lda (ZPPtr1),y
sta IPCFG,y sta IPCFG,y
tya tya
bne .1 bne .1
@ -97,7 +96,7 @@ CS.RUN.DISC jsr SendDHCPDiscFrame
lda #S.IPCFG.STATUS.SDISC lda #S.IPCFG.STATUS.SDISC
sta IPCFG sta IPCFG
CS.RUN.OFFER jsr A2osX.SLEEP CS.RUN.OFFER >SYSCALL SYS.Sleep
lda IPCFG lda IPCFG
and #S.IPCFG.STATUS.ROFFER and #S.IPCFG.STATUS.ROFFER
bne CS.RUN.REQ bne CS.RUN.REQ
@ -112,7 +111,7 @@ CS.RUN.REQ jsr SendDHCPReqFrame
lda #S.IPCFG.STATUS.SREQ lda #S.IPCFG.STATUS.SREQ
sta IPCFG sta IPCFG
CS.RUN.RACK jsr A2osX.SLEEP CS.RUN.RACK >SYSCALL SYS.Sleep
lda IPCFG lda IPCFG
and #S.IPCFG.STATUS.RACK and #S.IPCFG.STATUS.RACK
bne CS.RUN.OK bne CS.RUN.OK
@ -209,15 +208,15 @@ SendDHCPDiscFrame
lda ZPFrameBase1 lda ZPFrameBase1
clc clc
adc #S.UDP adc #S.UDP
sta ZPQuickPTR1 sta ZPPtr1
lda ZPFrameBase1+1 lda ZPFrameBase1+1
adc /S.UDP adc /S.UDP
sta ZPQuickPTR1+1 sta ZPPtr1+1
ldy #FRAME.DISC.LEN ldy #FRAME.DISC.LEN
.1 dey .1 dey
lda FRAME.DISC,y lda FRAME.DISC,y
sta (ZPQuickPTR1),y sta (ZPPtr1),y
tya tya
bne .1 bne .1
@ -363,15 +362,15 @@ SendDHCPReqFrame
lda ZPFrameBase1 lda ZPFrameBase1
clc clc
adc #S.UDP adc #S.UDP
sta ZPQuickPTR1 sta ZPPtr1
lda ZPFrameBase1+1 lda ZPFrameBase1+1
adc /S.UDP adc /S.UDP
sta ZPQuickPTR1+1 sta ZPPtr1+1
ldy #FRAME.REQ.LEN ldy #FRAME.REQ.LEN
.1 dey .1 dey
lda FRAME.REQ,y lda FRAME.REQ,y
sta (ZPQuickPTR1),y sta (ZPPtr1),y
tya tya
bne .1 bne .1

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
*-------------------------------------- *--------------------------------------
ZPTmp1 .EQ ZPBIN ZPTmp1 .EQ ZPBIN
*-------------------------------------- *--------------------------------------
@ -42,7 +40,8 @@ CS.INIT ldy #S.PS.hARGS
bne .1 bne .1
>LDYA L.MSG.USAGE >LDYA L.MSG.USAGE
jsr PRINT.MSG >SYSCALL SYS.PSTROutYA
lda #0
sec sec
rts rts
@ -50,12 +49,13 @@ CS.INIT ldy #S.PS.hARGS
>PUSHBI $20 Push SEP=' ' >PUSHBI $20 Push SEP=' '
>PUSHBI 1 Push 1 for getting INDEV >PUSHBI 1 Push 1 for getting INDEV
>SYSCALL SYS.PStrGetTkn >SYSCALL SYS.PStrGetTkn
bcs .98 bcs .99
sta hDEVNAME sta hDEVNAME
>SYSCALL SYS.GetDevByNameA >SYSCALL SYS.GetDevByNameA
bcs .99 bcs .98
>STYA pDev
txa txa
ldy #S.PS.hINDEV ldy #S.PS.hINDEV
sta (pPs),y sta (pPs),y
@ -77,13 +77,11 @@ CS.INIT ldy #S.PS.hARGS
ldy #hBinName ldy #hBinName
sta (pData),y sta (pData),y
ldx #DEVMGR.OPEN ldx #DEVMGR.OPEN
jsr pDevJmp if error CS, else... jsr pDevJmp if error CS, else...
rts ...Tell TskMgr To stay in memory rts ...Tell TskMgr To stay in memory
.98 pha .98 pha
lda hDEVNAME lda hDEVNAME
>SYSCALL SYS.FreeMemA >SYSCALL SYS.FreeMemA
@ -91,41 +89,33 @@ CS.INIT ldy #S.PS.hARGS
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
CS.RUN ldy #S.PS.hOUTDEV CS.RUN lda #13 try send a CR...
lda (pPs),y >SYSCALL SYS.COutA Device Is Ready ?
>SYSCALL SYS.GetDevByIDA
>STYA pDev
lda #13 try send a CR...
jsr COUT Device Is Ready ?
bcc .1 bcs .8 no..loop...
clc no..loop...
rts
.1 >LDYA L.MSG.GREETINGS .1 >LDYA L.MSG.GREETINGS
jsr PRINT.MSG >SYSCALL SYS.PSTROutYA
bcs .9
ldy #S.PS.hINDEV bcs .8 unable to send greetings...loop..
lda (pPs),y
jsr PRBYTE
bcs .9
lda #','
jsr COUT
bcs .9
ldy #S.PS.hOUTDEV ldy #S.PS.hOUTDEV
lda (pPs),y lda (pPs),y
jsr PRBYTE >SYSCALL SYS.HexOutA
bcs .9 bcs .8
lda #13
>SYSCALL SYS.COutA
bcs .8
ldy #hBinName ldy #hBinName
lda (pData),y lda (pData),y
>SYSCALL SYS.ExecProcessNewEnvA ldy #0
>SYSCALL SYS.ExecProcessNewEnvYA
.9 rts .9 rts
.8 clc
rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT sec CS.DOEVENT sec
rts rts
@ -140,53 +130,9 @@ CS.QUIT ldy #hBinName
clc clc
rts 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 CS.END
MSG.USAGE >CSTRING "GETTY <INDEV> <OUTDEV> <PROGRAM>" MSG.USAGE >PSTRING "GETTY <DEV> <PROGRAM>"
MSG.GREETINGS >CSTRING "A2osX-GeTTY on Dev=" MSG.GREETINGS >PSTRING "A2osX-GeTTY on Dev="
hDEVNAME .BS 1 hDEVNAME .BS 1
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY

View File

@ -10,7 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------

0
SBIN/HTTPD.S.txt Normal file
View File

74
SBIN/INSDRV.S.txt Normal file
View 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

View File

@ -10,7 +10,8 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I *--------------------------------------
ZPPTR1 .EQ ZPBIN
*-------------------------------------- *--------------------------------------
INPUT.BUFFER.SIZE .EQ 16 INPUT.BUFFER.SIZE .EQ 16
*-------------------------------------- *--------------------------------------
@ -56,39 +57,49 @@ CS.RUN lda #0
ldy #hPASSWORD ldy #hPASSWORD
sta (pData),y sta (pData),y
jsr CROUT lda #13
jsr CROUT >SYSCALL SYS.COutA
bcs .9
>LDYA L.MSG.LOGIN >LDYA L.MSG.LOGIN
jsr PRINT.MSG >SYSCALL SYS.PSTROutYA
bcs .9
lda #0 Echo all caracters lda #0 Echo all caracters
jsr INPUT.RESET jsr INPUT.RESET
.1 jsr A2osX.Sleep .1 >SYSCALL SYS.Sleep
jsr INPUT.LINEIN jsr INPUT.LINEIN
bcc .1 bcc .1
jsr CROUT lda #13
>SYSCALL SYS.COutA
bcs .9
>LDYA L.MSG.PASSWORD >LDYA L.MSG.PASSWORD
jsr PRINT.MSG >SYSCALL SYS.PSTROutYA
lda #'*' lda #'*'
jsr INPUT.RESET jsr INPUT.RESET
.2 jsr A2osX.Sleep .2 >SYSCALL SYS.Sleep
jsr INPUT.LINEIN jsr INPUT.LINEIN
bcc .2 bcc .2
jsr CROUT lda #13
>SYSCALL SYS.COutA
bcs .9
ldy #hSHELL ldy #hSHELL
lda (pData),y lda (pData),y
>SYSCALL SYS.ExecProcessNewEnvA ldy #0
>SYSCALL SYS.ExecProcessNewEnvYA
bcc .8 bcs .9
jsr PRBYTE
.8 clc .8 clc
rts rts
.9 sec
rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT ldy #S.EVT.hDEV CS.DOEVENT ldy #S.EVT.hDEV
lda (pEvent),y lda (pEvent),y
@ -113,7 +124,10 @@ CS.DOEVENT ldy #S.EVT.hDEV
.99 sec .99 sec
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT clc CS.QUIT ldy #hSHELL
lda (pData),y
>SYSCALL SYS.FreeMemA
clc
rts rts
*-------------------------------------- *--------------------------------------
* PRIVATE * PRIVATE
@ -133,31 +147,32 @@ INPUT.CHARIN tax saver char...
lda #INPUT.BUFFER lda #INPUT.BUFFER
clc clc
adc pData adc pData
sta ZPQuickPtr1 sta ZPPTR1
lda pData+1 lda pData+1
adc /INPUT.BUFFER adc /INPUT.BUFFER
sta ZPQuickPtr1+1 sta ZPPTR1+1
cpx #$20 Control Char? cpx #$20 Control Char?
bcc .2 bcc .2
lda (ZPQuickPtr1) lda (ZPPTR1)
cmp #INPUT.BUFFER.SIZE Buffer full? cmp #INPUT.BUFFER.SIZE Buffer full?
beq .9 beq .9
inc inc
sta (ZPQuickPtr1) sta (ZPPTR1)
tay tay
txa txa
sta (ZPQuickPtr1),y sta (ZPPTR1),y
ldy #INPUT.STATUS ldy #INPUT.STATUS
lda (pData),y lda (pData),y
bne .1 bne .1
txa txa
.1 jmp COUT .1 >SYSCALL SYS.COutA
rts
.2 cpx #$0D .2 cpx #$0D
bne .9 bne .9
@ -177,49 +192,10 @@ INPUT.LINEIN ldy #INPUT.STATUS
clc clc
.9 rts .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 CS.END
*-------------------------------------- MSG.LOGIN >PSTRING "login:"
MSG.LOGIN >CSTRING "login:" MSG.PASSWORD >PSTRING "password:"
MSG.PASSWORD >CSTRING "password:" SHELL >PSTRING "SBIN/SHELL"
SHELL >PSTRING "SHELL"
*--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START

View File

@ -10,7 +10,8 @@ EXEC.CMD stz hFullCmd
stz hEnvPath stz hEnvPath
ldy #hCmdLine ldy #hCmdLine
>PUSHB (pData),y lda (pData),y
>PUSHA
>PUSHBI $20 Push SEP=' ' >PUSHBI $20 Push SEP=' '
>PUSHBI 0 Push 0 for getting CMD & ARGS >PUSHBI 0 Push 0 for getting CMD & ARGS
>SYSCALL SYS.PStrGetTkn >SYSCALL SYS.PStrGetTkn
@ -38,7 +39,7 @@ EXEC.CMD stz hFullCmd
lda (ZPPtr1),y lda (ZPPtr1),y
cmp #'a' cmp #'a'
bcc .3 bcc .3
cmp #'{' cmp #'z'+1
bcs .3 bcs .3
eor #$20 to Uppercase eor #$20 to Uppercase
.3 cmp CMDS,x .3 cmp CMDS,x
@ -60,24 +61,24 @@ EXEC.CMD stz hFullCmd
inc ExecCmdIdx inc ExecCmdIdx
bra .1 bra .1
.99 rts .99 rts
*--------------------------------------
* ZPPtr1 = hExecCmd
*--------------------------------------
EXEC.CMD.EXT ldy #1 EXEC.CMD.EXT ldy #1
lda (ZPPtr1),y lda (ZPPtr1),y
cmp #'/' cmp #'/'
bne .2 bne .1
ldy #hCmdLine >LDYA ZPPtr1
lda (pPs),y >SYSCALL SYS.NewPStrYA
bra .11 bra .10
.2 >PUSHW L.ENV.PATH push ENVNAME=PATH .1 >LDYA L.ENV.PATH push ENVNAME=PATH
ldy #S.PS.hENV >SYSCALL SYS.GetEnvVarYA get value for ENV=PATH
lda (pPs),y
>PUSHA
>SYSCALL SYS.GetEnvVarP get value for ENV=PATH
bcs EXEC.CMD.ClnUp bcc .12
jmp EXEC.CMD.ClnUp
sta hEnvPath .12 sta hEnvPath
>PUSHB hExecCmd >PUSHB hExecCmd
>PUSHB hEnvPath >PUSHB hEnvPath
>SYSCALL SYS.FileSearch >SYSCALL SYS.FileSearch
@ -89,27 +90,55 @@ EXEC.CMD.EXT ldy #1
>PUSHA >PUSHA
>SYSCALL SYS.FileSearch >SYSCALL SYS.FileSearch
bcs EXEC.CMD.ClnUp .10 bcs EXEC.CMD.ClnUp
.10 sta hFullCmd sta hFullCmd
.11 >SYSCALL SYS.MLIGetFileInfoA >SYSCALL SYS.MLIGetFileInfoA
bcs EXEC.CMD.ClnUp bcs EXEC.CMD.ClnUp
>STYA ZPPTR1 >STYA ZPPTR1
ldy #1 Get File Type ldy #1 Get File Type
lda (ZPPTR1),y lda (ZPPTR1),y
cmp #$04 TXT File ? 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 * bra *
.1 jsr EXEC.CMD.ClnUp Discard CMD & ARGS .5 lda #SYSMGR.ERRSYN
ldy #hCmdLine sec
lda (pData),y
>SYSCALL SYS.ExecProcessNewEnvA
rts
EXEC.CMD.ClnUp pha EXEC.CMD.ClnUp pha
php php
lda hFullCmd lda hFullCmd
@ -138,10 +167,9 @@ EXEC.CMD.CD lda hExecArgs
bne EXEC.CMD.CD.C bne EXEC.CMD.CD.C
ldy #S.PS.hPREFIX ldy #S.PS.hPREFIX
lda (pPs),y lda (pPs),y
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.PSTROutA
>PUSHYA lda #13
>LIBCALL hLIBSTR,LIBSTR.PRINTP >SYSCALL SYS.COutA
jsr CROUT
clc clc
rts rts
@ -224,7 +252,7 @@ EXEC.CMD.CD.C >SYSCALL SYS.GetMemPtrA
rts rts
*-------------------------------------- *--------------------------------------
EXEC.CMD.SET lda hExecArgs EXEC.CMD.SET lda hExecArgs
bne .2 bne EXEC.CMD.SETVAR
ldy #S.PS.hENV ldy #S.PS.hENV
lda (pPs),y lda (pPs),y
@ -233,9 +261,10 @@ EXEC.CMD.SET lda hExecArgs
.1 lda (ZPPTR1) .1 lda (ZPPTR1)
beq .8 Ending 0 ? beq .8 Ending 0 ?
>PUSHW ZPPTR1 >LDYA ZPPTR1
>LIBCALL hLIBSTR,LIBSTR.PRINTP >SYSCALL SYS.PSTROutYA
jsr CROUT lda #13
>SYSCALL SYS.COutA
lda ZPPTR1 lda ZPPTR1
sec sec
@ -248,7 +277,7 @@ EXEC.CMD.SET lda hExecArgs
.8 clc .8 clc
rts rts
.2 >PUSHA Push Cmd Line EXEC.CMD.SETVAR >PUSHA Push Cmd Line
>PUSHBI $3D Push SEP='=' >PUSHBI $3D Push SEP='='
>PUSHBI 0 Push Token IDX >PUSHBI 0 Push Token IDX
>SYSCALL SYS.PStrGetTkn >SYSCALL SYS.PStrGetTkn
@ -259,46 +288,42 @@ EXEC.CMD.SET lda hExecArgs
.3 sta hVarName .3 sta hVarName
stx hVarValue stx hVarValue
txa txa
bne .7 beq .31
lda hExecArgs >PUSHB hVarValue
>PUSHB hVarName
>SYSCALL SYS.SetEnvVarH
jmp .97
.31 lda hExecArgs
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPPTR1 >STYA ZPPTR1
lda (ZPPTR1) lda (ZPPTR1)
tay tay
lda (ZPPTR1),y lda (ZPPTR1),y
cmp #'=' cmp #'='
beq .7 bne .4
lda hVarName
>SYSCALL SYS.DelEnvVarA
bra .97
>PUSHB hVarName .4 lda hVarName
ldy #S.PS.hENV >SYSCALL SYS.GetEnvVarA
>PUSHB (pPs),y
>SYSCALL SYS.GetEnvVarH
bcs .97 bcs .97
sta hVarValue sta hVarValue
lda hVarName lda hVarName
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.PSTROutA
>PUSHYA
>LIBCALL hLIBSTR,LIBSTR.PRINTP
lda #'=' lda #'='
jsr COUT >SYSCALL SYS.COutA
lda hVarValue lda hVarValue
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.PSTROutA
>PUSHYA lda #13
>LIBCALL hLIBSTR,LIBSTR.PRINTP >SYSCALL SYS.COutA
jsr CROUT
clc
bra .97
.7 >PUSHB hVarValue
>PUSHB hVarName
ldy #S.PS.hENV
>PUSHB (pPs),y
>SYSCALL SYS.SetEnvVarH
.97 php .97 php
pha pha
lda hVarValue lda hVarValue
@ -314,7 +339,8 @@ EXEC.CMD.DATE >SYSCALL SYS.MLIGetTime
bcs .9 bcs .9
>PUSHW DATELO >PUSHW DATELO
>LIBCALL hLIBSTR,LIBSTR.PRINTDATE >LIBCALL hLIBSTR,LIBSTR.PRINTDATE
jsr CROUT lda #13
>SYSCALL SYS.COutA
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -322,7 +348,8 @@ EXEC.CMD.TIME >SYSCALL SYS.MLIGetTime
bcs .9 bcs .9
>PUSHW TIMELO >PUSHW TIMELO
>LIBCALL hLIBSTR,LIBSTR.PRINTTIME >LIBCALL hLIBSTR,LIBSTR.PRINTTIME
jsr CROUT lda #13
>SYSCALL SYS.COutA
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -332,10 +359,9 @@ EXEC.CMD.ECHO lda hExecArgs
bcs .99 bcs .99
pha pha
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.PSTROutA
>PUSHYA lda #13
>LIBCALL hLIBSTR,LIBSTR.PRINTP >SYSCALL SYS.COutA
jsr CROUT
pla pla
>SYSCALL SYS.FreeMemA >SYSCALL SYS.FreeMemA
clc clc
@ -363,7 +389,7 @@ EXEC.CMD.TYPE lda hExecArgs
.2 dec ZPPTR2 .2 dec ZPPTR2
lda (ZPPTR1) lda (ZPPTR1)
jsr COUT >SYSCALL SYS.COutA
inc ZPPTR1 inc ZPPTR1
bne .1 bne .1
inc ZPPTR1+1 inc ZPPTR1+1
@ -378,6 +404,16 @@ EXEC.CMD.TYPE lda hExecArgs
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
EXEC.CMD.READ
clc
rts
*--------------------------------------
EXEC.CMD.PAUSE ldy #bPause
lda #$80
sta (pData),y
clc
rts
*--------------------------------------
EXEC.CMD.EXIT ldy #bEXIT EXEC.CMD.EXIT ldy #bEXIT
lda #$FF lda #$FF
sta (pData),y sta (pData),y

View File

@ -11,7 +11,6 @@ AUTO 6
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/PRODOS.I .INB INC/PRODOS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/LIBSTR.I .INB INC/LIBSTR.I
*-------------------------------------- *--------------------------------------
ZPPTR1 .EQ ZPBIN ZPPTR1 .EQ ZPBIN
@ -41,28 +40,35 @@ CS.START cld
*-------------------------------------- *--------------------------------------
L.LIBSTR .DA LIBSTR L.LIBSTR .DA LIBSTR
L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.GREETINGS .DA MSG.GREETINGS
L.MSG.UNKNOWN .DA MSG.UNKNOWN L.MSG.ERROR .DA MSG.ERROR
L.MSG.SYNERR .DA MSG.SYNERR
L.ENV.PATH .DA ENV.PATH L.ENV.PATH .DA ENV.PATH
J.INTCMDS .DA EXEC.CMD.CD J.INTCMDS .DA EXEC.CMD.CD
.DA EXEC.CMD.SET
.DA EXEC.CMD.DATE .DA EXEC.CMD.DATE
.DA EXEC.CMD.TIME
.DA EXEC.CMD.ECHO .DA EXEC.CMD.ECHO
.DA EXEC.CMD.TYPE
.DA EXEC.CMD.EXIT .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 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >DEBUG
>LOADLIBYA >LDYA L.LIBSTR
>SYSCALL SYS.LoadLibYA
bcs .9 bcs .9
sta hLIBSTR sta hLIBSTR
ldy #S.PS.hARGS Batch mode ? ldy #S.PS.hARGS Batch file ?
lda (pPs),y lda (pPs),y
beq CS.INIT.INTERACTIVE no,continue starting interactive beq CS.INIT.INTERACTIVE no,continue starting interactive
jsr OpenTxtFileA
bcs .9
ldy #bExitOnEOF
lda #$FF
sta (pData),y
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -70,17 +76,11 @@ CS.INIT.INTERACTIVE
jsr History.Init jsr History.Init
bcs .9 bcs .9
ldy #S.PS.ID
lda (pPs),y
>PUSHA
ldy #S.PS.hOUTDEV
lda (pPs),y
>PUSHA
ldy #S.PS.hINDEV ldy #S.PS.hINDEV
lda (pPs),y lda (pPs),y
>PUSHA >PUSHA
>PUSHW L.MSG.GREETINGS >LDYA L.MSG.GREETINGS
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL SYS.PSTROutYA
lda (pPs) lda (pPs)
ora #S.PS.F.EVENT Now accept events ora #S.PS.F.EVENT Now accept events
@ -92,56 +92,77 @@ CS.INIT.INTERACTIVE
CS.RUN lda #0 CS.RUN lda #0
sta (pData) sta (pData)
lda #"$" ldy #bPause
jsr COUT lda (pData),y
lda #" " bpl .10
jsr COUT clc
rts
.1 jsr A2osX.SLEEP .10 ldy #hInputFile batch mode ?
lda (pData),y
bne .2
jsr PrintPrompt
.1 >SYSCALL SYS.Sleep
lda (pData) lda (pData)
bpl .1 bpl .1
.2 and #$7F and #$7F
sta (pData) sta (pData)
bra .3
.2 jsr ReadTxtFile
bcs .81
.3 lda (pData)
beq CS.RUN Empty line beq CS.RUN Empty line
ldy #1 ldy #1
lda (pData),y lda (pData),y
cmp #'#' Comment cmp #'#' Comment
beq CS.RUN beq CS.RUN
jsr History.Add ldy #hInputFile
lda (pData),y
bne .32
ldy #bEchoOff
lda (pData),y
beq .31
>LDYA pData >LDYA pData
>SYSCALL SYS.PSTROutYA
.31 jsr History.Add
.32 >LDYA pData
>SYSCALL SYS.NewPStrYA >SYSCALL SYS.NewPStrYA
bcs .99 bcs .99
ldy #hCmdLine ldy #hCmdLine
sta (pData),y sta (pData),y
jsr EXEC.CMD jsr EXEC.CMD
bcc .3 bcc .4
pha jsr PrintError
lda #"["
jsr COUT
pla
jsr PRBYTE
lda #"]"
jsr COUT
jsr CROUT
.3 ldy #hCmdLine .4 ldy #hCmdLine
lda (pData),y lda (pData),y
>SYSCALL SYS.FreeMemA >SYSCALL SYS.FreeMemA
ldy #hCmdLine ldy #hCmdLine
lda #0 lda #0
sta (pData),y sta (pData),y
ldy #bEXIT .8 ldy #bEXIT
lda (pData),y lda (pData),y
bne .99 bne .99
clc clc
rts rts
.81 jsr CloseTxtFile
bra .8
.99 sec .99 sec
rts rts
@ -150,8 +171,8 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
lda (pEvent),y lda (pEvent),y
ldy #S.PS.hINDEV ldy #S.PS.hINDEV
cmp (pPs),y cmp (pPs),y
bne .9 bne .9
lda (pEvent) lda (pEvent)
and #S.EVT.F.KEY is it a KEY event? and #S.EVT.F.KEY is it a KEY event?
beq .9 beq .9
@ -164,7 +185,37 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
lda (pEvent),y lda (pEvent),y
tax 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 bcs .1
jsr CS.EVENT.CTRL.CHAR jsr CS.EVENT.CTRL.CHAR
bra .8 bra .8
@ -185,8 +236,7 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
txa txa
sta (pData),y sta (pData),y
ora #$80 >SYSCALL SYS.COutA
jsr COUT
.8 clc .8 clc
rts rts
@ -195,64 +245,89 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
rts rts
*-------------------------------------- *--------------------------------------
CS.EVENT.CTRL.CHAR CS.EVENT.CTRL.CHAR
cmp #13 CR cpx #13 CR
bne .10 bne .10
jsr CROUT txa
>SYSCALL SYS.COutA
lda (pData) CmdBuffer lda (pData) CmdBuffer
ora #$80 ora #$80
sta (pData) sta (pData)
clc clc
rts rts
.10 cmp #3 .10 cpx #3 Ctrl-C
bne .1 bne .1
jsr CmdBuffer.CLR jsr CmdBuffer.CLR
clc clc
rts rts
.1 cmp #8 BS (left arrow) .1 cpx #8 BS (left arrow)
bne .2 bne .2
jsr CmdBuffer.DEL jsr CmdBuffer.DEL
clc clc
rts rts
.2 cmp #10 LF (down arrow) .2 cpx #10 LF (down arrow)
bne .3 bne .3
jsr HISTORY.GETNEXT jsr HISTORY.GETNEXT
clc clc
rts rts
.3 cmp #11 VT (up arrow) .3 cpx #11 VT (up arrow)
bne .4 bne .4
jsr HISTORY.GETPREV jsr HISTORY.GETPREV
clc clc
rts rts
.4 cmp #21 NAK (right arrow) .4 cpx #21 NAK (right arrow)
bne .8 bne .8
clc clc
rts rts
.8 jsr PRBYTE .8 clc
clc
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT jsr History.Quit 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 >SYSCALL SYS.UnloadLibA
clc clc
rts rts
*-------------------------------------- *--------------------------------------
* PRIVATE * 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 CmdBuffer.PRINT ldy #0
.1 iny .1 iny
lda (pData),y lda (pData),y
ora #$80 ora #$80
jsr COUT >SYSCALL SYS.COutA
tya tya
cmp (pData) cmp (pData)
bne .1 bne .1
@ -265,40 +340,92 @@ CmdBuffer.CLR jsr CmdBuffer.DEL
CmdBuffer.DEL lda (pData) CmdBuffer.DEL lda (pData)
beq .9 beq .9
lda #8 lda #8
jsr COUT >SYSCALL SYS.COutA
lda (pData) lda (pData)
dec dec
sta (pData) sta (pData)
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
PRBYTE pha OpenTxtFileA >SYSCALL SYS.MLIOpenA
lsr bcs .9
lsr
lsr ldy #hInputFile
lsr sta (pData),y
ora #$B0 pha
cmp #$BA txa
bcc .1 ldy #hInputBuffer
adc #6 sta (pData),y
.1 jsr COUT
>PUSHBI $0D Line separator for TXT file
>PUSHBI $FF
pla pla
and #$0F >PUSHA
ora #$B0 >SYSCALL SYS.MLINewLine
cmp #$BA bcc .9
bcc COUT pha
adc #6 jsr CloseTxtFile
bra COUT 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 CloseTxtFile ldy #hInputArgs
phy lda (pData),y
ldx #DEVMGR.COUT beq .1
jsr pDevJmp >SYSCALL SYS.FreeMemA
ply
plx .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 rts
pDevJmp jmp (pDev)
*-------------------------------------- *--------------------------------------
.INB SBIN/SHELL.S.CMD .INB SBIN/SHELL.S.CMD
.INB SBIN/SHELL.S.HIS .INB SBIN/SHELL.S.HIS
@ -307,18 +434,21 @@ CS.END
*-------------------------------------- *--------------------------------------
ENV.PATH >PSTRING "PATH" ENV.PATH >PSTRING "PATH"
CMDS >PSTRING "CD" CMDS >PSTRING "CD"
>PSTRING "SET"
>PSTRING "DATE" >PSTRING "DATE"
>PSTRING "TIME"
>PSTRING "ECHO" >PSTRING "ECHO"
>PSTRING "TYPE"
>PSTRING "EXIT" >PSTRING "EXIT"
>PSTRING "PAUSE"
>PSTRING "READ"
>PSTRING "SET"
>PSTRING "TIME"
>PSTRING "TYPE"
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
LIBSTR >PSTRING "libstr.o" LIBSTR >PSTRING "libstr.o"
MSG.GREETINGS >CSTRING "\nA2osX-Shell on Dev=(%h:%h),PS=%h\n\n" MSG.GREETINGS >PSTRING "\nA2osX-Shell on Dev=%h\n\n"
MSG.UNKNOWN >CSTRING "Command Not Found\n" MSG.ERROR >PSTRING "[%h]\n"
MSG.SYNERR >CSTRING "Syntax Error Or Invalid Pathname\n" *MSG.NOTFOUND >CSTRING "Command Not Found\n"
*MSG.SYNERR >CSTRING "Syntax Error Or Invalid Pathname\n"
hLIBSTR .BS 1 hLIBSTR .BS 1
hNEWPATH .BS 1 hNEWPATH .BS 1
hExecCmd .BS 1 hExecCmd .BS 1
@ -333,10 +463,16 @@ ExecCmdIdx .BS 1
.OR 0 .OR 0
DS.START DS.START
CmdBuffer .BS CmdBuffer.MAX+1 CmdBuffer .BS CmdBuffer.MAX+1
bEXIT .BS 1 bPause .BS 1
bExit .BS 1
bEchoOff .BS 1
hCmdLine .BS 1 hCmdLine .BS 1
hCmdHistory .BS 1 hCmdHistory .BS 1
CmdHistory.IDX .BS 1 CmdHistory.IDX .BS 1
bExitOnEOF .BS 1
hInputFile .BS 1
hInputArgs .BS 1
hInputBuffer .BS 1
CmdHistory.END .BS 1 CmdHistory.END .BS 1
DS.END DS.END
.ED .ED

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
ZPFrameBase1 .EQ ZPBIN ZPFrameBase1 .EQ ZPBIN
@ -20,6 +18,8 @@ ZPFramePtr1 .EQ ZPBIN+4
ZPFrameBase2 .EQ ZPBIN+6 ZPFrameBase2 .EQ ZPBIN+6
ZPFrameLen2 .EQ ZPBIN+8 ZPFrameLen2 .EQ ZPBIN+8
ZPFramePtr2 .EQ ZPBIN+10 ZPFramePtr2 .EQ ZPBIN+10
ZPIPCfgPtr .EQ ZPBIN+12
ZPIPDevPtr .EQ ZPBIN+14
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -40,16 +40,26 @@ CS.START cld
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP L.LIBTCPIP .DA LIBTCPIP
L.MSG.HELP .DA MSG.HELP
L.CFGFILENAME .DA CFGFILENAME L.CFGFILENAME .DA CFGFILENAME
L.IPCFG .DA IPCFG L.IPCFG .DA IPCFG
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBTCPIP CS.INIT >LDYA L.LIBTCPIP
>LOADLIBYA >SYSCALL SYS.LoadLibYA
bcs .99 bcs .99
sta hLIBTCPIP 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 .1 stz IPCFG,x
inx inx
cpx #S.IPCFG cpx #S.IPCFG
@ -103,14 +113,16 @@ CS.INIT.DEV ldy #S.PS.hARGS
ldx #DEVMGR.OPEN ldx #DEVMGR.OPEN
jsr pDevJmp jsr pDevJmp
bcs .98
ldx #DEVMGR.GETINFO ldx #DEVMGR.GETINFO
jsr pDevJmp jsr pDevJmp
>STYA ZPQuickPtr1 bcs .98
>STYA ZPIPDevPtr
ldy #1 ldy #1
ldx #S.IPCFG.MAC ldx #S.IPCFG.MAC
.1 lda (ZPQuickPtr1),y .1 lda (ZPIPDevPtr),y
sta IPCFG,x sta IPCFG,x
iny iny
inx inx
@ -138,7 +150,7 @@ CS.INIT.CFGFILE >LDYA L.CFGFILENAME
>STYA hCfgFileLen >STYA hCfgFileLen
txa txa
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPIPCfgPtr
@ -431,11 +443,11 @@ DNSListener ldy #S.DNS.F+1
rts rts
*-------------------------------------- *--------------------------------------
GetIPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG GetIPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
>STYA ZPQuickPtr1 >STYA ZPIPCfgPtr
ldy #S.IPCFG ldy #S.IPCFG
.1 dey .1 dey
lda (ZPQuickPtr1),y lda (ZPIPCfgPtr),y
sta IPCFG,y sta IPCFG,y
tya tya
bne .1 bne .1
@ -492,11 +504,11 @@ CopyFramePtr12 dey
bne CopyFramePtr12 bne CopyFramePtr12
rts rts
*-------------------------------------- *--------------------------------------
pDevJmp jmp (pDev)
CS.END CS.END
*-------------------------------------- *--------------------------------------
LIBTCPIP >PSTRING "libtcpip.o" 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" DefaultHostName >CSTRING "a2osx-host"
hLIBTCPIP .BS 1 hLIBTCPIP .BS 1
hDEVNAME .BS 1 hDEVNAME .BS 1

View File

@ -10,8 +10,6 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/LIBTCPIP.I .INB INC/LIBTCPIP.I
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -36,7 +34,7 @@ L.LIBTCPIP .DA LIBTCPIP
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBTCPIP CS.INIT >LDYA L.LIBTCPIP
>LOADLIBYA >SYSCALL SYS.LoadLibYA
bcs .99 bcs .99
sta hLIBTCPIP sta hLIBTCPIP

View File

@ -14,6 +14,7 @@ AUTO 6
* X = hMem of Code Segment * X = hMem of Code Segment
*-------------------------------------- *--------------------------------------
S.LoadBinA sta S.LoadBinA.hFilename save file path S.LoadBinA sta S.LoadBinA.hFilename save file path
jsr S.GetMemPtrA jsr S.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPQuickPtr1
@ -21,12 +22,11 @@ S.LoadBinA sta S.LoadBinA.hFilename save file path
tay tay
.1 lda (ZPQuickPtr1),y convert to UPPERCASE .1 lda (ZPQuickPtr1),y convert to UPPERCASE
cmp #$61 "a" cmp #'a'
bmi .2 bmi .2
cmp #$7B "z"+1 cmp #'z'+1
bpl .2 bpl .2
sec eor #$20
sbc #$20
sta (ZPQuickPtr1),y sta (ZPQuickPtr1),y
.2 dey .2 dey
bne .1 bne .1

201
SYS/KERNEL.S.CIO.txt Normal file
View 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

View File

@ -179,6 +179,7 @@ DevMgr.DevID .BS 1
DevMgr.LastDevID .BS 1 DevMgr.LastDevID .BS 1
*-------------------------------------- *--------------------------------------
DevMgr.Count .EQ 2 DevMgr.Count .EQ 2
DevMgr.SYS.BASL0 .EQ $800
*-------------------------------------- *--------------------------------------
DevMgr.NUL cld DevMgr.NUL cld
jmp (DevMgr.NUL.Code,x) jmp (DevMgr.NUL.Code,x)
@ -188,7 +189,7 @@ DevMgr.NUL cld
.HS 00.00 .HS 00.00
.HS 00.00.00.00 .HS 00.00.00.00
*-------------------------------------- *--------------------------------------
DevMgr.SYS cld #S.DEV.F.EVENT DevMgr.SYS cld
jmp (DevMgr.SYS.Code,x) 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 .DA #S.DEV.F.INUSE+S.DEV.F.EVENT+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR
>PSTRING "SYS" NAME >PSTRING "SYS" NAME
@ -205,21 +206,59 @@ DevMgr.NUL.Code .DA .8 OPEN
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Code .DA .8 OPEN DevMgr.SYS.Code .DA DevMgr.SYS.Open
.DA DevMgr.SYS.GetEvent .DA DevMgr.SYS.GetEvent
.DA .8 COUT .DA DevMgr.SYS.COut
.DA .8 CLOSE .DA .8 CLOSE
.DA .8 GETINFO .DA .8 GETINFO
.DA .8 IRQ .DA .8 IRQ
.8 clc .8 clc
rts 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 DevMgr.SYS.GetEvent
lda A2osX.ASCREEN lda A2osX.ASCREEN
and #A2osX.SCREENS.S is screen active? and #A2osX.SCREENS.S is screen active?
beq .9 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 bcs .9
rts rts
@ -227,6 +266,163 @@ DevMgr.SYS.GetEvent
sec sec
rts 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 * DevMgr.End .EQ *
MAN MAN
SAVE SYS/KERNEL.S.DEV SAVE SYS/KERNEL.S.DEV

View File

@ -13,9 +13,6 @@ AUTO 6
* none * none
*-------------------------------------- *--------------------------------------
S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
>LDYAI MSG.DRVLOAD
jsr S.SysScrPPSTRYA
>PUSHBI $20 Push SEP=' ' >PUSHBI $20 Push SEP=' '
>PUSHBI 0 Push 0 for getting CMD And ARGS >PUSHBI 0 Push 0 for getting CMD And ARGS
jsr S.PStrGetTkn jsr S.PStrGetTkn
@ -24,17 +21,24 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
.1 sta LoadDrv.Cmd .1 sta LoadDrv.Cmd
stx LoadDrv.Args stx LoadDrv.Args
pha
jsr S.SysScrPPSTRA >LDYAI ENV.DRV push ENVNAME=DRV
pla jsr S.GetEnvVarYA get value for ENV=$DRV
jsr S.ExpandPStrA bcs .98
sta LoadDrv.ExpCmd 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 jsr S.LoadBinA
bcs .96 bcs .96
>STYA pCode >STYA pCode
stx LoadDrv.hMem stx LoadDrv.hMem
lda LoadDrv.Args lda LoadDrv.Args
jsr pCodeJmp call Dev.Detect jsr pCodeJmp call Dev.Detect
@ -58,7 +62,12 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
pla pla
.96 pha .96 pha
lda LoadDrv.ExpCmd lda LoadDrv.FullName
jsr S.FreeMemA
pla
.97 pha
lda LoadDrv.Path
jsr S.FreeMemA jsr S.FreeMemA
pla pla
@ -72,10 +81,10 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
.99 sec .99 sec
rts rts
*-------------------------------------- *--------------------------------------
MSG.DRVLOAD >PSTRING "\nLoadDrv:"
LoadDrv.Cmd .BS 1 LoadDrv.Cmd .BS 1
LoadDrv.Args .BS 1 LoadDrv.Args .BS 1
LoadDrv.ExpCmd .BS 1 LoadDrv.Path .BS 1
LoadDrv.FullName .BS 1
LoadDrv.hMem .BS 1 LoadDrv.hMem .BS 1
*-------------------------------------- *--------------------------------------
* pCode = .DRV File Loaded Address * pCode = .DRV File Loaded Address

View File

@ -13,86 +13,133 @@ AUTO 6
* A = hMem to Expanded String (PSTRING) * A = hMem to Expanded String (PSTRING)
*-------------------------------------- *--------------------------------------
S.ExpandPStrA jsr S.GetMemPtrA S.ExpandPStrA jsr S.GetMemPtrA
S.ExpandPStrYA >STYA R.AX S.ExpandPStrYA >STYA ZPQuickPtr3
stz TmpBuffer256 init Expanded String len=0 stz TmpBuffer256 init Expanded String len=0
stz R.BL reset "in var"
ldy #0 ldy #0
.1 iny
lda (R.AX),y .10 stz S.ExpandPStrA.Start
cmp #'%'
beq .10 .1 tya
jmp .7 cmp (ZPQuickPtr3) End of PSTR?
.10 ldx R.BL in var? beq .6
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
iny iny
.3 inc R.CL lda (ZPQuickPtr3),y
bne .4
inc R.CH ldx S.ExpandPStrA.Start
.4 lda (R.AX),y Copy string between % to ENVNAME bne .3 already in a var?
sta (R.CX)
iny cmp #'$' no, found one ?
cpy R.BH beq .2
bne .3
pla inc TmpBuffer256 no, copy char
pha Get back ENVNAME hMem ldx TmpBuffer256
>PUSHA 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 ldy #S.PS.hENV
lda (pPs),y lda (pPs),y
>PUSHA
jsr S.GetEnvVarH
bcs .5
pha save hMem of VALUE
jsr S.GetMemPtrA 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 ldy #0
.41 iny .2 iny
lda (R.DX),y lda (ZPQuickPtr1),y
cmp #'='
bne .2
.3 iny
lda (ZPQuickPtr1),y
inc TmpBuffer256 inc TmpBuffer256
ldx TmpBuffer256 ldx TmpBuffer256
sta TmpBuffer256,x sta TmpBuffer256,x
tya tya
cmp (R.DX) cmp (ZPQuickPtr1) last char?
bne .41 bne .3
pla .9 rts
jsr S.FreeMemA discard VALUE hMem *--------------------------------------
.5 pla S.ExpandPStrA.VC
jsr S.FreeMemA discard VARNAME hMem cmp #'0'
* ldy R.BL TODO:continue scanning from first % found bcc .9
stz R.BL reset "in var" cmp #'9'+1
ply bcc .8
bra .8
.7 ldx R.BL in var? cmp #'A'
bne .8 yes, skip this char bcc .9
inc TmpBuffer256 cmp #'Z'+1
ldx TmpBuffer256 bcc .8
sta TmpBuffer256,x
.8 tya cmp #'_'
cmp (R.AX) last char? bne .9
beq .81
jmp .1 .8 clc
.81 >LDYAI TmpBuffer256
jsr S.NewPStrYA
rts rts
.9 sec
rts
*--------------------------------------
S.ExpandPStrA.Start .BS 1
S.ExpandPStrA.End .BS 1
*-------------------------------------- *--------------------------------------
* S.CreateEnv * S.CreateEnv
* in : * in :
@ -140,22 +187,21 @@ S.DupEnvA pha
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
* S.GetEnvVarH * S.GetEnvVarA
* In: * In:
* PULLB = hENV * A = hMem to NAME (PSTRING)
* PULLB = hMem to NAME (PSTRING)
*-------------------------------------- *--------------------------------------
* S.GetEnvVarP * S.GetEnvVarYA
* In: * In:
* PULLB = hENV * Y,A = PTR to NAME (PSTRING)
* PULLW = PTR to NAME (PSTRING)
* Out: * Out:
* A = hMem to VALUE (PSTRING) 0,"" if not exist * A = hMem to VALUE (PSTRING) 0,"" if not exist
*-------------------------------------- *--------------------------------------
S.GetEnvVarH jsr S.FindVarH S.GetEnvVarA >PULLA
bra S.GetEnvVar jsr S.GetMemPtrA
S.GetEnvVarP jsr S.FindVarP S.GetEnvVarYA >STYA ZPQuickPtr2
S.GetEnvVar bcc .1 jsr S.FindVar
bcc .1
>LDYAI 1 not found >LDYAI 1 not found
>PUSHYA create "" PSTR >PUSHYA create "" PSTR
>PUSHBI 0 >PUSHBI 0
@ -200,29 +246,25 @@ S.GetEnvVar bcc .1
*-------------------------------------- *--------------------------------------
* S.SetEnvVarH * S.SetEnvVarH
* In: * In:
* PULLB = hENV
* PULLB = hMem To Name (PSTRING) * PULLB = hMem To Name (PSTRING)
* PULLB = hMem To Value (PSTRING) * PULLB = hMem To Value (PSTRING)
*-------------------------------------- *--------------------------------------
* S.SetEnvVarP * S.SetEnvVarP
* In: * In:
* PULLB = hENV
* PULLW = PTR To Name (PSTRING) * PULLW = PTR To Name (PSTRING)
* PULLW = PTR To Value (PSTRING) * PULLW = PTR To Value (PSTRING)
* Out: * Out:
*-------------------------------------- *--------------------------------------
S.SetEnvVarH jsr S.FindVarH S.SetEnvVarH >PULLA
php jsr S.GetMemPtrA
>STYA ZPQuickPtr2
>PULLA >PULLA
jsr S.GetMemPtrA jsr S.GetMemPtrA
>STYA ZPQuickPtr3 ZPQuickPtr3 = VALUE
bra S.SetEnvVar bra S.SetEnvVar
S.SetEnvVarP >PULLW ZPQuickPtr2
S.SetEnvVarP jsr S.FindVarP >PULLYA
php S.SetEnvVar >STYA ZPQuickPtr3 ZPQuickPtr3 = VALUE
>PULLW ZPQuickPtr3 ZPQuickPtr3 = VALUE jsr S.FindVar
S.SetEnvVar plp
bcs .3 Not Found,ZPQuickPtr1 -> End Of Env bcs .3 Not Found,ZPQuickPtr1 -> End Of Env
lda (ZPQuickPtr1) Found, Discard current NAME definition lda (ZPQuickPtr1) Found, Discard current NAME definition
sec sec
@ -304,22 +346,20 @@ S.SetEnvVar plp
sec sec
rts rts
*-------------------------------------- *--------------------------------------
* S.DelEnvVarH * S.DelEnvVarA
* In: * In:
* PULLB = hENV
* PULLB = hMem To Name (PSTRING) * PULLB = hMem To Name (PSTRING)
*-------------------------------------- *--------------------------------------
* S.DelEnvVarP * S.DelEnvVarYA
* In: * In:
* PULLB = hENV
* PULLW = PTR To Name (PSTRING) * PULLW = PTR To Name (PSTRING)
* Out: * Out:
*-------------------------------------- *--------------------------------------
S.DelEnvVarH jsr S.FindVarH S.DelEnvVarA >PULLA get NAME
bra S.DelEnvVar jsr S.GetMemPtrA
S.DelEnvVarP jsr S.FindVarP S.DelEnvVarYA >STYA ZPQuickPtr2 Store VAR Name
S.DelEnvVar jsr S.FindVar
S.DelEnvVar bcs .8 not found, quit bcs .8 not found, quit
lda (ZPQuickPtr1) Found, Discard current NAME definition lda (ZPQuickPtr1) Found, Discard current NAME definition
sec sec
@ -346,15 +386,9 @@ S.DelEnvVar bcs .8 not found, quit
*-------------------------------------- *--------------------------------------
* PRIVATE * PRIVATE
*-------------------------------------- *--------------------------------------
* S.FindVarH * S.FindVar
* In: * In:
* PULLB = hENV * ZPQuickPtr2 -> NAME
* PULLB = hMem to NAME (PSTRING)
*--------------------------------------
* S.FindVarP
* In:
* PULLB = hENV
* PULLW = PTR to NAME (PSTRING)
*-------------------------------------- *--------------------------------------
* Out: * Out:
* CC: Found * CC: Found
@ -364,20 +398,11 @@ S.DelEnvVar bcs .8 not found, quit
* ZPQuickPtr1 -> PTR to Ending 0 * ZPQuickPtr1 -> PTR to Ending 0
* ZPQuickPtr2 -> NAME * ZPQuickPtr2 -> NAME
*-------------------------------------- *--------------------------------------
S.FindVarH >PULLA get ENV S.FindVar ldy #S.PS.hENV
lda (pPs),y
jsr S.GetMemPtrA jsr S.GetMemPtrA
>STYA ZPQuickPtr1 Store ENV >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) .1 lda (ZPQuickPtr1)
beq .9 beq .9
ldy #0 ldy #0

View File

@ -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

View File

@ -47,50 +47,59 @@ S.FileSearch >PULLA Get Search path
sec sec
rts rts
.10 sta R.BL Store Expanded path list to search .10 sta S.FileSearch.hSrch Store Expanded path list to search
>PULLB R.AH Store Filename
>PULLB S.FileSearch.hFile Store Filename
lda #1 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 .1 >PUSHB S.FileSearch.hSrch push expanded path list
>PUSHBI $3B Push SEP=';' >PUSHBI $3B Push SEP=';'
>PUSHB R.BH Push Token IDX >PUSHB S.FileSearch.Idx Push Token IDX
jsr S.PStrGetTkn Get R.BL token in A jsr S.PStrGetTkn Get token in A
bcs .98 bcs .98
sta R.CL Store Token path sta S.FileSearch.hPath Store Token path
>PUSHB R.AH push filename >PUSHB S.FileSearch.hFile push filename
>PUSHB R.CL Push Token path >PUSHB S.FileSearch.hPath Push Token path
jsr S.PStrCat jsr S.PStrCat
bcs .97 bcs .97
sta R.CH Store Full path (Token Path+filename) sta S.FileSearch.hFull Store Full path (Token Path+filename)
jsr S.MLIGetFileInfoA jsr S.MLIGetFileInfoA
bcc .8 bcc .8
lda R.CH Discard this Full Path lda S.FileSearch.hFull Discard this Full Path
jsr S.FreeMemA jsr S.FreeMemA
lda R.CL Discard Token path lda S.FileSearch.hPath Discard Token path
jsr S.FreeMemA jsr S.FreeMemA
inc R.BH Try next Token
inc S.FileSearch.Idx Try next Token
bne .1 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 jsr S.FreeMemA
.98 lda R.BL Discard Expanded Path list .98 lda S.FileSearch.hSrch Discard Expanded hSrch list
jsr S.FreeMemA jsr S.FreeMemA
lda #SYSMGR.ERRFNF lda #SYSMGR.ERRFNF
sec sec
rts rts
.8 jsr .97 Dicard all except Full Path .8 jsr .97 Dicard all except Full Path
lda R.CH lda S.FileSearch.hFull
clc clc
rts 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 * S.LoadFileA
* in : * in :
* A = hMem of FilePath (PSTRING) * A = hMem of FilePath (PSTRING)
@ -100,7 +109,9 @@ S.FileSearch >PULLA Get Search path
*-------------------------------------- *--------------------------------------
S.LoadFileA jsr S.MLIOpenA S.LoadFileA jsr S.MLIOpenA
bcc S.LoadFile bcc S.LoadFile
S.LoadFile.RTS rts
S.LoadFile.RTS rts
S.LoadFileYA jsr S.MLIOpenYA S.LoadFileYA jsr S.MLIOpenYA
bcs S.LoadFile.RTS bcs S.LoadFile.RTS
@ -592,6 +603,6 @@ S.ListDirReadBlock
TmpFileName .BS 16 TmpFileName .BS 16
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE SYS/KERNEL.S.FS SAVE SYS/KERNEL.S.FIO
LOAD SYS/KERNEL.S LOAD SYS/KERNEL.S
ASM ASM

View File

@ -19,13 +19,13 @@ S.LoadLibYA jsr S.NewPStrYA
jsr S.LoadLibA jsr S.LoadLibA
php save error status php save error status
pha save error code/hMem pha save error code/hMem
lda S.LoadLibYA.hLibName lda S.LoadLibYA.hLibName
jsr S.FreeMemA discard STR hMem jsr S.FreeMemA discard STR hMem
pla get back error code/hMem pla get back error code/hMem
plp ..and error status plp ..and error status
.99 rts .99 rts
*--------------------------------------
S.LoadLibYA.hLibName .BS 1 S.LoadLibYA.hLibName .BS 1
*-------------------------------------- *--------------------------------------
* S.LoadLibA * S.LoadLibA
@ -34,26 +34,22 @@ S.LoadLibYA.hLibName .BS 1
* out : * out :
* A = hMem of Loaded Lib * A = hMem of Loaded Lib
*-------------------------------------- *--------------------------------------
S.LoadLibA >PUSHA push libname for S.FileSearch S.LoadLibA sta S.LoadLibA.hName push libname for S.FileSearch
>LDYAI MSG.LOADLIB >LDYAI ENV.LIB push ENVNAME=LIB
jsr S.SysScrPPSTRYA jsr S.GetEnvVarYA get value for ENV=LIB
>PUSHWI ENV.LIB push ENVNAME=LIB
ldy #S.PS.hENV
lda (pPs),y
>PUSHA
jsr S.GetEnvVarP get value for ENV=LIB
bcs .99 bcs .99
pha save hMem to LIB VALUE
>PUSHA Push %LIB% VALUE sta S.LoadLibA.hSrch save hMem to LIB VALUE
jsr S.FileSearch find libname in %LIB%
>PUSHB S.LoadLibA.hName
>PUSHB S.LoadLibA.hSrch
jsr S.FileSearch find libname in $LIB
bcs .98 bcs .98
pha save hMem to LIB full path
jsr S.SysScrPPSTRA sta S.LoadLibA.hPath
pla
pha
jsr S.LoadBinA A = hMem of filename full path jsr S.LoadBinA A = hMem of filename full path
bcs .97 bcs .97
phx stx S.LoadLibA.hMem
>STYA pLib >STYA pLib
ldx #LIBMGR.LOAD ldx #LIBMGR.LOAD
@ -61,22 +57,25 @@ S.LoadLibA >PUSHA push libname for S.FileSearch
bcs .97 bcs .97
plx jsr .97
pla discard LIB PATH
jsr S.FreeMemA lda S.LoadLibA.hMem
pla discard LIB VALUE
jsr S.FreeMemA
txa
clc clc
rts rts
.97 pla discard LIB PATH .97 lda S.LoadLibA.hPath discard LIB PATH
jsr S.FreeMemA jsr S.FreeMemA
.98 pla discard LIB VALUE
jsr S.FreeMemA .98 lda S.LoadLibA.hSrch discard LIB VALUE
jsr S.FreeMemA
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
S.LoadLibA.hName .BS 1
S.LoadLibA.hSrch .BS 1
S.LoadLibA.hPath .BS 1
S.LoadLibA.hMem .BS 1
*--------------------------------------
* S.UnloadLibA * S.UnloadLibA
* in : * in :
* A = hMem To Lib * A = hMem To Lib
@ -107,8 +106,6 @@ S.UnloadLibA pha
pla pla
jmp S.FreeMemA jmp S.FreeMemA
*-------------------------------------- *--------------------------------------
MSG.LOADLIB >PSTRING "\nLoadLib:"
*--------------------------------------
MAN MAN
SAVE SYS/KERNEL.S.LIB SAVE SYS/KERNEL.S.LIB
LOAD SYS/KERNEL.S LOAD SYS/KERNEL.S

View File

@ -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

View File

@ -12,35 +12,31 @@ S.TskMgrInit stz TSKMGR.LASTID
lda #1 lda #1
sta TSKMGR.SIZE One Slot Busy (Kernel PS=0) sta TSKMGR.SIZE One Slot Busy (Kernel PS=0)
>LDYAI TskMgr.Table Make PS #0 as current process >LDYAI TskMgr.Table Clear whole process table
>STYA pPs >STYA ZPQuickPtr1
ldx #K.PS.MAX ldx #K.PS.MAX
.1 lda #0 .1 lda #0
ldy #S.PS.SIZE-1 ldy #S.PS.SIZE-1
.2 sta (pPs),y .2 sta (ZPQuickPtr1),y
dey dey
bpl .2 bpl .2
lda pPs lda ZPQuickPtr1
clc clc
adc #S.PS.SIZE adc #S.PS.SIZE
sta pPs sta ZPQuickPtr1
bcc .3 bcc .3
inc pPs+1 inc ZPQuickPtr1+1
.3 dex .3 dex
bne .1 bne .1
>LDYAI TskMgr.Table Make PS #0 as current process lda #1
>STYA pPs
lda #0
ldy #S.PS.hINDEV ldy #S.PS.hINDEV
sta TskMgr.Table,y Make In DEV = NUL sta TskMgr.Table,y Make In DEV = SYS
inc
ldy #S.PS.hOUTDEV ldy #S.PS.hOUTDEV
sta TskMgr.Table,y Make OUT DEV = SYS sta TskMgr.Table,y Make OUT DEV = SYS
ldy #S.PS.hERRDEV ldy #S.PS.hERRDEV
@ -62,16 +58,33 @@ S.TskMgrInit stz TSKMGR.LASTID
ldy #S.PS.hPREFIX ldy #S.PS.hPREFIX
sta TskMgr.Table,y sta TskMgr.Table,y
S.TskMgrInit.Env
>PUSHWI TmpBuffer256 push ENV value >PUSHWI TmpBuffer256 push ENV value
>PUSHWI ENV.A2osX push ENV name >PUSHWI ENV.A2osX push ENV name
ldy #S.PS.hENV
lda TskMgr.Table,y
>PUSHA
jsr S.SetEnvVarP 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 .9 rts
rts
*-------------------------------------- *--------------------------------------
* S.TskMgrRun * S.TskMgrRun
*-------------------------------------- *--------------------------------------
@ -209,16 +222,20 @@ S.TskMgrQuit clc
*-------------------------------------- *--------------------------------------
* PUBLIC * PUBLIC
*-------------------------------------- *--------------------------------------
* S.ExecProcessA (Blocking Parent PID) * S.ExecProcessNewEnvYA
* S.ExecProcessYA (Blocking Parent PID)
* S.CreateProcessNewEnvYA
* S.CreateProcessYA (Non Blocking)
* in : * in :
* A = hMem To Cmd Line * A = hMem To Cmd Line
* Y = hMem To Args
* out : * out :
* A = Child PSID * A = Child PSID
*-------------------------------------- *--------------------------------------
S.ExecProcessNewEnvA S.ExecProcessNewEnvYA
ldy #S.PS.F.ENV ldx #S.PS.F.ENV
bra S.ExecProcess .HS 2C bit abs
S.ExecProcessA ldy #0 S.ExecProcessYA ldx #0
S.ExecProcess jsr S.CreateProcess S.ExecProcess jsr S.CreateProcess
bcs .9 terminated, do not set PID as HOLD bcs .9 terminated, do not set PID as HOLD
@ -233,31 +250,36 @@ S.ExecProcess jsr S.CreateProcess
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
* S.CreateProcessA (Non Blocking) S.CreateProcessNewEnvYA
* in : ldx #S.PS.F.ENV
* A = hMem To Full Cmd Line .HS 2C bit abs
* out : S.CreateProcessYA
* A = Child PSID ldx #0
*-------------------------------------- S.CreateProcess stx S.CreateChildProcess.Flags
S.CreateProcessNewEnvA
ldy #S.PS.F.ENV
bra S.CreateProcess
S.CreateProcessA
ldy #0
S.CreateProcess sty S.CreateChildProcess.Flags
sta S.CreateProcessA.Cmd sta S.CreateProcessA.Cmd
>LDYAI MSG.NEWPS sty S.CreateProcessA.Args
jsr S.SysScrPPSTRYA
* 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 jsr S.CreateChildProcess
bcs .99 bcs .99
sta S.CreateProcessA.CPSID sta S.CreateProcessA.CPSID
jsr S.SelectProcessA jsr S.SelectProcessA
lda S.CreateProcessA.Cmd jsr S.InitProcess
jsr S.InitProcessA
bcs .98 Init Failed or exit? bcs .98 Init Failed or exit?
ldy #S.PS.PID switch back to Parent Process ldy #S.PS.PID switch back to Parent Process
@ -284,6 +306,7 @@ S.CreateProcess sty S.CreateChildProcess.Flags
rts rts
*-------------------------------------- *--------------------------------------
S.CreateProcessA.Cmd .BS 1 S.CreateProcessA.Cmd .BS 1
S.CreateProcessA.Args .BS 1
S.CreateProcessA.CPSID .BS 1 S.CreateProcessA.CPSID .BS 1
*-------------------------------------- *--------------------------------------
* S.GetPSByIDA * S.GetPSByIDA
@ -469,62 +492,24 @@ S.CreateChildProcess
S.CreateChildProcess.Flags S.CreateChildProcess.Flags
.BS 1 .BS 1
*-------------------------------------- *--------------------------------------
* S.InitProcessA * S.InitProcess
* In : * In :
* A = hMem To Full Cmd Line * A = hMem To Full Cmd Line
*-------------------------------------- *--------------------------------------
S.InitProcessA stz S.InitProcessA.hPath S.InitProcess lda S.CreateProcessA.Args
stz S.InitProcessA.hFullPath beq .1
>PUSHA Push Cmd Line jsr S.ExpandPStrA
>PUSHBI $20 Push SEP=' ' .1 ldy #S.PS.hARGS
>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
sta (pPs),y set ARGS hMem (0 if none) 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 ldy #S.PS.hCMD
sta (pPs),y sta (pPs),y
pha
jsr S.SysScrPPSTRA
pla
jsr S.LoadBinA A = BinPath hMem jsr S.LoadBinA A = BinPath hMem
bcs S.InitProcessA.ClnUp bcs .99
>STYA pCode save PTR to Code Segment >STYA pCode save PTR to Code Segment
txa txa
@ -537,48 +522,38 @@ S.InitProcessA stz S.InitProcessA.hPath
dey dey
ora (pCode),y ora (pCode),y
beq .1 DS.SIZE=0... beq .2 DS.SIZE=0...
lda (pCode),y lda (pCode),y
>PUSHAX Push DS.SIZE >PUSHAX Push DS.SIZE
>PUSHBI S.MEM.F.INIT0 Clear DS >PUSHBI S.MEM.F.INIT0 Clear DS
jsr S.GetMem jsr S.GetMem
bcs S.InitProcessA.ClnUp bcs .99
>STYA pData >STYA pData
txa txa
ldy #S.PS.hDS ldy #S.PS.hDS
sta (pPs),y save DS hMem in TSKSLOT sta (pPs),y save DS hMem in TSKSLOT
.1 ldx #TSKMGR.INIT .2 ldx #TSKMGR.INIT
jsr pCodeJmp Call INIT function jsr pCodeJmp Call INIT function
S.InitProcessA.ClnUp .99 rts
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
*-------------------------------------- *--------------------------------------
* S.SelectProcessA * S.SelectProcessA
* In : A=PSID * In : A=PSID
*-------------------------------------- *--------------------------------------
S.SelectProcessA 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 jsr S.GetPSByIDA
bcs * bcs *
>STYA pPS >STYA pPs
S.SelectProcess ldy #S.PS.hCS S.SelectProcess ldy #S.PS.hCS
lda (pPs),y lda (pPs),y
@ -587,12 +562,13 @@ S.SelectProcess ldy #S.PS.hCS
ldy #S.PS.hDS ldy #S.PS.hDS
lda (pPs),y lda (pPs),y
beq .1 beq S.SelectProcessDev
jsr S.GetMemPtrA jsr S.GetMemPtrA
>STYA pData >STYA pData
.1 ldy #S.PS.hOUTDEV S.SelectProcessDev
ldy #S.PS.hOUTDEV
lda (pPs),y lda (pPs),y
beq .8 beq .8
@ -658,7 +634,6 @@ TSKMGR.SIZE .BS 1
TSKMGR.COUNT .BS 1 TSKMGR.COUNT .BS 1
TSKMGR.LASTID .BS 1 TSKMGR.LASTID .BS 1
*-------------------------------------- *--------------------------------------
MSG.NEWPS >PSTRING "\nTskMgr:"
MAN MAN
SAVE SYS/KERNEL.S.TSK SAVE SYS/KERNEL.S.TSK
LOAD SYS/KERNEL.S LOAD SYS/KERNEL.S

View File

@ -13,6 +13,11 @@ AUTO 6
.INB INC/IO.I .INB INC/IO.I
.INB INC/PRODOS.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 * $D000-D0FF KERNEL.SYSCALL Jmp Table
*-------------------------------------- *--------------------------------------
.DA S.GetMem $00 .DA S.GetMem $00
@ -47,13 +52,13 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.DA S.ExpandPStrA $30 .DA S.ExpandPStrA $30
.DA S.ExpandPStrYA .DA S.ExpandPStrYA
.DA S.GetEnvVarH .DA S.GetEnvVarA
.DA S.GetEnvVarP .DA S.GetEnvVarYA
.DA S.SetEnvVarH .DA S.SetEnvVarH
.DA S.SetEnvVarP .DA S.SetEnvVarP
.DA S.DelEnvVarH .DA S.DelEnvVarA
.DA S.DelEnvVarP .DA S.DelEnvVarYA
*-------------------------------------- *--------------------------------------
.DA S.MLICreateFile $40 .DA S.MLICreateFile $40
.DA S.MLICreateDirA .DA S.MLICreateDirA
@ -105,10 +110,10 @@ AUTO 6
.DA 0 .DA 0
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.DA S.ExecProcessNewEnvA $90 .DA S.ExecProcessNewEnvYA $90
.DA S.ExecProcessA .DA S.ExecProcessYA
.DA S.CreateProcessNewEnvA .DA S.CreateProcessNewEnvYA
.DA S.CreateProcessA .DA S.CreateProcessYA
.DA S.GetPSByIDA .DA S.GetPSByIDA
.DA 0 .DA 0
@ -137,22 +142,22 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.DA S.ScreenSelectA $C0 .DA S.ScreenSelectA $C0
.DA 0 .DA 0
.DA S.SysScrPPSTRA .DA 0
.DA S.SysScrPPSTRYA .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.DA 0 $D0 .DA S.COutA $D0
.DA 0 .DA S.PSTROutA
.DA 0 .DA S.PSTROutYA
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0 .DA 0
.DA S.HexOutA
.DA S.HexOutYA
.DA S.DecOutA
.DA S.DecOutYA
*-------------------------------------- *--------------------------------------
.DA 0 $E0 .DA 0 $E0
.DA 0 .DA 0
@ -185,73 +190,50 @@ Kernel.Init sei
stz A2osX.SCREENS stz A2osX.SCREENS
stz A2osX.ASCREEN 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 >LDYAI MSG.Init
jsr S.SysScrPPSTRYA jsr S.PSTROutYA
>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
>LDYAI MSG.Init.Startup >LDYAI MSG.Init.Startup
jsr S.SysScrPPSTRYA jsr S.PSTROutYA
>LDYAI STARTUP.FILE Build A2osX.STARTUP full path... >LDYAI STARTUP.ARGS Get A2osX.STARTUP full path...
jsr S.NewPStrYA jsr S.NewPStrYA
pha save for discard pha
>LDYAI STARTUP.CMD Get A2osX.STARTUP full path...
>PUSHA jsr S.NewPStrYA
>PUSHWI ENV.A2osX get KRNL root path ply get back ARGS in Y
ldy #S.PS.hENV phy
lda TskMgr.Table,y pha A=CMH, save for discard
>PUSHA >DEBUG
jsr S.GetEnvVarP jsr S.CreateProcessYA
pha save for discard
>PUSHA
jsr S.PStrCat
pha save for discard
jsr S.ExecFileA
jsr S.SysScrPRCode
bcs * bcs *
>DEBUG
pla pla
jsr S.FreeMemA jsr S.FreeMemA
pla pla
jsr S.FreeMemA jsr S.FreeMemA
pla
jsr S.FreeMemA
.99 bcs *
>LDYAI MSG.Init.OK >LDYAI MSG.Init.OK
jsr S.SysScrPPSTRYA jsr S.PSTROutYA
>DEBUG
*-------------------------------------- *--------------------------------------
S.KernelRun jsr S.TskMgrRun S.KernelRun jsr S.TskMgrRun
bcs .98 bcs .98
jsr S.SysScrCPULoad
jsr S.GetEvent jsr S.GetEvent
bcs S.KernelRun CS=no event bcs S.KernelRun CS=no event
@ -264,7 +246,9 @@ S.KernelRun jsr S.TskMgrRun
jsr S.DestroyEvent jsr S.DestroyEvent
bra S.KernelRun bra S.KernelRun
.1 lda (pEvent) .1 jsr S.SelectProcess0
lda (pEvent)
and #S.EVT.F.KEY any special key? and #S.EVT.F.KEY any special key?
beq .99 beq .99
@ -298,16 +282,36 @@ S.KernelRun jsr S.TskMgrRun
.98 lda #A2osX.SCREENS.S .98 lda #A2osX.SCREENS.S
jsr S.ScreenSelectA jsr S.ScreenSelectA
>LDYAI MSG.KRNLPANIC >LDYAI MSG.KRNLPANIC
jsr S.SysScrPPSTRYA jsr S.PSTROutYA
bra * bra *
.99 >LDYAI MSG.EVNTPANIC .99 jsr S.DumpEvent
jsr S.SysScrPPSTRYA
jsr S.DumpEvent
jsr S.DestroyEvent jsr S.DestroyEvent
jmp S.KernelRun 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 * S.ScreenSelectA
* IN : * IN :
* A = Screen to display * A = Screen to display
@ -318,19 +322,19 @@ S.ScreenSelectA and A2osX.SCREENS Screen is available ?
cmp #A2osX.SCREENS.S cmp #A2osX.SCREENS.S
bne .1 bne .1
sta SETTEXT sta SETTEXT
sta SETALTCHAR
sta SET80DISP sta SET80DISP
sta CLR80STORE sta CLR80STORE
sta SETPAGE2 sta SETPAGE2
sta SETALTCHAR
bra .8 bra .8
.1 cmp #A2osX.SCREENS.C .1 cmp #A2osX.SCREENS.C
bne .2 bne .2
sta SETTEXT sta SETTEXT
sta SETALTCHAR
sta SET80DISP sta SET80DISP
sta CLR80STORE sta CLR80STORE
sta CLRPAGE2 sta CLRPAGE2
sta SETALTCHAR
bra .8 bra .8
.2 cmp #A2osX.SCREENS.G .2 cmp #A2osX.SCREENS.G
@ -341,6 +345,7 @@ S.ScreenSelectA and A2osX.SCREENS Screen is available ?
sta SETHIRES sta SETHIRES
sta CLR80STORE sta CLR80STORE
sta CLRPAGE2 sta CLRPAGE2
sta SET80STORE
sta SETIOUDIS sta SETIOUDIS
sta SETDHIRES sta SETDHIRES
@ -355,46 +360,35 @@ S.ScreenSelectA and A2osX.SCREENS Screen is available ?
.8 sta A2osX.ASCREEN .8 sta A2osX.ASCREEN
.9 rts .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 >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.Startup >PSTRING "EXEC A2osX.Startup...\n"
MSG.Init.OK >PSTRING "A2osX[Stage2]:Complete." MSG.Init.OK >PSTRING "A2osX[Stage2]:Complete.\n"
MSG.DumpEvent >PSTRING "\nEVT:F=%h,hDev=%d,DATA=%H,W1=%H,W2=%H"
MSG.EVNTPANIC >PSTRING "\nEVT:F/hDev/DATA/W1/W2="
MSG.KRNLPANIC >PSTRING "\n\n!!!Kernel Panic!!!" 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.A2osX >PSTRING "A2OSX"
ENV.PATH >PSTRING "PATH" ENV.PATH >PSTRING "PATH"
ENV.PATH.VALUE >PSTRING "${A2OSX}SBIN/;${A2OSX}BIN/"
ENV.LIB >PSTRING "LIB" 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.MEM
.INB SYS/KERNEL.S.SCR
.INB SYS/KERNEL.S.STR .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.MLI
.INB SYS/KERNEL.S.BIN .INB SYS/KERNEL.S.BIN
.INB SYS/KERNEL.S.DRV .INB SYS/KERNEL.S.DRV
.INB SYS/KERNEL.S.LIB .INB SYS/KERNEL.S.LIB
.INB SYS/KERNEL.S.NET .INB SYS/KERNEL.S.NET
* .INB SYS/KERNEL.S.RDR
.INB SYS/KERNEL.S.ENV .INB SYS/KERNEL.S.ENV
.INB SYS/KERNEL.S.TSK .INB SYS/KERNEL.S.TSK
.INB SYS/KERNEL.S.EVT .INB SYS/KERNEL.S.EVT
.INB SYS/KERNEL.S.EXE
*-------------------------------------- *--------------------------------------
.INB SYS/KERNEL.S.DEV .INB SYS/KERNEL.S.DEV
*-------------------------------------- *--------------------------------------

View File

@ -1,9 +1,10 @@
PR#3 PR#3
PREFIX /A2OSX.BOOT PREFIX /A2OSX.SRC
NEW NEW
INC 1 INC 1
AUTO 6 AUTO 6
BLOAD A PREFIX /A2OSX.BOOT
BLOAD A2OSX
BSAVE A2OSX.SYSTEM,TSYS,A$2000,L$1300 BSAVE A2OSX.SYSTEM,TSYS,A$2000,L$1300
-A2OSX.SYSTEM -A2OSX.SYSTEM
MAN MAN