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
rts
*--------------------------------------
A2osX.ROMCALL1 bra *
A2osX.ROMCALL1 plx
stx .1+1
plx
stx .1+2
ldx RROMBNK1
jsr .1
ldx RRAMWRAMBNK1
ldx RRAMWRAMBNK1
rts
.1 jmp $FFFF
*--------------------------------------
GO.MAINLC php
clc
bra GO.SAVE.REG
.HS 2C bit abs
GO.AUXLC php
sec
GO.SAVE.REG sta A2osX.SaveA
sta A2osX.SaveA
pla keep P in A for later
stx A2osX.SaveX
sty A2osX.SaveY
@ -79,6 +88,10 @@ GO.SAVE.REG sta A2osX.SaveA
iny
.1 stx GO.EXIT.JMP+1
sty GO.EXIT.JMP+2
ldx RRAMWRAMBNK1
ldx RRAMWRAMBNK1
sei
ldy pStack
bcs GO.AUXLC1
@ -88,7 +101,6 @@ GO.MAINLC1 tsx
ldx A2osX.SaveSM
txs
stx CLRALTZP
ldx RROMBNK1
bra GO.EXIT
*--------------------------------------
GO.AUXLC1 stx SETALTZP
@ -96,8 +108,6 @@ GO.AUXLC1 stx SETALTZP
stx A2osX.SaveSM
ldx A2osX.SaveSX
txs
ldx RRAMWRAMBNK1
ldx RRAMWRAMBNK1
*--------------------------------------
GO.EXIT sty pStack
pha push P on stack
@ -110,39 +120,18 @@ GO.EXIT.JMP jmp $FFFF
GO.Reset jsr GO.AUXLC
jmp KERNEL.COLDBOOT
*--------------------------------------
S.PRBYTE pha
lsr
lsr
lsr
lsr
ora #$30
cmp #$3A
bcc .1
adc #6
.1 jsr S.COUT
pla
and #$0F
ora #$30
cmp #$3A
bcc S.COUT
adc #6
bra S.COUT
*--------------------------------------
S.CROUT lda #13
*--------------------------------------
S.COUT phx
phy
ldx #DEVMGR.COUT
jsr pDevJmp
ply
plx
rts
*--------------------------------------
A2osX.SaveA .BS 1
A2osX.SaveX .BS 1
A2osX.SaveY .BS 1
*--------------------------------------
A2osX.GP.End .EQ *
*--------------------------------------
* CONTROL SECTION :
*--------------------------------------
.DO A2osX.GP.End>$BEBF
ERROR:GP too big
.FIN
*--------------------------------------
A2osX.GP.SIZE .EQ A2osX.GP.END-A2osX.GP.START
.BS A2osX.GP.START+$100-*
.EP

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -10,8 +10,6 @@ AUTO 6
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
.INB INC/IO.I
*--------------------------------------
ZPBASE .EQ ZPDRV
@ -50,7 +48,7 @@ MSG.DETECT >PSTRING "\nApple IIe/IIc DoubleHGR Driver."
*--------------------------------------
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #0
.DA #S.DEV.F.EVENT
>PSTRING "GFX" NAME
.HS 00 NAME must Be 5 bytes long
.HS 00.00
@ -73,7 +71,12 @@ DRV.CS.START .DA OPEN
L.DEVINFO .DA DEVINFO
.DA 0 end or relocation
*--------------------------------------
OPEN sta SETHIRES
OPEN lda #A2osX.SCREENS.G
>SYSCALL SYS.ScreenSelectA
sta SETHIRES
lda RD80STORE
pha
sta SET80STORE prepare for page switching
ldx #192
@ -106,10 +109,25 @@ OPEN sta SETHIRES
txa
bne .81
clc
pla
bmi .84
sta CLR80STORE
.84 clc
rts
*--------------------------------------
GETEVENT
GETEVENT lda A2osX.ASCREEN
and #A2osX.SCREENS.G is screen active?
beq .9
>SYSCALL SYS.GetKeyboardEvent
bcs .9
rts
.9 lda #0 Error = no event
sec
rts
*--------------------------------------
COUT
IRQ sec
rts

View File

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

View File

@ -10,8 +10,6 @@ AUTO 6
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/A2OSX.API.I
.INB INC/KERNEL.I
*--------------------------------------
ZPTmpPTR .EQ ZPDRV
*--------------------------------------
@ -126,11 +124,14 @@ CS.START cld
* Relocation Table
*--------------------------------------
L.MSG.DETECT .DA MSG.DETECT
L.MSG.DETECT.OK .DA MSG.DETECT.OK
L.MSG.DETECT.KO .DA MSG.DETECT.KO
L.DEV.HEADER.NAME .DA DEV.HEADER.NAME
.DA 0 End Of Reloc Table
*--------------------------------------
Dev.Detect sta hArgs
>LDYA L.MSG.DETECT
>SYSCALL SYS.SysScrPPSTRYA
>SYSCALL SYS.PSTROutYA
ldx #$10
.1 stx DEVSLOTx0
@ -150,7 +151,10 @@ Dev.Detect sta hArgs
cpx #$80
bne .1
lda #DEVMGR.ERRNOHW
>LDYA L.MSG.DETECT.KO
>SYSCALL SYS.PSTROutYA
lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
sec
rts
@ -165,7 +169,13 @@ Dev.Detect sta hArgs
sec
rts
.4 clc
.4 >LDYA L.MSG.DETECT.OK
>SYSCALL SYS.PSTROutYA
>LDYA L.DEV.HEADER.NAME
>SYSCALL SYS.PSTROutYA
lda #13
>SYSCALL SYS.COutA
clc
rts
*--------------------------------------
DecodeMac lda (ZPTmpPTR)
@ -221,7 +231,9 @@ Asc2NibbleA cmp #$30
rts
*--------------------------------------
CS.END
MSG.DETECT >PSTRING "\nUtherNet/CS8900A Driver."
MSG.DETECT >PSTRING "UtherNet/CS8900A Driver.\n"
MSG.DETECT.OK >PSTRING "UtherNet/CS8900A Installed As Device : "
MSG.DETECT.KO >PSTRING "Hardware Not Found.\n"
hArgs .BS 1
*--------------------------------------
* Device Header (16 Bytes)

1
ETC/HOSTNAME Normal file
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
DNS=192.168.1.2
DNS=192.168.1.1
HOSTNAME=apple2
DOMAIN=coincoin.hd.free.fr
MAN
TEXT ETC/TCPIP.CONF

View File

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

70
INC/APPLESOFT.I.txt Normal file
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
sta $C010
.EM
*--------------------------------------
.MA DEBUGOA
bit $C061
bpl :2
:1 bit $C000
bpl :1
sta $C010
:2 .EM
*--------------------------------------
* SYSCALLs Macros
*--------------------------------------
@ -101,16 +109,6 @@ AUTO 6
ldx #]2
jsr A2osX.DRVCALL
.EM
*--------------------------------------
.MA LOADLIBYA
ldx #SYS.LoadLibYA
jsr A2osX.SYSCALL
.EM
*--------------------------------------
.MA LOADLIBA
ldx #SYS.LoadLibA
jsr A2osX.SYSCALL
.EM
*--------------------------------------
.MA LIBCALL
ldy ]1
@ -287,9 +285,9 @@ AUTO 6
.EM
*--------------------------------------
.MA PSTRING
.DA #:2-:1
:1 .AS "]1"
:2 .EQ *
.DA #:1-*-1
.AS "]1"
:1 .EQ *
.EM
MAN
SAVE INC/MACROS.I

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

201
SYS/KERNEL.S.CIO.txt Normal file
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.Count .EQ 2
DevMgr.SYS.BASL0 .EQ $800
*--------------------------------------
DevMgr.NUL cld
jmp (DevMgr.NUL.Code,x)
@ -188,7 +189,7 @@ DevMgr.NUL cld
.HS 00.00
.HS 00.00.00.00
*--------------------------------------
DevMgr.SYS cld #S.DEV.F.EVENT
DevMgr.SYS cld
jmp (DevMgr.SYS.Code,x)
.DA #S.DEV.F.INUSE+S.DEV.F.EVENT+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR
>PSTRING "SYS" NAME
@ -205,21 +206,59 @@ DevMgr.NUL.Code .DA .8 OPEN
.8 clc
rts
*--------------------------------------
DevMgr.SYS.Code .DA .8 OPEN
DevMgr.SYS.Code .DA DevMgr.SYS.Open
.DA DevMgr.SYS.GetEvent
.DA .8 COUT
.DA DevMgr.SYS.COut
.DA .8 CLOSE
.DA .8 GETINFO
.DA .8 IRQ
.8 clc
rts
*--------------------------------------
DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI
stz DevMgr.SYS.CH
stz DevMgr.SYS.CV
ldx #0
ldy #0
.1 lda DevMgr.SYS.TITLE,y
beq .2
jsr DevMgr.SYS.SetCharAtYX
iny
bne .1
.2 lda #$20
jsr DevMgr.SYS.SetCharAtYX
iny
cpy #80
bne .2
jsr DevMgr.SYS.Home
lda A2osX.SCREENS
ora #A2osX.SCREENS.S
sta A2osX.SCREENS
lda #A2osX.SCREENS.S
jsr S.ScreenSelectA
clc
rts
*--------------------------------------
DevMgr.SYS.GetEvent
lda A2osX.ASCREEN
and #A2osX.SCREENS.S is screen active?
beq .9
jsr S.GetKeyboardEvent
ldx DevMgr.SYS.CPULOADI
lda DevMgr.SYS.CPULOADC,x
sta DevMgr.SYS.BASL0+38
dec DevMgr.SYS.CPULOADI
bpl .1
lda #3
sta DevMgr.SYS.CPULOADI
.1 jsr S.GetKeyboardEvent
bcs .9
rts
@ -227,6 +266,163 @@ DevMgr.SYS.GetEvent
sec
rts
*--------------------------------------
DevMgr.SYS.COut phx
phy
cmp #13
bne .1
jsr DevMgr.SYS.CROut
ply
plx
clc
rts
.1 ldy DevMgr.SYS.CH
ldx DevMgr.SYS.CV
ora #$80
jsr DevMgr.SYS.SetCharAtYX
jsr DevMgr.SYS.FSOut
ply
plx
clc
rts
*--------------------------------------
DevMgr.SYS.FSOut
lda DevMgr.SYS.CH
cmp #79
beq DevMgr.SYS.CROut1
inc DevMgr.SYS.CH
rts
*--------------------------------------
DevMgr.SYS.CROut
jsr DevMgr.SYS.ClrEOL
DevMgr.SYS.CROut1
stz DevMgr.SYS.CH
ldx DevMgr.SYS.CV
cpx #23
beq DevMgr.SYS.Scroll
inc DevMgr.SYS.CV
rts
*--------------------------------------
DevMgr.SYS.ClrEOL
ldx DevMgr.SYS.CV
lda #$A0
ldy DevMgr.SYS.CH
.1 cpy #79
beq .2
jsr DevMgr.SYS.SetCharAtYX
iny
bne .1
.2 rts
*--------------------------------------
DevMgr.SYS.Scroll
ldx #1
.1 lda DevMgr.SYS.BASEL,x
sta ZPDRV
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
inx
lda DevMgr.SYS.BASEL,x
sta ZPDRV+2
lda DevMgr.SYS.BASEH,x
sta ZPDRV+3
ldy #39
sta SETWRITEAUX
sta SETREADAUX
.2 lda (ZPDRV+2),y
sta (ZPDRV),y
dey
bpl .2
ldy #39
sta CLRWRITEAUX
sta CLRREADAUX
.3 lda (ZPDRV+2),y
sta (ZPDRV),y
dey
bpl .3
cpx #23
bne .1
ldy #39
lda #$A0
.4 sta SETWRITEAUX
sta (ZPDRV+2),y
sta CLRWRITEAUX
sta (ZPDRV+2),y
dey
bpl .4
rts
*--------------------------------------
DevMgr.SYS.ClrLineAtX
lda DevMgr.SYS.BASEL,x
sta ZPDRV
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
lda #$A0
ldy #39
sta SETWRITEAUX
.1 sta (ZPDRV),y
dey
bpl .1
ldy #39
sta CLRWRITEAUX
.2 sta (ZPDRV),y
dey
bpl .2
rts
*--------------------------------------
DevMgr.SYS.Home ldx #23
.1 jsr DevMgr.SYS.ClrLineAtX
dex
bne .1
stz DevMgr.SYS.CH
lda #1
sta DevMgr.SYS.CV
rts
*--------------------------------------
DevMgr.SYS.SetCharAtYX
cmp #$40
bcc .1
cmp #$5F
bcs .1
and #$3F
.1 phy
pha
lda DevMgr.SYS.BASEL,x
sta ZPDRV
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
tya
lsr
tay
bcs .2
sta SETWRITEAUX
.2 pla
sta (ZPDRV),y
sta CLRWRITEAUX
ply
rts
*--------------------------------------
DevMgr.SYS.CH .BS 1
DevMgr.SYS.CV .BS 1
DevMgr.SYS.CPULOADI .BS 1
DevMgr.SYS.CPULOADC .AS -"|/-\"
*--------------------------------------
DevMgr.SYS.TITLE >CSTRING "A2osX System Screen"
DevMgr.SYS.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
DevMgr.SYS.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B
*--------------------------------------*--------------------------------------
DevMgr.End .EQ *
MAN
SAVE SYS/KERNEL.S.DEV

View File

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

View File

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

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

View File

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

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

View File

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

View File

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