mirror of https://github.com/A2osX/A2osX.git
Kernel 0.94+
This commit is contained in:
parent
fdca1edf79
commit
0f9ebec8be
|
@ -81,7 +81,7 @@ X = hDev
|
||||||
|
|
||||||
# GetDevStatus
|
# GetDevStatus
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int getdevstatus(short int DevID, S.DIB *dstat);`
|
`int getdevstatus(short int DevID, S.DIB *dstat);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
|
@ -491,14 +491,11 @@ A = Child PSID
|
||||||
Load TXT a file in memory (with ending 0)
|
Load TXT a file in memory (with ending 0)
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
`int loadtxtfile ( const char * filename );`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
`>PUSHW filename`
|
`>LDYA filename`
|
||||||
`>PUSHB flags`
|
|
||||||
`>PUSHB ftype`
|
|
||||||
`>PUSHW auxtype`
|
|
||||||
`>SYSCALL loadtxtfile`
|
`>SYSCALL loadtxtfile`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
436
BIN/ACC.S.txt
436
BIN/ACC.S.txt
|
@ -1,218 +1,218 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF bin/acc
|
.TF bin/acc
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Zero Page Segment, up to 32 bytes
|
* Zero Page Segment, up to 32 bytes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
ZS.START
|
ZS.START
|
||||||
ZPPtr1 .BS 2 ; address pointer (used in arg parsing)
|
ZPPtr1 .BS 2 ; address pointer (used in arg parsing)
|
||||||
ArgIndex .BS 1 ; index offset for argument parsing
|
ArgIndex .BS 1 ; index offset for argument parsing
|
||||||
bFast .BS 1 ; arg variable - fast mode if = 1
|
bFast .BS 1 ; arg variable - fast mode if = 1
|
||||||
bSlow .BS 1 ; arg variable - slow mode if = 1
|
bSlow .BS 1 ; arg variable - slow mode if = 1
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.DA #$61 ; 6502,Level 1 (65c02)
|
.DA #$61 ; 6502,Level 1 (65c02)
|
||||||
.DA #1 ; BIN Layout Version 1
|
.DA #1 ; BIN Layout Version 1
|
||||||
.DA #0 ; Events disabled (enable with S.PS.F.EVENT)
|
.DA #0 ; Events disabled (enable with S.PS.F.EVENT)
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA CS.END-CS.START ; Code Size (without Constants)
|
.DA CS.END-CS.START ; Code Size (without Constants)
|
||||||
.DA DS.END-DS.START ; Data SegmentSize
|
.DA DS.END-DS.START ; Data SegmentSize
|
||||||
.DA #32 ; Stack Size
|
.DA #32 ; Stack Size
|
||||||
.DA #ZS.END-ZS.START ; Zero Page Size
|
.DA #ZS.END-ZS.START ; Zero Page Size
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Relocation Table
|
* Relocation Table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.MSG.USAGE .DA MSG.USAGE ; msg for usage / help text
|
L.MSG.USAGE .DA MSG.USAGE ; msg for usage / help text
|
||||||
L.MSG.FAST .DA MSG.MSG.FAST ; msg for saying fast mode is enabled
|
L.MSG.FAST .DA MSG.MSG.FAST ; msg for saying fast mode is enabled
|
||||||
L.MSG.SLOW .DA MSG.MSG.SLOW ; msg for saying slow mode is enabled
|
L.MSG.SLOW .DA MSG.MSG.SLOW ; msg for saying slow mode is enabled
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Called once at process creation
|
* Called once at process creation
|
||||||
* Put code for loading LIB here
|
* Put code for loading LIB here
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT clc ; nothing to init, so just clc and return
|
CS.INIT clc ; nothing to init, so just clc and return
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Called until exit with CS
|
* Called until exit with CS
|
||||||
* if RUN exits with CC, RN entered again
|
* if RUN exits with CC, RN entered again
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN
|
CS.RUN
|
||||||
.1 inc ArgIndex ; Check next argument
|
.1 inc ArgIndex ; Check next argument
|
||||||
lda ArgIndex
|
lda ArgIndex
|
||||||
>SYSCALL ArgV ; check for an arg at index in A
|
>SYSCALL ArgV ; check for an arg at index in A
|
||||||
bcs .4 ; If doesn't exist, we're done with args
|
bcs .4 ; If doesn't exist, we're done with args
|
||||||
|
|
||||||
>STYA ZPPtr1 ; ArgV pointer was in Y,A so stick into ZPPtr1
|
>STYA ZPPtr1 ; ArgV pointer was in Y,A so stick into ZPPtr1
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
cmp #'-' ; does arg have a hyphen?
|
cmp #'-' ; does arg have a hyphen?
|
||||||
bne .9 ; no, we're done as we don't use any non-hyphened args
|
bne .9 ; no, we're done as we don't use any non-hyphened args
|
||||||
|
|
||||||
jsr CS.RUN.CheckOpt ; if it had a hyphen, check and set arg if recognized
|
jsr CS.RUN.CheckOpt ; if it had a hyphen, check and set arg if recognized
|
||||||
bcc .1 ; if we recognized the arg, then loop again to check next
|
bcc .1 ; if we recognized the arg, then loop again to check next
|
||||||
|
|
||||||
|
|
||||||
*--- Fast Mode Test -------------------
|
*--- Fast Mode Test -------------------
|
||||||
.4
|
.4
|
||||||
bit bFast ; did they want us to switch to fast mode?
|
bit bFast ; did they want us to switch to fast mode?
|
||||||
bpl .5 ; no, so go check next possibility
|
bpl .5 ; no, so go check next possibility
|
||||||
>PUSHW L.MSG.FAST ; push address for fast mode message
|
>PUSHW L.MSG.FAST ; push address for fast mode message
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF ; print fast mode msg
|
>SYSCALL PrintF ; print fast mode msg
|
||||||
jsr CS.RUN.SetFastMode ; call fast mode routine
|
jsr CS.RUN.SetFastMode ; call fast mode routine
|
||||||
jmp .99 ; jump to successful exit
|
jmp .99 ; jump to successful exit
|
||||||
|
|
||||||
*--- Slow mode test -------------------
|
*--- Slow mode test -------------------
|
||||||
.5
|
.5
|
||||||
bit bSlow ; did they want us to switch to slow mode?
|
bit bSlow ; did they want us to switch to slow mode?
|
||||||
bpl .9 ; no, so go display usage
|
bpl .9 ; no, so go display usage
|
||||||
>PUSHW L.MSG.SLOW ; push address for slow mode message
|
>PUSHW L.MSG.SLOW ; push address for slow mode message
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF ; print slow mode message
|
>SYSCALL PrintF ; print slow mode message
|
||||||
jsr CS.RUN.SetSlowMode ; call slow mode routine
|
jsr CS.RUN.SetSlowMode ; call slow mode routine
|
||||||
jmp .99 ; jump to successful exit
|
jmp .99 ; jump to successful exit
|
||||||
|
|
||||||
*--- Display usage and error out ------
|
*--- Display usage and error out ------
|
||||||
.9
|
.9
|
||||||
>PUSHW L.MSG.USAGE ; push address for usage text
|
>PUSHW L.MSG.USAGE ; push address for usage text
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF ; print usage message
|
>SYSCALL PrintF ; print usage message
|
||||||
lda #E.SYN ; set OS return code as Syntax Error
|
lda #E.SYN ; set OS return code as Syntax Error
|
||||||
sec ; indicate we don't want CS.RUN called again
|
sec ; indicate we don't want CS.RUN called again
|
||||||
rts ; return to OS
|
rts ; return to OS
|
||||||
|
|
||||||
*--- Successful exit ------------------
|
*--- Successful exit ------------------
|
||||||
.99
|
.99
|
||||||
lda #0 ; set OS return code to success
|
lda #0 ; set OS return code to success
|
||||||
sec ; indicate we don't want CS.RUN called again
|
sec ; indicate we don't want CS.RUN called again
|
||||||
rts ; return to OS
|
rts ; return to OS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Called if option S.PS.F.EVENT enabled in Header
|
* Called if option S.PS.F.EVENT enabled in Header
|
||||||
* Timer Event : every 10th seconds
|
* Timer Event : every 10th seconds
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT sec ; we don't use this since we don't have timer events
|
CS.DOEVENT sec ; we don't use this since we don't have timer events
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Called once, when RUN exited with CS
|
* Called once, when RUN exited with CS
|
||||||
* Put code for unloading LIB here
|
* Put code for unloading LIB here
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT clc ; nothing to do on exit except clear carry and return
|
CS.QUIT clc ; nothing to do on exit except clear carry and return
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CheckOpt assumes a set ZPPtr1 which is the address of the command line argument being examined.
|
* CheckOpt assumes a set ZPPtr1 which is the address of the command line argument being examined.
|
||||||
* We start at 1 to look past the '-' as position 0 since that was checked by the caller.
|
* We start at 1 to look past the '-' as position 0 since that was checked by the caller.
|
||||||
* OptionList is a list of possible options and each character correlates with a memory offset
|
* OptionList is a list of possible options and each character correlates with a memory offset
|
||||||
* in OptionVars, which are only one byte since they are in ZP but this also allows for us to
|
* in OptionVars, which are only one byte since they are in ZP but this also allows for us to
|
||||||
* simply use indexed addressing to reference them easily as well instead of doing 16-bit
|
* simply use indexed addressing to reference them easily as well instead of doing 16-bit
|
||||||
* address juggling.
|
* address juggling.
|
||||||
* The options are checked in reverse from end-to-start and indexed by X.
|
* The options are checked in reverse from end-to-start and indexed by X.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CheckOpt ldy #1 ; set up y to look at second character of passed in arg
|
CS.RUN.CheckOpt ldy #1 ; set up y to look at second character of passed in arg
|
||||||
lda (ZPPtr1),y ; check second character of passed in argument into A
|
lda (ZPPtr1),y ; check second character of passed in argument into A
|
||||||
ldx #OptionVars-OptionList-1 ; clever way to put size of OptionList into X
|
ldx #OptionVars-OptionList-1 ; clever way to put size of OptionList into X
|
||||||
|
|
||||||
.2 cmp OptionList,x ; compare the arg we got to the OptionList at X
|
.2 cmp OptionList,x ; compare the arg we got to the OptionList at X
|
||||||
beq .3 ; if it is a match, go handle it.
|
beq .3 ; if it is a match, go handle it.
|
||||||
dex ; if not, decrement so we can check next OptionList
|
dex ; if not, decrement so we can check next OptionList
|
||||||
bpl .2 ; if we haven't reached end of OptionList, go check next
|
bpl .2 ; if we haven't reached end of OptionList, go check next
|
||||||
sec ; set carry if we didn't find a match
|
sec ; set carry if we didn't find a match
|
||||||
rts ; return to caller
|
rts ; return to caller
|
||||||
|
|
||||||
.3 ldy OptionVars,x ; since we matched, find ZP addr of matching option into Y
|
.3 ldy OptionVars,x ; since we matched, find ZP addr of matching option into Y
|
||||||
lda #$ff ; we will set this ZP option to $FF
|
lda #$ff ; we will set this ZP option to $FF
|
||||||
sta 0,y ; store A into the ZP address we have in Y
|
sta 0,y ; store A into the ZP address we have in Y
|
||||||
clc ; clear carry since we found a match
|
clc ; clear carry since we found a match
|
||||||
rts ; return to caller
|
rts ; return to caller
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CS.RUN.SetFastMode
|
* CS.RUN.SetFastMode
|
||||||
* Calls a few different ways to enable accelerators, mainly ZipChip, Titan, and TransWarp.
|
* Calls a few different ways to enable accelerators, mainly ZipChip, Titan, and TransWarp.
|
||||||
* However, it also works for RocketChip as well.
|
* However, it also works for RocketChip as well.
|
||||||
* The first one (using $C05C) came from some documentation, but not sure which accelerator uses it.
|
* The first one (using $C05C) came from some documentation, but not sure which accelerator uses it.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.SetFastMode
|
CS.RUN.SetFastMode
|
||||||
sta $C05C ; not sure which accelerator follows this? Not RC at least..
|
sta $C05C ; not sure which accelerator follows this? Not RC at least..
|
||||||
|
|
||||||
* lda #$05 ; enable Titan Accelerator //e fast mode
|
* lda #$05 ; enable Titan Accelerator //e fast mode
|
||||||
* sta $C086 ; by storing $05 to $C086
|
* sta $C086 ; by storing $05 to $C086
|
||||||
|
|
||||||
lda #$5A ; unlock ZipChip so we can configure it
|
lda #$5A ; unlock ZipChip so we can configure it
|
||||||
sta $C05A ; by storing $5A into $C05A 4 times
|
sta $C05A ; by storing $5A into $C05A 4 times
|
||||||
sta $C05A ; to trigger the unlock latch
|
sta $C05A ; to trigger the unlock latch
|
||||||
sta $C05A
|
sta $C05A
|
||||||
sta $C05A
|
sta $C05A
|
||||||
|
|
||||||
lda #0 ; enable ZipChip fast mode by storing #0
|
lda #0 ; enable ZipChip fast mode by storing #0
|
||||||
sta $C05B ; into $C05B
|
sta $C05B ; into $C05B
|
||||||
|
|
||||||
lda #$A5 ; lock ZipChip to prevent more configs
|
lda #$A5 ; lock ZipChip to prevent more configs
|
||||||
sta $C05A ; by setting $C05A to $A5
|
sta $C05A ; by setting $C05A to $A5
|
||||||
|
|
||||||
lda #0 ; enable TransWarp fast mode by storing #0
|
lda #0 ; enable TransWarp fast mode by storing #0
|
||||||
sta $C074 ; into $C074
|
sta $C074 ; into $C074
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CS.RUN.SetSlowMode
|
* CS.RUN.SetSlowMode
|
||||||
* Calls a few different ways to disable accelerators, mainly ZipChip, Titan, and TransWarp.
|
* Calls a few different ways to disable accelerators, mainly ZipChip, Titan, and TransWarp.
|
||||||
* However, it also works for RocketChip as well.
|
* However, it also works for RocketChip as well.
|
||||||
* The first one (using $C05C) came from some documentation, but not sure which accelerator uses it.
|
* The first one (using $C05C) came from some documentation, but not sure which accelerator uses it.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.SetSlowMode
|
CS.RUN.SetSlowMode
|
||||||
sta $C05D ; not sure which accelerator follows this? Not RC at least..
|
sta $C05D ; not sure which accelerator follows this? Not RC at least..
|
||||||
|
|
||||||
* lda #$01 ; enable Titan Accelerator //e slow mode
|
* lda #$01 ; enable Titan Accelerator //e slow mode
|
||||||
* sta $C086 ; by storing $01 to $C086
|
* sta $C086 ; by storing $01 to $C086
|
||||||
|
|
||||||
lda #$5A ; unlock ZipChip so we can configure it
|
lda #$5A ; unlock ZipChip so we can configure it
|
||||||
sta $C05A ; by storing $5A into $C05A 4 times
|
sta $C05A ; by storing $5A into $C05A 4 times
|
||||||
sta $C05A ; to trigger the unlock latch
|
sta $C05A ; to trigger the unlock latch
|
||||||
sta $C05A
|
sta $C05A
|
||||||
sta $C05A
|
sta $C05A
|
||||||
|
|
||||||
lda #0 ; disable ZipChip acceleration by setting location
|
lda #0 ; disable ZipChip acceleration by setting location
|
||||||
sta $C05A ; $C05A to #0
|
sta $C05A ; $C05A to #0
|
||||||
|
|
||||||
lda #$A5 ; lock ZipChip to prevent more configs
|
lda #$A5 ; lock ZipChip to prevent more configs
|
||||||
sta $C05A ; by setting $C05A to $A5
|
sta $C05A ; by setting $C05A to $A5
|
||||||
|
|
||||||
lda #1 ; disable TransWarp acceleration by storing #1
|
lda #1 ; disable TransWarp acceleration by storing #1
|
||||||
sta $C074 ; into $C074
|
sta $C074 ; into $C074
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE .AS "Usage : ACC\r\n"
|
MSG.USAGE .AS "Usage : ACC\r\n"
|
||||||
.AS " -F : Fast speed\r\n"
|
.AS " -F : Fast speed\r\n"
|
||||||
.AZ " -S : Slow speed\r\n"
|
.AZ " -S : Slow speed\r\n"
|
||||||
MSG.MSG.FAST .AZ "FAST mode enabled\r\n"
|
MSG.MSG.FAST .AZ "FAST mode enabled\r\n"
|
||||||
MSG.MSG.SLOW .AZ "SLOW mode enabled\r\n"
|
MSG.MSG.SLOW .AZ "SLOW mode enabled\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OptionList .AS "FfSs"
|
OptionList .AS "FfSs"
|
||||||
OptionVars .DA #bFast,#bFast,#bSlow,#bSlow
|
OptionVars .DA #bFast,#bFast,#bSlow,#bSlow
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Per Process DATA segment (0 filled before INIT)
|
* Per Process DATA segment (0 filled before INIT)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/bin/acc.s
|
SAVE usr/src/bin/acc.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -47,7 +47,7 @@ CS.INIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN ldy #S.PS.ARGC
|
CS.RUN ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPS),y
|
||||||
beq CS.RUN.USAGE
|
beq CS.RUN.USAGE
|
||||||
|
|
||||||
jsr CS.RUN.GetInfo
|
jsr CS.RUN.GetInfo
|
||||||
|
|
|
@ -170,11 +170,7 @@ CS.RUN.ARGS inc ArgIndex
|
||||||
sec QUIT Process
|
sec QUIT Process
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LoadFile >PUSHYA
|
CS.RUN.LoadFile >SYSCALL LoadTxtFile
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI S.FI.T.TXT
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadTxtFile
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
phx
|
phx
|
||||||
|
|
|
@ -140,9 +140,13 @@ CS.RUN lda #C.SPACE
|
||||||
.80 ldy #S.PS.hStdIn
|
.80 ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
tax
|
tax
|
||||||
lda OF.Table.hFD-1,x
|
lsr
|
||||||
|
bcs .97
|
||||||
|
|
||||||
|
lda Nod.Table.hFD-2,x
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
cmp #S.FD.T.PIPE
|
cmp #S.FD.T.PIPE
|
||||||
bne .97
|
bne .97
|
||||||
|
|
|
@ -8,7 +8,6 @@ NEW
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
.INB inc/kernel.i
|
|
||||||
.INB inc/libblkdev.i
|
.INB inc/libblkdev.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
|
@ -768,7 +767,7 @@ Disk2.XD .DA 640 BlkCnt
|
||||||
Disk2.HD .DA 1280 BlkCnt
|
Disk2.HD .DA 1280 BlkCnt
|
||||||
.DA #80 TrkCnt
|
.DA #80 TrkCnt
|
||||||
.DA #2 Stepping
|
.DA #2 Stepping
|
||||||
.DA ##194 VolNum
|
.DA #194 VolNum
|
||||||
.DA #$80 AltBB
|
.DA #$80 AltBB
|
||||||
.DA #1 HeadCnt
|
.DA #1 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -776,7 +775,7 @@ Disk2.HD .DA 1280 BlkCnt
|
||||||
Disk2.HXD .DA 1280 BlkCnt
|
Disk2.HXD .DA 1280 BlkCnt
|
||||||
.DA #80 TrkCnt
|
.DA #80 TrkCnt
|
||||||
.DA #2 Stepping
|
.DA #2 Stepping
|
||||||
.DA ##194 VolNum
|
.DA #194 VolNum
|
||||||
.DA #$80 AltBB
|
.DA #$80 AltBB
|
||||||
.DA #1 HeadCnt
|
.DA #1 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
|
|
@ -0,0 +1,109 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
GFX.Open >PUSHBI 0
|
||||||
|
>LDYA L.DEV.GFX
|
||||||
|
>SYSCALL Open
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STA.G hDevGFX
|
||||||
|
|
||||||
|
* ldy #S.PS.hStdIn
|
||||||
|
* lda (pPS),y
|
||||||
|
* >SYSCALL GetMemPtr
|
||||||
|
* >STYA ZPPtr1
|
||||||
|
|
||||||
|
* ldy #S.FD.DEV.DEVID
|
||||||
|
* lda (ZPPtr1),y
|
||||||
|
|
||||||
|
* >PUSHA
|
||||||
|
* >PUSHBI IOCTL.CONTROL
|
||||||
|
* >PUSHWI 0
|
||||||
|
* >SYSCALL IOCTL
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
GFX.Close >LDA.G hDevGFX
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
>SYSCALL Close
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
* (Y X C)
|
||||||
|
*--------------------------------------
|
||||||
|
GFX.PLOT lda #S.CB.CMD.SETPIXEL
|
||||||
|
>STA.G GFX.CB+S.CB.CMD
|
||||||
|
lda #S.CB.OP.SET
|
||||||
|
>STA.G GFX.CB+S.CB.OP
|
||||||
|
lda #S.CB.M.C16
|
||||||
|
>STA.G GFX.CB+S.CB.M
|
||||||
|
|
||||||
|
>PULLA
|
||||||
|
>STA.G GFX.CB+S.CB.COLOR
|
||||||
|
|
||||||
|
>PULLA
|
||||||
|
|
||||||
|
ldx #4
|
||||||
|
ldy #GFX.CB+S.CB.X1+3
|
||||||
|
|
||||||
|
.1 >PULLA
|
||||||
|
sta (pData),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>PUSHB.G hDevGFX
|
||||||
|
>PUSHBI IOCTL.WRITE
|
||||||
|
>PUSHEA.G GFX.CB
|
||||||
|
>SYSCALL IOCTL
|
||||||
|
|
||||||
|
lda pStack
|
||||||
|
clc
|
||||||
|
adc #6
|
||||||
|
sta pStack
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* (Y2 X2 Y1 X1 C)
|
||||||
|
*--------------------------------------
|
||||||
|
GFX.RECT lda #S.CB.CMD.FILLRECT
|
||||||
|
>STA.G GFX.CB+S.CB.CMD
|
||||||
|
lda #S.CB.OP.SET
|
||||||
|
>STA.G GFX.CB+S.CB.OP
|
||||||
|
lda #S.CB.M.C16
|
||||||
|
>STA.G GFX.CB+S.CB.M
|
||||||
|
|
||||||
|
>PULLA
|
||||||
|
>STA.G GFX.CB+S.CB.COLOR
|
||||||
|
|
||||||
|
>PULLA
|
||||||
|
|
||||||
|
ldx #8
|
||||||
|
ldy #GFX.CB+S.CB.X1+7
|
||||||
|
|
||||||
|
.1 >PULLA
|
||||||
|
sta (pData),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>PUSHB.G hDevGFX
|
||||||
|
>PUSHBI IOCTL.WRITE
|
||||||
|
>PUSHEA.G GFX.CB
|
||||||
|
>SYSCALL IOCTL
|
||||||
|
|
||||||
|
lda pStack
|
||||||
|
clc
|
||||||
|
adc #10
|
||||||
|
sta pStack
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
*--------------------------------------
|
||||||
|
*--------------------------------------
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/bin/forth.s.gfx
|
||||||
|
LOAD usr/src/bin/forth.s
|
||||||
|
ASM
|
|
@ -4,9 +4,6 @@ NEW
|
||||||
KW.Lookup >LDYA L.KEYWORDS
|
KW.Lookup >LDYA L.KEYWORDS
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
>LDYA ZPCLBufPtr
|
|
||||||
>STYA ZPPtr2
|
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 ldy #$ff
|
.1 ldy #$ff
|
||||||
|
@ -51,7 +48,7 @@ KW.Lookup >LDYA L.KEYWORDS
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.7 iny
|
.7 iny
|
||||||
lda (ZPPtr2),y Get Src text char...
|
lda (ZPCLBufPtr),y Get Src text char...
|
||||||
beq .9 end of text
|
beq .9 end of text
|
||||||
|
|
||||||
jmp IsSpaceOrCR CS=end of valid chars
|
jmp IsSpaceOrCR CS=end of valid chars
|
||||||
|
@ -761,7 +758,7 @@ KW.PRINT >LDYAI 256
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
|
|
||||||
pla
|
pla
|
||||||
>SYSCALL freemem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -9,6 +9,7 @@ NEW
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/mli.i
|
.INB inc/mli.i
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
|
.INB inc/gfx.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CODE.SIZE .EQ 2048
|
CODE.SIZE .EQ 2048
|
||||||
DATA.SIZE .EQ 2048
|
DATA.SIZE .EQ 2048
|
||||||
|
@ -73,6 +74,7 @@ CS.START cld
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
|
L.DEV.GFX .DA DEV.GFX
|
||||||
L.MSG.GREETINGS .DA MSG.GREETINGS
|
L.MSG.GREETINGS .DA MSG.GREETINGS
|
||||||
L.MSG.USAGE .DA MSG.USAGE
|
L.MSG.USAGE .DA MSG.USAGE
|
||||||
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
|
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
|
||||||
|
@ -94,7 +96,9 @@ J.ESC .DA CL.BS left arrow
|
||||||
* .DA HIS.GetPrev
|
* .DA HIS.GetPrev
|
||||||
.DA CL.NAK right arrow
|
.DA CL.NAK right arrow
|
||||||
L.KEYWORDS .DA KEYWORDS
|
L.KEYWORDS .DA KEYWORDS
|
||||||
J.KEYWORDS .DA KW.DUP
|
J.KEYWORDS .DA GFX.PLOT
|
||||||
|
.DA GFX.RECT
|
||||||
|
.DA KW.DUP
|
||||||
.DA KW.DROP
|
.DA KW.DROP
|
||||||
.DA KW.SWAP
|
.DA KW.SWAP
|
||||||
J.KEYWORDS.OVER .DA KW.OVER
|
J.KEYWORDS.OVER .DA KW.OVER
|
||||||
|
@ -262,6 +266,8 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
||||||
stz bCompile
|
stz bCompile
|
||||||
lda #127
|
lda #127
|
||||||
sta RP
|
sta RP
|
||||||
|
|
||||||
|
jsr GFX.Open
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LOOP >SLEEP
|
CS.RUN.LOOP >SLEEP
|
||||||
|
|
||||||
|
@ -359,7 +365,7 @@ CS.FORTH.Run.File
|
||||||
>PUSHW ZPCLBuf
|
>PUSHW ZPCLBuf
|
||||||
|
|
||||||
>LDA.G hFile
|
>LDA.G hFile
|
||||||
>SYSCALL fgets
|
>SYSCALL FGetS
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDA.G bTrace
|
>LDA.G bTrace
|
||||||
|
@ -577,7 +583,9 @@ CS.RUN.GetNum >PUSHW ZPCLBufPtr
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT >LDA.G hSList
|
CS.QUIT jsr GFX.Close
|
||||||
|
|
||||||
|
>LDA.G hSList
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
@ -766,9 +774,11 @@ CheckStackPop4 lda pStack
|
||||||
.INB usr/src/bin/forth.s.cl
|
.INB usr/src/bin/forth.s.cl
|
||||||
.INB usr/src/bin/forth.s.cp
|
.INB usr/src/bin/forth.s.cp
|
||||||
.INB usr/src/bin/forth.s.kw
|
.INB usr/src/bin/forth.s.kw
|
||||||
|
.INB usr/src/bin/forth.s.gfx
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DEV.GFX .AZ "/dev/gfx"
|
||||||
MSG.GREETINGS .AZ "\e[?7h\r\nA2osX-FORTH %d.%d (figFORTH)\r\n"
|
MSG.GREETINGS .AZ "\e[?7h\r\nA2osX-FORTH %d.%d (figFORTH)\r\n"
|
||||||
MSG.USAGE .AS "Usage : FORTH <option> file\r\n"
|
MSG.USAGE .AS "Usage : FORTH <option> file\r\n"
|
||||||
.AS " -D : Debug Mode\r\n"
|
.AS " -D : Debug Mode\r\n"
|
||||||
|
@ -793,7 +803,10 @@ EscChars .AS 'DBAC'
|
||||||
EscChars.Cnt .EQ *-EscChars
|
EscChars.Cnt .EQ *-EscChars
|
||||||
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
|
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KEYWORDS .AT "DUP" ( n - n n ) Duplicate top of stack.
|
KEYWORDS .AT "PLOT"
|
||||||
|
.AT "RECT"
|
||||||
|
*--------------------------------------
|
||||||
|
.AT "DUP" ( n - n n ) Duplicate top of stack.
|
||||||
.AT "DROP" ( n - ) Discard top of stack.
|
.AT "DROP" ( n - ) Discard top of stack.
|
||||||
.AT "SWAP" ( n1 n2 - n2 n1 ) Reverse top two stack items.
|
.AT "SWAP" ( n1 n2 - n2 n1 ) Reverse top two stack items.
|
||||||
.AT "OVER" ( n1 n2 - n1 n2 n1 ) Copy second item to top.
|
.AT "OVER" ( n1 n2 - n1 n2 n1 ) Copy second item to top.
|
||||||
|
@ -960,7 +973,8 @@ hCLBuf .BS 1
|
||||||
hFile .BS 1
|
hFile .BS 1
|
||||||
LineCounter .BS 2
|
LineCounter .BS 2
|
||||||
hSList .BS 1
|
hSList .BS 1
|
||||||
|
hDevGFX .BS 1
|
||||||
|
GFX.CB .BS S.CB
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -109,7 +109,11 @@ CS.RUN
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
tax
|
tax
|
||||||
lda OF.Table.hFD-1,x
|
|
||||||
|
lsr
|
||||||
|
bcs .97
|
||||||
|
|
||||||
|
lda Nod.Table.hFD-2,x
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
|
|
|
@ -283,42 +283,27 @@ CS.QUIT lda hFont
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LoadResources >PUSHW L.FONTFILE
|
LoadResources >LDYA L.FONTFILE
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI $CC Type
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadStkObj
|
>SYSCALL LoadStkObj
|
||||||
bcs .99
|
bcs .99
|
||||||
stx hFont
|
stx hFont
|
||||||
|
|
||||||
>PUSHW L.FONTFILEB
|
>LDYA L.FONTFILEB
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI $CC Type
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadStkObj
|
>SYSCALL LoadStkObj
|
||||||
bcs .99
|
bcs .99
|
||||||
stx hFontB
|
stx hFontB
|
||||||
|
|
||||||
>PUSHW L.MARILYNFILE
|
>LDYA L.MARILYNFILE
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI $CB Type
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadStkObj
|
>SYSCALL LoadStkObj
|
||||||
.99 bcs .9
|
.99 bcs .9
|
||||||
stx CB.PIX+S.CB.SrcPtr
|
stx CB.PIX+S.CB.SrcPtr
|
||||||
|
|
||||||
>PUSHW L.LOGOFILE
|
>LDYA L.LOGOFILE
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI $CB Type
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadStkObj
|
>SYSCALL LoadStkObj
|
||||||
bcs .9
|
bcs .9
|
||||||
stx CB.LOGO+S.CB.SrcPtr
|
stx CB.LOGO+S.CB.SrcPtr
|
||||||
|
|
||||||
>PUSHW L.PALETTEFILE
|
>LDYA L.PALETTEFILE
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI $CB Type
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadStkObj
|
>SYSCALL LoadStkObj
|
||||||
bcs .9
|
bcs .9
|
||||||
stx CB.PALETTE+S.CB.SrcPtr
|
stx CB.PALETTE+S.CB.SrcPtr
|
||||||
|
|
|
@ -55,10 +55,7 @@ CS.INIT >LDYA L.LIBGUI
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN >PUSHW L.LOGOFILE
|
CS.RUN >LDYA L.LOGOFILE
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI $CB Type
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadStkObj
|
>SYSCALL LoadStkObj
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
|
|
@ -197,10 +197,6 @@ CS.RUN.HOSTOK jsr CS.RUN.GETNEXTARG
|
||||||
jsr CS.RUN.GETNEXTARG
|
jsr CS.RUN.GETNEXTARG
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHYA
|
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI S.FI.T.TXT
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadTxtFile
|
>SYSCALL LoadTxtFile
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/kernel.i
|
|
||||||
.INB inc/mli.i
|
.INB inc/mli.i
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
20
BIN/LS.S.txt
20
BIN/LS.S.txt
|
@ -137,18 +137,18 @@ CS.RUN
|
||||||
>STYA ZPLineBuf
|
>STYA ZPLineBuf
|
||||||
stx hLineBuf
|
stx hLineBuf
|
||||||
|
|
||||||
ldy #S.PS.hStdOut
|
* ldy #S.PS.hStdOut
|
||||||
lda (pPS),y
|
* lda (pPS),y
|
||||||
tax
|
* tax
|
||||||
lda OF.Table.hFD-1,x
|
* lda OF.Table.hFD-1,x
|
||||||
>SYSCALL GetMemPtr
|
* >SYSCALL GetMemPtr
|
||||||
>STYA ZPPtr1
|
* >STYA ZPPtr1
|
||||||
|
|
||||||
lda (ZPPtr1) S.FD.T
|
* lda (ZPPtr1) S.FD.T
|
||||||
beq CS.RUN.LOOP S.FD.T.REG
|
* beq CS.RUN.LOOP S.FD.T.REG
|
||||||
|
|
||||||
cmp #S.FD.T.PIPE
|
* cmp #S.FD.T.PIPE
|
||||||
beq CS.RUN.LOOP
|
* beq CS.RUN.LOOP
|
||||||
|
|
||||||
dec bCRLF
|
dec bCRLF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -45,6 +45,7 @@ L.MSG2.C .DA MSG2.C
|
||||||
L.MSG2.B .DA MSG2.B
|
L.MSG2.B .DA MSG2.B
|
||||||
L.MSG3 .DA MSG3
|
L.MSG3 .DA MSG3
|
||||||
L.MSG4 .DA MSG4
|
L.MSG4 .DA MSG4
|
||||||
|
L.NO.PATH .DA NO.PATH
|
||||||
L.FD.T .DA FD.T.REG
|
L.FD.T .DA FD.T.REG
|
||||||
.DA FD.T.DIR
|
.DA FD.T.DIR
|
||||||
.DA FD.T.CDEV
|
.DA FD.T.CDEV
|
||||||
|
@ -199,22 +200,20 @@ DumpNod >LDYA L.MSG3
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
|
|
||||||
ldx #2
|
ldx #2
|
||||||
stx Index
|
|
||||||
|
|
||||||
.1 lda Nod.Table.hPath-2,x
|
.1 stx Index
|
||||||
|
|
||||||
|
lda Nod.Table.hFD-2,x
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
>PUSHW L.MSG4
|
>PUSHW L.MSG4
|
||||||
|
|
||||||
lda Index
|
txa
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
tax
|
|
||||||
lda Nod.Table.hFD-2,x
|
lda Nod.Table.hFD-2,x
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
ldx Index
|
|
||||||
lda Nod.Table.hFD-2,x
|
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPFDPtr
|
>STYA ZPFDPtr
|
||||||
lda (ZPFDPtr)
|
lda (ZPFDPtr)
|
||||||
|
@ -222,16 +221,23 @@ DumpNod >LDYA L.MSG3
|
||||||
>PUSHW L.FD.T,x
|
>PUSHW L.FD.T,x
|
||||||
|
|
||||||
ldx Index
|
ldx Index
|
||||||
lda Nod.Table.hPath-2,x
|
lda Nod.Table.hName-2,x
|
||||||
>SYSCALL GetMemPtr
|
bne .2
|
||||||
>PUSHYA
|
|
||||||
|
>LDYA L.NO.PATH
|
||||||
|
bra .3
|
||||||
|
|
||||||
|
.2 >SYSCALL GetMemPtr
|
||||||
|
|
||||||
|
.3 >PUSHYA
|
||||||
>PUSHBI 6
|
>PUSHBI 6
|
||||||
|
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
|
||||||
.7 inc Index
|
|
||||||
|
|
||||||
ldx Index
|
ldx Index
|
||||||
|
|
||||||
|
.7 inx
|
||||||
|
inx
|
||||||
cpx #K.NOD.MAX+2
|
cpx #K.NOD.MAX+2
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
@ -251,10 +257,12 @@ MSG2.ERR .AZ "Device Error : $%h\r\n"
|
||||||
MSG2 .AZ "%s $%h/$%h %16S %03d.%03d "
|
MSG2 .AZ "%s $%h/$%h %16S %03d.%03d "
|
||||||
MSG2.B .AZ "%10u\r\n"
|
MSG2.B .AZ "%10u\r\n"
|
||||||
MSG2.C .AZ "n/a\r\n"
|
MSG2.C .AZ "n/a\r\n"
|
||||||
MSG.SFLAGS .AS "BWRLNEIO"
|
MSG.SFLAGS .AS "bwrlneio"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG3 .AZ "hNod hFD Type Filepath"
|
MSG3 .AZ "hNod hFD Type Filepath"
|
||||||
MSG4 .AZ "%03d $%h %5s %s\r\n"
|
MSG4 .AZ "%03d $%h %5s %s\r\n"
|
||||||
|
NO.PATH .AZ "(no path)"
|
||||||
|
*--------------------------------------
|
||||||
FD.T.REG .AZ "REG"
|
FD.T.REG .AZ "REG"
|
||||||
FD.T.DIR .AZ "DIR"
|
FD.T.DIR .AZ "DIR"
|
||||||
FD.T.CDEV .AZ "CDEV"
|
FD.T.CDEV .AZ "CDEV"
|
||||||
|
|
|
@ -50,61 +50,42 @@ CS.INIT clc
|
||||||
CS.RUN >LDYA L.MSG0
|
CS.RUN >LDYA L.MSG0
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
|
|
||||||
ldx #1
|
ldx #2
|
||||||
stx FILE.ID
|
|
||||||
|
|
||||||
.1 lda OF.Table.hFD-1,x
|
.1 stx FILE.ID
|
||||||
|
|
||||||
|
lda Nod.Table.hFD-2,x
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
|
>PUSHW L.MSG1
|
||||||
|
|
||||||
|
txa
|
||||||
|
>PUSHA
|
||||||
|
lda Nod.Table.hFD-2,x
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPFDPtr
|
>STYA ZPFDPtr
|
||||||
|
|
||||||
>PUSHW L.MSG1
|
|
||||||
|
|
||||||
lda FILE.ID
|
|
||||||
tax
|
|
||||||
>PUSHA
|
|
||||||
lda OF.Table.hFD-1,x
|
|
||||||
>PUSHA
|
|
||||||
|
|
||||||
ldx FILE.ID
|
|
||||||
lda OF.Table.hPath-1,x
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
lda OF.Table.hFD-1,x
|
|
||||||
tax
|
|
||||||
|
|
||||||
lda Dev.Table-1,x
|
|
||||||
sta ZPFDPtr
|
|
||||||
clc
|
|
||||||
adc #S.FD.DEV
|
|
||||||
tay
|
|
||||||
lda Dev.Table,x
|
|
||||||
sta ZPFDPtr+1
|
|
||||||
adc /S.FD.DEV
|
|
||||||
|
|
||||||
bra .3
|
|
||||||
|
|
||||||
.2 >SYSCALL GetMemPtr
|
|
||||||
|
|
||||||
.3 pha
|
|
||||||
lda (ZPFDPtr)
|
lda (ZPFDPtr)
|
||||||
tax
|
tax
|
||||||
>PUSHW L.FD.T,x
|
>PUSHW L.FD.T,x
|
||||||
pla
|
|
||||||
|
|
||||||
|
lda Nod.Table.hName-2,x
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
|
|
||||||
>PUSHBI 6
|
>PUSHBI 6
|
||||||
|
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
|
||||||
.7 inc FILE.ID
|
.7 ldx FILE.ID
|
||||||
ldx FILE.ID
|
inx
|
||||||
cpx #K.OF.MAX+1
|
inx
|
||||||
|
cpx #K.NOD.MAX*2+2
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.8 lda #0
|
lda #0
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -70,12 +70,14 @@ CS.RUN
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
cmp #'-'
|
cmp #'-'
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
|
||||||
ldx OptionList
|
ldx OptionList
|
||||||
.2 cmp OptionList,x
|
.2 cmp OptionList,x
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
|
@ -90,24 +92,34 @@ CS.RUN
|
||||||
lda #$80
|
lda #$80
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.4 lda hFile
|
.4 lda hFile
|
||||||
bne .99
|
bne .99
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
jsr CS.RUN.OPEN
|
jsr CS.RUN.OPEN
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
bra .1 scan for any other args
|
bra .1 scan for any other args
|
||||||
|
|
||||||
.7 lda bHelp
|
.7 lda bHelp
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.71 jsr .99
|
.71 jsr .99
|
||||||
lda #0
|
lda #0
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 lda hFile
|
.8 lda hFile
|
||||||
bne .80
|
bne .80
|
||||||
|
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
tax
|
tax
|
||||||
lda OF.Table.hFD-1,x
|
|
||||||
|
lsr
|
||||||
|
bcs .71
|
||||||
|
|
||||||
|
lda Nod.Table.hFD-2,x
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
@ -118,6 +130,7 @@ CS.RUN
|
||||||
.80 >LDYAI 256
|
.80 >LDYAI 256
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPBufPtr
|
>STYA ZPBufPtr
|
||||||
stx hBuf
|
stx hBuf
|
||||||
|
|
||||||
|
@ -127,27 +140,37 @@ CS.RUN
|
||||||
|
|
||||||
CS.RUN.LOOP jsr CS.RUN.GETLINE
|
CS.RUN.LOOP jsr CS.RUN.GETLINE
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.1 inc LineNum
|
.1 inc LineNum
|
||||||
bne .11
|
bne .11
|
||||||
|
|
||||||
inc LineNum+1
|
inc LineNum+1
|
||||||
|
|
||||||
.11 lda LineCount
|
.11 lda LineCount
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda bPage
|
lda bPage
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
lda #C.FF
|
lda #C.FF
|
||||||
>SYSCALL PutChar
|
>SYSCALL PutChar
|
||||||
|
|
||||||
.2 jsr CS.RUN.PRINT
|
.2 jsr CS.RUN.PRINT
|
||||||
|
|
||||||
inc LineCount
|
inc LineCount
|
||||||
lda LineCount
|
lda LineCount
|
||||||
cmp #PG.SIZE
|
cmp #PG.SIZE
|
||||||
bne CS.RUN.LOOP
|
bne CS.RUN.LOOP
|
||||||
|
|
||||||
stz LineCount
|
stz LineCount
|
||||||
jsr CS.RUN.PAUSE
|
jsr CS.RUN.PAUSE
|
||||||
bcc CS.RUN.LOOP
|
bcc CS.RUN.LOOP
|
||||||
|
|
||||||
.9 cmp #MLI.E.EOF
|
.9 cmp #MLI.E.EOF
|
||||||
bne .99
|
bne .99
|
||||||
|
|
||||||
lda #0 Exit with no Error
|
lda #0 Exit with no Error
|
||||||
|
|
||||||
.99 sec
|
.99 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -174,23 +197,30 @@ CS.RUN.PAUSE ldy #S.PS.hStdErr
|
||||||
|
|
||||||
cmp #'Q'
|
cmp #'Q'
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
cmp #'q'
|
cmp #'q'
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
.3 cmp #C.SPACE
|
.3 cmp #C.SPACE
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
jmp CS.RUN.ERASE
|
jmp CS.RUN.ERASE
|
||||||
|
|
||||||
.4 cmp #C.CR
|
.4 cmp #C.CR
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
jsr CS.RUN.ERASE
|
jsr CS.RUN.ERASE
|
||||||
|
|
||||||
.40 jsr CS.RUN.GETLINE
|
.40 jsr CS.RUN.GETLINE
|
||||||
bcc .5
|
bcc .5
|
||||||
|
|
||||||
cmp #MLI.E.EOF
|
cmp #MLI.E.EOF
|
||||||
beq .90
|
beq .90
|
||||||
|
|
||||||
rts
|
rts
|
||||||
.5 inc LineNum
|
.5 inc LineNum
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
inc LineNum+1
|
inc LineNum+1
|
||||||
|
|
||||||
.6 jsr CS.RUN.PRINT
|
.6 jsr CS.RUN.PRINT
|
||||||
|
@ -225,6 +255,7 @@ CS.RUN.GETLINE >PUSHWI 256
|
||||||
>PUSHW ZPBufPtr
|
>PUSHW ZPBufPtr
|
||||||
lda hFile
|
lda hFile
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
|
|
||||||
|
@ -239,6 +270,7 @@ CS.RUN.PRINT lda bLineNum
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.1 lda bEscCodes
|
.1 lda bEscCodes
|
||||||
bmi .2
|
bmi .2
|
||||||
|
|
||||||
|
|
|
@ -276,7 +276,7 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath
|
||||||
>PUSHW ZPFullPath
|
>PUSHW ZPFullPath
|
||||||
>LDA.G hArcFile
|
>LDA.G hArcFile
|
||||||
tay
|
tay
|
||||||
lda OF.Table.hPath-1,y
|
lda Nod.Table.hName-2,y
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>SYSCALL StrCmp
|
>SYSCALL StrCmp
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
|
@ -6,7 +6,7 @@ CMD.. lda (ZPArgVBufPtr)
|
||||||
beq CMD...9
|
beq CMD...9
|
||||||
|
|
||||||
>LDYA ZPArgVBufPtr
|
>LDYA ZPArgVBufPtr
|
||||||
jsr IO.Load
|
>SYSCALL LoadTxtFile
|
||||||
bcs CMD.SHIFTA.RTS
|
bcs CMD.SHIFTA.RTS
|
||||||
|
|
||||||
>LDYA ZPArgVBufPtr
|
>LDYA ZPArgVBufPtr
|
||||||
|
|
|
@ -4,18 +4,10 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.Reset jsr IO.Reset.In
|
IO.Reset jsr IO.Reset.In
|
||||||
jsr IO.Reset.Out
|
jsr IO.Reset.Out
|
||||||
jsr IO.Reset.Err
|
jmp IO.Reset.Err
|
||||||
IO.Reset.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
IO.Load >PUSHYA
|
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI S.FI.T.TXT
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadTxtFile
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE
|
IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE
|
||||||
bcs IO.Set.RTS
|
bcs .9
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
|
@ -27,7 +19,8 @@ IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE
|
||||||
|
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
sta (pPS),y
|
sta (pPS),y
|
||||||
rts
|
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.Set.In pha
|
IO.Set.In pha
|
||||||
jsr IO.Reset.In
|
jsr IO.Reset.In
|
||||||
|
@ -37,7 +30,8 @@ IO.Set.In pha
|
||||||
pla
|
pla
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
sta (pPS),y
|
sta (pPS),y
|
||||||
IO.Set.RTS rts
|
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.Pop.In clc
|
IO.Pop.In clc
|
||||||
.HS B0 BCS
|
.HS B0 BCS
|
||||||
|
@ -55,16 +49,24 @@ IO.Reset.In sec
|
||||||
>STZ.G IO.hIn
|
>STZ.G IO.hIn
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
IO.Reset.In.RTS rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.Pipe.Out >PUSHEA.G IO.FIFO
|
IO.Pipe.Out ldy #IO.DEVFIFO+4
|
||||||
|
ldx #4
|
||||||
|
|
||||||
|
.1 lda DEV,x
|
||||||
|
sta (pData),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
>PUSHEA.G IO.DEVFIFO+5 leave room for /dev/
|
||||||
>PUSHWZ mode
|
>PUSHWZ mode
|
||||||
>SYSCALL MKFIFO
|
>SYSCALL MKFIFO
|
||||||
bcs IO.Reset.In.RTS Create a new PIPE
|
bcs .9
|
||||||
|
|
||||||
jsr IO.Pipe.OpenW Open for OUTPUT
|
jsr IO.Pipe.OpenW Open for OUTPUT
|
||||||
|
bcs .9
|
||||||
bcs IO.Reset.In.RTS
|
|
||||||
|
|
||||||
pha
|
pha
|
||||||
ldy #S.PS.hStdOut
|
ldy #S.PS.hStdOut
|
||||||
|
@ -74,7 +76,7 @@ IO.Pipe.Out >PUSHEA.G IO.FIFO
|
||||||
ldy #S.PS.hStdOut
|
ldy #S.PS.hStdOut
|
||||||
sta (pPS),y
|
sta (pPS),y
|
||||||
|
|
||||||
rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.Set.Out pha
|
IO.Set.Out pha
|
||||||
jsr IO.Reset.Out
|
jsr IO.Reset.Out
|
||||||
|
@ -135,7 +137,8 @@ IO.Pipe.OpenR ldx #O.RDONLY+O.TEXT
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
|
|
||||||
IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT
|
IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT
|
||||||
>LEA.G IO.FIFO
|
|
||||||
|
>LEA.G IO.DEVFIFO
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.FOpenYAX >PUSHYA
|
IO.FOpenYAX >PUSHYA
|
||||||
txa
|
txa
|
||||||
|
|
|
@ -220,7 +220,7 @@ CS.RUN jsr CL.Init
|
||||||
jmp CS.RUN.CMDLINE
|
jmp CS.RUN.CMDLINE
|
||||||
|
|
||||||
.1 jsr GetArgV Load SH batch file
|
.1 jsr GetArgV Load SH batch file
|
||||||
jsr IO.Load
|
>SYSCALL LoadTxtFile
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
phx X = loaded file hMem
|
phx X = loaded file hMem
|
||||||
|
@ -243,7 +243,7 @@ CS.RUN jsr CL.Init
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA L.HOME.PROFILE
|
>LDYA L.HOME.PROFILE
|
||||||
jsr IO.Load
|
>SYSCALL LoadTxtFile
|
||||||
bcs CS.RUN.LOOP No profile...
|
bcs CS.RUN.LOOP No profile...
|
||||||
|
|
||||||
>LDYA L.HOME.PROFILE
|
>LDYA L.HOME.PROFILE
|
||||||
|
@ -573,6 +573,8 @@ EscChars .AS 'DBAC'
|
||||||
EscChars.Cnt .EQ *-EscChars
|
EscChars.Cnt .EQ *-EscChars
|
||||||
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
|
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DEV .AS "/dev/"
|
||||||
|
*--------------------------------------
|
||||||
CD.. .AZ ".."
|
CD.. .AZ ".."
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IN .AZ "IN"
|
IN .AZ "IN"
|
||||||
|
@ -716,7 +718,7 @@ IO.hErr .BS 1
|
||||||
*M32.BUF .BS 12 -1234567890\0
|
*M32.BUF .BS 12 -1234567890\0
|
||||||
TimeBuf .EQ *
|
TimeBuf .EQ *
|
||||||
M32.BUF .EQ *
|
M32.BUF .EQ *
|
||||||
IO.FIFO .BS 12 /DEV/FIFOxx\0
|
IO.DEVFIFO .BS 12 /dev/fifoXX\0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -74,7 +74,7 @@ CS.RUN lda #DEFAULT.TIMEOUT
|
||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
>STYA ArgPtr
|
>STYA ArgPtr
|
||||||
lda #3
|
lda #3
|
||||||
sta TimeOut
|
sta Timeout
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.2 ldy #2
|
.2 ldy #2
|
||||||
|
@ -100,7 +100,7 @@ CS.RUN lda #DEFAULT.TIMEOUT
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>SYSCALL atol
|
>SYSCALL AToL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PULLL Timeout
|
>PULLL Timeout
|
||||||
|
|
|
@ -7,7 +7,6 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/kernel.i
|
|
||||||
.INB inc/mli.i
|
.INB inc/mli.i
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -8,7 +8,6 @@ NEW
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
.INB inc/kernel.i
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
|
|
|
@ -117,7 +117,7 @@ CS.RUN inc ArgIndex
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
tax
|
tax
|
||||||
lda OF.Table.hFD-1,x
|
lda Nod.Table.hFD-2,x
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
|
|
|
@ -83,7 +83,6 @@ CS.RUN >LDYA L.MSG0
|
||||||
|
|
||||||
ldx SessionID
|
ldx SessionID
|
||||||
lda S.Table.hFile-1,x
|
lda S.Table.hFile-1,x
|
||||||
tax
|
|
||||||
jsr CS.RUN.GetDevName
|
jsr CS.RUN.GetDevName
|
||||||
>PUSHYA 2 bytes DEV
|
>PUSHYA 2 bytes DEV
|
||||||
|
|
||||||
|
@ -106,12 +105,10 @@ CS.RUN >LDYA L.MSG0
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.GetDevName
|
CS.RUN.GetDevName
|
||||||
lda OF.Table.hPath-1,x
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
lda OF.Table.hFD-1,x
|
|
||||||
tax
|
tax
|
||||||
|
lsr
|
||||||
|
bcc .1
|
||||||
|
|
||||||
lda Dev.Table-1,x
|
lda Dev.Table-1,x
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
@ -123,7 +120,9 @@ CS.RUN.GetDevName
|
||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 >SYSCALL GetMemPtr
|
.1 lda Nod.Table.hFD-2,x
|
||||||
|
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.EVENT sec
|
CS.EVENT sec
|
||||||
|
|
|
@ -45,8 +45,7 @@ RESCALE 4 * CONSTANT S_ESCAPE
|
||||||
: DOESCAPE
|
: DOESCAPE
|
||||||
ZR_SQ ZI_SQ 2DUP +
|
ZR_SQ ZI_SQ 2DUP +
|
||||||
ESCAPES? IF
|
ESCAPES? IF
|
||||||
2DROP
|
DROP DROP 1
|
||||||
TRUE
|
|
||||||
ELSE
|
ELSE
|
||||||
- CREAL @ + \ leave result on stack
|
- CREAL @ + \ leave result on stack
|
||||||
ZREAL @ ZIMAG @ RESCALE */ 2 *
|
ZREAL @ ZIMAG @ RESCALE */ 2 *
|
||||||
|
|
|
@ -9,13 +9,14 @@ K.MEM.nALIGNm1 .EQ $F0
|
||||||
*K.MEM.ALIGN .EQ 64
|
*K.MEM.ALIGN .EQ 64
|
||||||
*K.MEM.nALIGNm1 .EQ $C0
|
*K.MEM.nALIGNm1 .EQ $C0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.DEV.MAX .EQ 28
|
K.DEV.MAX .EQ 32
|
||||||
K.FLT.MAX .EQ 4
|
|
||||||
K.NOD.MAX .EQ 32
|
K.NOD.MAX .EQ 32
|
||||||
K.OF.MAX .EQ 32
|
K.OF.MAX .EQ 32
|
||||||
K.USR.MAX .EQ 16
|
|
||||||
|
|
||||||
K.PS.MAX .EQ 32
|
K.PS.MAX .EQ 32
|
||||||
|
|
||||||
|
K.USR.MAX .EQ 16
|
||||||
|
K.FLT.MAX .EQ 4
|
||||||
|
|
||||||
K.EVT.MAX .EQ 4
|
K.EVT.MAX .EQ 4
|
||||||
K.TTY.MAX .EQ 8
|
K.TTY.MAX .EQ 8
|
||||||
K.IRQDEV.MAX .EQ 4
|
K.IRQDEV.MAX .EQ 4
|
||||||
|
@ -225,15 +226,15 @@ SYS.FEOF .EQ $3E
|
||||||
SYS.Remove .EQ $40
|
SYS.Remove .EQ $40
|
||||||
SYS.Rename .EQ $42
|
SYS.Rename .EQ $42
|
||||||
* STDIO2
|
* STDIO2
|
||||||
* .EQ $44
|
SYS.PrintF .EQ $44
|
||||||
* .EQ $46
|
SYS.FPrintF .EQ $46
|
||||||
SYS.PrintF .EQ $48
|
SYS.SPrintF .EQ $48
|
||||||
SYS.FPrintF .EQ $4A
|
SYS.ScanF .EQ $4A
|
||||||
SYS.SPrintF .EQ $4C
|
SYS.FScanF .EQ $4C
|
||||||
SYS.ScanF .EQ $4E
|
SYS.SScanF .EQ $4E
|
||||||
|
|
||||||
SYS.FScanF .EQ $50
|
* .EQ $50
|
||||||
SYS.SScanF .EQ $52
|
* .EQ $52
|
||||||
* .EQ $54
|
* .EQ $54
|
||||||
* .EQ $56
|
* .EQ $56
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,9 @@ NEW
|
||||||
IO.D2.SeekTimeR .EQ 140 LIBBLKDEV Recalibration
|
IO.D2.SeekTimeR .EQ 140 LIBBLKDEV Recalibration
|
||||||
IO.D2.SeekTimeF .EQ 65 LIBBLKDEV Track Formatter
|
IO.D2.SeekTimeF .EQ 65 LIBBLKDEV Track Formatter
|
||||||
IO.D2.SeekTimeB .EQ 65 LIBBLKDEV Boot Block
|
IO.D2.SeekTimeB .EQ 65 LIBBLKDEV Boot Block
|
||||||
IO.D2.SeekTimeP .EQ 65 ProDOS.FX initial
|
IO.D2.SeekTime0 .EQ 65 ProDOS.FX initial0
|
||||||
IO.D2.SeekTimeI .EQ 20 ProDOS.FX increment -> until > 128
|
IO.D2.SeekTimeP .EQ 30 ProDOS.FX initial
|
||||||
|
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.D2.Ph0Off .EQ $C080
|
IO.D2.Ph0Off .EQ $C080
|
||||||
IO.D2.Ph0On .EQ $C081
|
IO.D2.Ph0On .EQ $C081
|
||||||
|
|
|
@ -3,26 +3,23 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Mem.Table .EQ $0800
|
Mem.Table .EQ $0800
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Dev.Table .EQ $1300 K.Dev.MAX*2
|
Dev.Table .EQ $1300 K.DEV.MAX*2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Flt.Table.hPath .EQ $1338 K.FLT.MAX
|
Nod.Table.hName .EQ $1340 K.NOD.MAX*2
|
||||||
Flt.Table.hLib .EQ $133C K.FLT.MAX
|
Nod.Table.hFD .EQ $1341
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Nod.Table.hPath .EQ $1340 K.NOD.MAX
|
PS.Table.PID .EQ $1380 K.PS.MAX
|
||||||
Nod.Table.hFD .EQ $1360 K.NOD.MAX
|
PS.Table.hPS .EQ $13A0 K.PS.MAX
|
||||||
|
PS.Table.Hits .EQ $13C0 K.PS.MAX
|
||||||
|
PS.Table.Stats .EQ $13E0 K.PS.MAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OF.Table.hPath .EQ $1380 K.OF.MAX
|
S.Table.hSID .EQ $1400 K.USR.MAX
|
||||||
OF.Table.hFD .EQ $13A0 K.OF.MAX
|
S.Table.hFile .EQ $1410 K.USR.MAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.Table.PID .EQ $13C0 K.PS.MAX
|
Flt.Table.hPath .EQ $1420 K.FLT.MAX
|
||||||
PS.Table.hPS .EQ $13E0 K.PS.MAX
|
Flt.Table.hLib .EQ $1424 K.FLT.MAX
|
||||||
PS.Table.Hits .EQ $1400 K.PS.MAX
|
|
||||||
PS.Table.Stats .EQ $1420 K.PS.MAX
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.Table.hSID .EQ $1440 K.USR.MAX
|
A2osX.EndTables .EQ $1428
|
||||||
S.Table.hFile .EQ $1450 K.USR.MAX
|
|
||||||
*--------------------------------------
|
|
||||||
A2osX.EndTables .EQ $1460
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE inc/kernel.i
|
SAVE inc/kernel.i
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
--------------------------------------
|
*--------------------------------------
|
||||||
LIBCRYPT.MD5 .EQ 4
|
LIBCRYPT.MD5 .EQ 4
|
||||||
LIBCRYPT.MD5Init .EQ 6
|
LIBCRYPT.MD5Init .EQ 6
|
||||||
LIBCRYPT.MD5Update .EQ 8
|
LIBCRYPT.MD5Update .EQ 8
|
||||||
LIBCRYPT.MD5Finalize .EQ 10
|
LIBCRYPT.MD5Finalize .EQ 10
|
||||||
--------------------------------------
|
*--------------------------------------
|
||||||
S.MD5 STRUCT
|
* S.MD5 STRUCT
|
||||||
--------------------------------------
|
*--------------------------------------
|
||||||
S.MD5.ABCD0 .EQ 0
|
S.MD5.ABCD0 .EQ 0
|
||||||
S.MD5.A0 .EQ 0
|
S.MD5.A0 .EQ 0
|
||||||
S.MD5.B0 .EQ 4
|
S.MD5.B0 .EQ 4
|
||||||
|
@ -19,6 +19,6 @@ S.MD5.EXTRABIT .EQ 24
|
||||||
S.MD5.FINALIZED .EQ 25
|
S.MD5.FINALIZED .EQ 25
|
||||||
|
|
||||||
S.MD5 .EQ 26
|
S.MD5 .EQ 26
|
||||||
--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE inc/libcrypt.i
|
SAVE inc/libcrypt.i
|
||||||
|
|
|
@ -355,11 +355,7 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||||
.4 tay
|
.4 tay
|
||||||
|
|
||||||
lda IO.D2.Ph0On,x
|
lda IO.D2.Ph0On,x
|
||||||
nop
|
|
||||||
nop
|
|
||||||
lda IO.D2.Ph0On,y
|
lda IO.D2.Ph0On,y
|
||||||
nop
|
|
||||||
nop
|
|
||||||
|
|
||||||
lda #IO.D2.SeekTimeB
|
lda #IO.D2.SeekTimeB
|
||||||
jsr BB.Wait
|
jsr BB.Wait
|
||||||
|
@ -376,21 +372,12 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||||
bra BB.Read
|
bra BB.Read
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.PhasesOff bit IO.D2.Ph0Off,x
|
BB.PhasesOff bit IO.D2.Ph0Off,x
|
||||||
nop
|
|
||||||
nop
|
|
||||||
|
|
||||||
ldx IO.D2.Ph0Off,y
|
ldx IO.D2.Ph0Off,y
|
||||||
nop
|
|
||||||
nop
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.Wait phx (3)
|
BB.Wait phx (3)
|
||||||
|
|
||||||
.1 ldx BB.Slotn0 (3)
|
.1 ldx #19 (2)
|
||||||
bit IO.D2.RData,x (4)
|
|
||||||
|
|
||||||
ldx #18 (2)
|
|
||||||
|
|
||||||
.2 dex (2)
|
.2 dex (2)
|
||||||
bne .2 (3)
|
bne .2 (3)
|
||||||
|
|
|
@ -121,24 +121,18 @@ D2MoveHead.SEI ldx Slotn0
|
||||||
and #6
|
and #6
|
||||||
ora Slotn0
|
ora Slotn0
|
||||||
|
|
||||||
bcc .4
|
* bcc .4
|
||||||
|
|
||||||
* move out : invert 2 phases
|
* move out : invert 2 phases
|
||||||
|
|
||||||
phx
|
* phx
|
||||||
tax
|
* tax
|
||||||
pla
|
* pla
|
||||||
|
|
||||||
.4 tay
|
.4 tay
|
||||||
|
|
||||||
lda IO.D2.Ph0On,x
|
lda IO.D2.Ph0On,x
|
||||||
phx
|
|
||||||
ldx Slotn0
|
|
||||||
bit IO.D2.RData,x
|
|
||||||
|
|
||||||
lda IO.D2.Ph0On,y
|
lda IO.D2.Ph0On,y
|
||||||
bit IO.D2.RData,x
|
|
||||||
plx
|
|
||||||
|
|
||||||
lda #IO.D2.SeekTimeF
|
lda #IO.D2.SeekTimeF
|
||||||
jsr D2.Wait100usecA
|
jsr D2.Wait100usecA
|
||||||
|
@ -147,14 +141,8 @@ D2MoveHead.SEI ldx Slotn0
|
||||||
|
|
||||||
.7 jsr D2.Wait25600usec
|
.7 jsr D2.Wait25600usec
|
||||||
|
|
||||||
.8 pha
|
.8 bit IO.D2.Ph0Off,x
|
||||||
bit IO.D2.Ph0Off,x
|
ldx IO.D2.Ph0Off,y
|
||||||
ldx Slotn0
|
|
||||||
bit IO.D2.RData,x
|
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,y
|
|
||||||
bit IO.D2.RData,x
|
|
||||||
pla
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
D2.Wait25600usec
|
D2.Wait25600usec
|
||||||
|
@ -162,10 +150,7 @@ D2.Wait25600usec
|
||||||
|
|
||||||
D2.Wait100usecA phx
|
D2.Wait100usecA phx
|
||||||
|
|
||||||
.1 ldx Slotn0 (3)
|
.1 ldx #19 (2)
|
||||||
bit IO.D2.RData,x (4)
|
|
||||||
|
|
||||||
ldx #18 (2)
|
|
||||||
|
|
||||||
.2 dex (2)
|
.2 dex (2)
|
||||||
bne .2 (3)
|
bne .2 (3)
|
||||||
|
|
|
@ -2,13 +2,13 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FON.Init >LDYA L.SYSX7
|
FON.Init >LDYA L.SYSX7
|
||||||
jsr FON.Load
|
>SYSCALL2 LoadStkObj
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx hSYSFON
|
stx hSYSFON
|
||||||
|
|
||||||
>LDYA L.SYSX7B
|
>LDYA L.SYSX7B
|
||||||
jsr FON.Load
|
>SYSCALL2 LoadStkObj
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx hSYSFONB
|
stx hSYSFONB
|
||||||
|
@ -26,13 +26,6 @@ FON.Init >LDYA L.SYSX7
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FON.Load >PUSHYA
|
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI $CC Type
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL2 LoadStkObj
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
|
FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
|
||||||
stx CB.CACHE+S.CB.hFont
|
stx CB.CACHE+S.CB.hFont
|
||||||
|
|
||||||
|
|
|
@ -47,15 +47,15 @@ prostart lda unitnum
|
||||||
jsr setvid
|
jsr setvid
|
||||||
jsr setkbd
|
jsr setkbd
|
||||||
jsr home
|
jsr home
|
||||||
|
|
||||||
lda #32
|
lda #32
|
||||||
|
|
||||||
ldx #39
|
ldx #39
|
||||||
|
|
||||||
.1 sta $400,x
|
.1 sta $400,x
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
ldx #LDR.MSG.PRODOS
|
ldx #LDR.MSG.PRODOS
|
||||||
jsr LDR.PrintX
|
jsr LDR.PrintX
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ prostart lda unitnum
|
||||||
bmi LDR.UNSUPP.HW
|
bmi LDR.UNSUPP.HW
|
||||||
|
|
||||||
stz auxsp
|
stz auxsp
|
||||||
|
|
||||||
sta SETALTZP
|
sta SETALTZP
|
||||||
|
|
||||||
stz auxsp
|
stz auxsp
|
||||||
|
@ -94,7 +94,7 @@ prostart lda unitnum
|
||||||
|
|
||||||
LDR.CheckROM ldx #LDR.MSG.IIE
|
LDR.CheckROM ldx #LDR.MSG.IIE
|
||||||
lda #MACHID.T.IIe+MACHID.M.128+MACHID.COL80
|
lda #MACHID.T.IIe+MACHID.M.128+MACHID.COL80
|
||||||
|
|
||||||
ldy version check hardware id
|
ldy version check hardware id
|
||||||
cpy #$06 apple //e?
|
cpy #$06 apple //e?
|
||||||
beq .1 if yes
|
beq .1 if yes
|
||||||
|
@ -107,29 +107,29 @@ LDR.CheckROM ldx #LDR.MSG.IIE
|
||||||
|
|
||||||
.1 ldy zidbyte //c ?
|
.1 ldy zidbyte //c ?
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
ldy kbd //c, check for keypress
|
ldy kbd //c, check for keypress
|
||||||
cpy #$9B escape? (to disable accelerator)
|
cpy #$9B escape? (to disable accelerator)
|
||||||
bne .11
|
bne .11
|
||||||
sta KBDSTROBE clear keyboard
|
sta KBDSTROBE clear keyboard
|
||||||
|
|
||||||
.11 lda #MACHID.T.IIc+MACHID.M.128+MACHID.COL80
|
.11 lda #MACHID.T.IIc+MACHID.M.128+MACHID.COL80
|
||||||
ldx #LDR.MSG.IIC
|
ldx #LDR.MSG.IIC
|
||||||
bra m128k
|
bra m128k
|
||||||
|
|
||||||
.2 cpy #$EA
|
.2 cpy #$EA
|
||||||
beq LDR.UNSUPP.HW //e UNenh....
|
beq LDR.UNSUPP.HW //e UNenh....
|
||||||
|
|
||||||
cpy #$E0
|
cpy #$E0
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
ldx #LDR.MSG.UNKNOWN
|
ldx #LDR.MSG.UNKNOWN
|
||||||
bra m128k not a //e Enh....
|
bra m128k not a //e Enh....
|
||||||
|
|
||||||
.3 sec
|
.3 sec
|
||||||
jsr idroutine //gs ????
|
jsr idroutine //gs ????
|
||||||
bcs m128k no.....
|
bcs m128k no.....
|
||||||
|
|
||||||
inc LDR.cortland
|
inc LDR.cortland
|
||||||
ldx #LDR.MSG.IIGS
|
ldx #LDR.MSG.IIGS
|
||||||
lda #MACHID.T.IIe+MACHID.M.128+MACHID.COL80+MACHID.CLK
|
lda #MACHID.T.IIe+MACHID.M.128+MACHID.COL80+MACHID.CLK
|
||||||
|
@ -149,12 +149,12 @@ m128k sta idapple Save MACHID in temp location
|
||||||
jsr LDR.ScrInit80
|
jsr LDR.ScrInit80
|
||||||
|
|
||||||
ldx #$F
|
ldx #$F
|
||||||
|
|
||||||
.2 lda LDR.3F0,x
|
.2 lda LDR.3F0,x
|
||||||
sta $3F0,x
|
sta $3F0,x
|
||||||
dex
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
lda #$01 patch for the gs rom
|
lda #$01 patch for the gs rom
|
||||||
trb statereg to force off intcxrom
|
trb statereg to force off intcxrom
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ m128k sta idapple Save MACHID in temp location
|
||||||
ldy #ILDR.START
|
ldy #ILDR.START
|
||||||
lda /ILDR.START
|
lda /ILDR.START
|
||||||
jsr X.Unpak.XatYA
|
jsr X.Unpak.XatYA
|
||||||
|
|
||||||
ldx #PAKME.GP-PAKME.Table
|
ldx #PAKME.GP-PAKME.Table
|
||||||
ldy #MLI
|
ldy #MLI
|
||||||
lda /MLI
|
lda /MLI
|
||||||
|
@ -176,19 +176,19 @@ m128k sta idapple Save MACHID in temp location
|
||||||
jsr X.Unpak.XatYA
|
jsr X.Unpak.XatYA
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 stz FCBs,x
|
.1 stz FCBs,x
|
||||||
stz VCBs,x
|
stz VCBs,x
|
||||||
inx
|
inx
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldx #PAKME.XDOS-PAKME.Table
|
ldx #PAKME.XDOS-PAKME.Table
|
||||||
ldy #$DE00
|
ldy #$DE00
|
||||||
lda /$DE00
|
lda /$DE00
|
||||||
jsr X.Unpak.XatYA
|
jsr X.Unpak.XatYA
|
||||||
|
|
||||||
ldx #XDOS.DATA.LEN
|
ldx #XDOS.DATA.LEN
|
||||||
|
|
||||||
.3 stz XDOS.DATA-1,x
|
.3 stz XDOS.DATA-1,x
|
||||||
dex
|
dex
|
||||||
bne .3
|
bne .3
|
||||||
|
@ -211,7 +211,7 @@ LDR.IRQ lda RROMWRAMBNK2
|
||||||
sta CLRALTZP
|
sta CLRALTZP
|
||||||
stx irqv+1 save irq vector in main lc
|
stx irqv+1 save irq vector in main lc
|
||||||
sty irqv
|
sty irqv
|
||||||
|
|
||||||
lda #calldisp
|
lda #calldisp
|
||||||
sta jspare+1 P8 system death vector
|
sta jspare+1 P8 system death vector
|
||||||
lda /calldisp
|
lda /calldisp
|
||||||
|
@ -232,7 +232,7 @@ LDR.IIGS sta cortflag
|
||||||
sta cortdisp
|
sta cortdisp
|
||||||
lda /calldisp
|
lda /calldisp
|
||||||
sta cortdisp+1
|
sta cortdisp+1
|
||||||
|
|
||||||
* lda RROMWRAMBNK2
|
* lda RROMWRAMBNK2
|
||||||
|
|
||||||
* stz vmode force setvid to reset cursor
|
* stz vmode force setvid to reset cursor
|
||||||
|
@ -284,7 +284,7 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
|
||||||
.DA #MLIONLINE
|
.DA #MLIONLINE
|
||||||
.DA LDR.MLIOL.P
|
.DA LDR.MLIOL.P
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda pbuf+1 get volume name length.
|
lda pbuf+1 get volume name length.
|
||||||
and #$0F strip devnum
|
and #$0F strip devnum
|
||||||
beq .9
|
beq .9
|
||||||
|
@ -293,7 +293,7 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
|
||||||
sta pbuf save prefix length.
|
sta pbuf save prefix length.
|
||||||
lda #'/' place leading '/' in prefix buffer
|
lda #'/' place leading '/' in prefix buffer
|
||||||
sta pbuf+1
|
sta pbuf+1
|
||||||
|
|
||||||
jsr MLI
|
jsr MLI
|
||||||
.DA #MLISETPREFIX
|
.DA #MLISETPREFIX
|
||||||
.DA LDR.MLISETP.P
|
.DA LDR.MLISETP.P
|
||||||
|
@ -304,7 +304,7 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
|
||||||
lda /dbuf
|
lda /dbuf
|
||||||
ldy #$02 read directory into buffer
|
ldy #$02 read directory into buffer
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 sta dst+1
|
.1 sta dst+1
|
||||||
sta LDR.MLIRB.P+3 Data buf HI
|
sta LDR.MLIRB.P+3 Data buf HI
|
||||||
sty LDR.MLIRB.P+4 Blk Num LO
|
sty LDR.MLIRB.P+4 Blk Num LO
|
||||||
|
@ -329,7 +329,7 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
|
||||||
cmp /dbuf+$800 until it points past end of buffer.
|
cmp /dbuf+$800 until it points past end of buffer.
|
||||||
bcc .1 if ok, read next block.
|
bcc .1 if ok, read next block.
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
.8 jmp $800 jmp to "load interpreter" code
|
.8 jmp $800 jmp to "load interpreter" code
|
||||||
|
|
||||||
.9 ldx #LDR.MSG.ROOTERR
|
.9 ldx #LDR.MSG.ROOTERR
|
||||||
|
@ -414,14 +414,14 @@ LDR.ClkDevScan php
|
||||||
.8 plp
|
.8 plp
|
||||||
|
|
||||||
ldx #7
|
ldx #7
|
||||||
|
|
||||||
.9 lda DS1216E.DATA1,x
|
.9 lda DS1216E.DATA1,x
|
||||||
cmp DS1216E.DATA2,x
|
cmp DS1216E.DATA2,x
|
||||||
bne .90
|
bne .90
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bpl .9
|
bpl .9
|
||||||
|
|
||||||
bra LDR.ClkDevTCLK
|
bra LDR.ClkDevTCLK
|
||||||
|
|
||||||
.90 lda #'N'
|
.90 lda #'N'
|
||||||
|
@ -430,28 +430,51 @@ LDR.ClkDevScan php
|
||||||
bra LDR.SetupCLK
|
bra LDR.SetupCLK
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.ClkDevTCLK lda CLRC8ROM switch out $C8 ROMs
|
LDR.ClkDevTCLK lda CLRC8ROM switch out $C8 ROMs
|
||||||
|
|
||||||
stz idxl
|
stz idxl
|
||||||
lda #$C1
|
lda #$C1
|
||||||
sta idxl+1
|
sta idxl+1
|
||||||
|
|
||||||
.1 ldy #6
|
.1 ldy #6
|
||||||
|
|
||||||
.2 lda (idxl),y compare id bytes
|
.2 lda (idxl),y compare id bytes
|
||||||
cmp dskid,y
|
cmp dskid,y
|
||||||
bne .3
|
bne .3
|
||||||
dey
|
dey
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
|
lda idxl+1
|
||||||
|
and #$f
|
||||||
|
tax
|
||||||
|
sta CLRPAGE2
|
||||||
|
stz $478,x
|
||||||
|
stz $7f8,x
|
||||||
|
|
||||||
|
sta SETPAGE2
|
||||||
|
stz $478,x
|
||||||
|
stz $7f8,x
|
||||||
|
|
||||||
|
lda idxl+1
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
|
||||||
|
stz $c080,x
|
||||||
|
|
||||||
|
lda $c088,x
|
||||||
|
lda $c080,x
|
||||||
|
|
||||||
lda #'T'
|
lda #'T'
|
||||||
ldx PAKME.TCLK
|
ldx PAKME.TCLK
|
||||||
ldy PAKME.TCLK+1
|
ldy PAKME.TCLK+1
|
||||||
jsr LDR.SetupCLK
|
jsr LDR.SetupCLK
|
||||||
|
|
||||||
lda idxl+1
|
lda idxl+1
|
||||||
sta TCLK.Cx1+2
|
sta TCLK.Cx1+2
|
||||||
sta TCLK.Cx2+2
|
sta TCLK.Cx2+2
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 inc idxl+1
|
.3 inc idxl+1
|
||||||
|
@ -462,15 +485,15 @@ LDR.ClkDevTCLK lda CLRC8ROM switch out $C8 ROMs
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.SetupCLK stx ZPInBufPtr
|
LDR.SetupCLK stx ZPInBufPtr
|
||||||
sty ZPInBufPtr+1
|
sty ZPInBufPtr+1
|
||||||
|
|
||||||
sta LDR.MSG.CLK
|
sta LDR.MSG.CLK
|
||||||
|
|
||||||
bit RROMBNK2
|
bit RROMBNK2
|
||||||
ldx #LDR.MSG.CLK
|
ldx #LDR.MSG.CLK
|
||||||
jsr LDR.PrintX
|
jsr LDR.PrintX
|
||||||
|
|
||||||
jsr lc1in
|
jsr lc1in
|
||||||
|
|
||||||
lda #$D742
|
lda #$D742
|
||||||
sta ZPOutBufPtr
|
sta ZPOutBufPtr
|
||||||
lda /$D742
|
lda /$D742
|
||||||
|
@ -514,12 +537,12 @@ LDR.SetupRAM lda DEVCNT
|
||||||
ldx DEVCNT
|
ldx DEVCNT
|
||||||
lda #$BF unit num of /RAM
|
lda #$BF unit num of /RAM
|
||||||
sta DEVLST,x
|
sta DEVLST,x
|
||||||
|
|
||||||
ldx #LDR.MSG.RAM
|
ldx #LDR.MSG.RAM
|
||||||
jmp LDR.PrintX
|
jmp LDR.PrintX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* find all disk devices in system slots and set up address
|
* find all disk devices in system slots and set up address
|
||||||
* and device table in prodos global page.
|
* and device table in prodos global page.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.BlkDevScan stz idxl
|
LDR.BlkDevScan stz idxl
|
||||||
lda #$C7 search slots from high to low
|
lda #$C7 search slots from high to low
|
||||||
|
@ -527,10 +550,10 @@ LDR.BlkDevScan stz idxl
|
||||||
|
|
||||||
lda #7
|
lda #7
|
||||||
sta LDR.SlotIdx
|
sta LDR.SlotIdx
|
||||||
|
|
||||||
.1 ldx LDR.SlotIdx
|
.1 ldx LDR.SlotIdx
|
||||||
stz LDR.SlotDevType-1,x
|
stz LDR.SlotDevType-1,x
|
||||||
|
|
||||||
jsr LDR.CheckDiskID
|
jsr LDR.CheckDiskID
|
||||||
bcs .8 if no ProDOS device in this slot.
|
bcs .8 if no ProDOS device in this slot.
|
||||||
|
|
||||||
|
@ -562,7 +585,7 @@ LDR.BlkDevScan stz idxl
|
||||||
and #$03 verify it provides read and status calls.
|
and #$03 verify it provides read and status calls.
|
||||||
cmp #$03
|
cmp #$03
|
||||||
bne .7 assume it's an off-brand disk
|
bne .7 assume it's an off-brand disk
|
||||||
|
|
||||||
lda (idxl),y get back ID byte
|
lda (idxl),y get back ID byte
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
|
@ -575,7 +598,7 @@ LDR.BlkDevScan stz idxl
|
||||||
ldx LDR.SlotIdx
|
ldx LDR.SlotIdx
|
||||||
sta LDR.SlotDevCnt-1,x
|
sta LDR.SlotDevCnt-1,x
|
||||||
tax
|
tax
|
||||||
|
|
||||||
iny $CnFF
|
iny $CnFF
|
||||||
lda (idxl),y
|
lda (idxl),y
|
||||||
sta LDR.driveradr
|
sta LDR.driveradr
|
||||||
|
@ -588,7 +611,7 @@ LDR.BlkDevScan stz idxl
|
||||||
.7 ldx LDR.SlotIdx
|
.7 ldx LDR.SlotIdx
|
||||||
lda sltbit-1,x
|
lda sltbit-1,x
|
||||||
tsb rommap mark bit to flag rom present
|
tsb rommap mark bit to flag rom present
|
||||||
|
|
||||||
.8 dec idxl+1 next lower slot.
|
.8 dec idxl+1 next lower slot.
|
||||||
dec LDR.SlotIdx have all slots been checked ?
|
dec LDR.SlotIdx have all slots been checked ?
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -597,7 +620,7 @@ LDR.AddExtraDevs
|
||||||
* stz idxl
|
* stz idxl
|
||||||
lda #$C7
|
lda #$C7
|
||||||
sta idxl+1
|
sta idxl+1
|
||||||
|
|
||||||
lda #7
|
lda #7
|
||||||
sta LDR.SlotIdx
|
sta LDR.SlotIdx
|
||||||
|
|
||||||
|
@ -622,7 +645,7 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes
|
||||||
|
|
||||||
iny #$ff
|
iny #$ff
|
||||||
lda (idxl),y
|
lda (idxl),y
|
||||||
|
|
||||||
sta LDR.driveradr
|
sta LDR.driveradr
|
||||||
sta .1+1 modify operand
|
sta .1+1 modify operand
|
||||||
clc
|
clc
|
||||||
|
@ -650,8 +673,8 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes
|
||||||
stz bloknml+1
|
stz bloknml+1
|
||||||
|
|
||||||
.1 jsr $0000 SELF MODIFIED
|
.1 jsr $0000 SELF MODIFIED
|
||||||
|
|
||||||
ldy #$FB
|
ldy #$FB
|
||||||
lda (idxl),y check device id
|
lda (idxl),y check device id
|
||||||
and #$02 SCSI ?
|
and #$02 SCSI ?
|
||||||
beq .2 no, no need to init Cocoon
|
beq .2 no, no need to init Cocoon
|
||||||
|
@ -660,14 +683,14 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes
|
||||||
|
|
||||||
.2 lda #0 set unit# = 0
|
.2 lda #0 set unit# = 0
|
||||||
jsr LDR.SPStatusCall
|
jsr LDR.SPStatusCall
|
||||||
|
|
||||||
lda LDR.SPStatusBuf Device count
|
lda LDR.SPStatusBuf Device count
|
||||||
beq LDR.AddExtraDevs.RTS no devices, so done.
|
beq LDR.AddExtraDevs.RTS no devices, so done.
|
||||||
|
|
||||||
* sta LDR.DevCnt
|
* sta LDR.DevCnt
|
||||||
ldx LDR.SlotIdx
|
ldx LDR.SlotIdx
|
||||||
inc LDR.SlotDevType-1,x set as smartport
|
inc LDR.SlotDevType-1,x set as smartport
|
||||||
|
|
||||||
*.3 inc LDR.SPStatus.U
|
*.3 inc LDR.SPStatus.U
|
||||||
|
|
||||||
* jsr LDR.SPStatusCall.U call to get the device status
|
* jsr LDR.SPStatusCall.U call to get the device status
|
||||||
|
@ -675,13 +698,13 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes
|
||||||
|
|
||||||
* lda LDR.SPStatusBuf
|
* lda LDR.SPStatusBuf
|
||||||
* bpl .7 not a block device
|
* bpl .7 not a block device
|
||||||
|
|
||||||
* ldx LDR.SlotIdx
|
* ldx LDR.SlotIdx
|
||||||
* inc LDR.SlotDevCnt-1,x
|
* inc LDR.SlotDevCnt-1,x
|
||||||
|
|
||||||
*.7 dec LDR.DevCnt
|
*.7 dec LDR.DevCnt
|
||||||
* bne .3
|
* bne .3
|
||||||
|
|
||||||
* ldx LDR.SlotIdx
|
* ldx LDR.SlotIdx
|
||||||
* lda LDR.SlotDevCnt-1,x
|
* lda LDR.SlotDevCnt-1,x
|
||||||
* beq LDR.AddBlkDevs.RTS
|
* beq LDR.AddBlkDevs.RTS
|
||||||
|
@ -700,7 +723,7 @@ LDR.AddBlkDevs php how many drives (carry).
|
||||||
asl in high nibble.
|
asl in high nibble.
|
||||||
|
|
||||||
ora devid combine with attributes.
|
ora devid combine with attributes.
|
||||||
ldx DEVCNT
|
ldx DEVCNT
|
||||||
inx put device # into device list.
|
inx put device # into device list.
|
||||||
sta DEVLST,x
|
sta DEVLST,x
|
||||||
asl now form drive 2 device number, if any.
|
asl now form drive 2 device number, if any.
|
||||||
|
@ -725,7 +748,7 @@ LDR.AddBlkDevs php how many drives (carry).
|
||||||
sta DEVPTRS+17,y
|
sta DEVPTRS+17,y
|
||||||
|
|
||||||
.3
|
.3
|
||||||
LDR.AddBlkDevs.RTS
|
LDR.AddBlkDevs.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.AddExtraSPDevs
|
LDR.AddExtraSPDevs
|
||||||
|
@ -741,7 +764,7 @@ LDR.AddExtraSPDevs
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
jsr LDR.SPStatusCall do a status call on smartport itself
|
jsr LDR.SPStatusCall do a status call on smartport itself
|
||||||
|
|
||||||
lda LDR.SPStatusBuf # of devices on smartport
|
lda LDR.SPStatusBuf # of devices on smartport
|
||||||
|
|
||||||
cmp #$03
|
cmp #$03
|
||||||
|
@ -753,7 +776,7 @@ LDR.AddExtraSPDevs
|
||||||
|
|
||||||
lda #3
|
lda #3
|
||||||
sta LDR.SPStatus.U
|
sta LDR.SPStatus.U
|
||||||
|
|
||||||
.1 jsr LDR.SPStatusCall.U do status call
|
.1 jsr LDR.SPStatusCall.U do status call
|
||||||
|
|
||||||
lda LDR.SPStatusBuf is this a block device?
|
lda LDR.SPStatusBuf is this a block device?
|
||||||
|
@ -761,12 +784,12 @@ LDR.AddExtraSPDevs
|
||||||
|
|
||||||
jsr LDR.MountSPDevs
|
jsr LDR.MountSPDevs
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
.2 inc LDR.SPStatus.U
|
.2 inc LDR.SPStatus.U
|
||||||
|
|
||||||
dec LDR.DevCnt
|
dec LDR.DevCnt
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1
|
LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1
|
||||||
|
@ -779,19 +802,19 @@ LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1
|
||||||
lda DEVPTRS+1,y
|
lda DEVPTRS+1,y
|
||||||
cmp /nodevice
|
cmp /nodevice
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
.2 dex
|
.2 dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 jsr lc1in write enable LC ram bank 1.
|
.3 jsr lc1in write enable LC ram bank 1.
|
||||||
|
|
||||||
tya divide index by 2
|
tya divide index by 2
|
||||||
lsr
|
lsr
|
||||||
tax
|
tax
|
||||||
|
|
||||||
lda LDR.SPStatus.U
|
lda LDR.SPStatus.U
|
||||||
sta XDOS.SPUnit-1,x store the smartport unit #
|
sta XDOS.SPUnit-1,x store the smartport unit #
|
||||||
|
|
||||||
|
@ -823,7 +846,7 @@ LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.SPStatusCall
|
LDR.SPStatusCall
|
||||||
sta LDR.SPStatus.U device = 2 for SCSI
|
sta LDR.SPStatus.U device = 2 for SCSI
|
||||||
LDR.SPStatusCall.U
|
LDR.SPStatusCall.U
|
||||||
LDR.SPVect jsr $0000 self modifying
|
LDR.SPVect jsr $0000 self modifying
|
||||||
.HS 00
|
.HS 00
|
||||||
.DA LDR.SPStatus.P
|
.DA LDR.SPStatus.P
|
||||||
|
@ -871,17 +894,17 @@ LDR.ScrInit80 sta CLRC3ROM
|
||||||
lda #LOGO.PAKED
|
lda #LOGO.PAKED
|
||||||
sta ZPInBufPtr
|
sta ZPInBufPtr
|
||||||
lda /LOGO.PAKED
|
lda /LOGO.PAKED
|
||||||
sta ZPInBufPtr+1
|
sta ZPInBufPtr+1
|
||||||
|
|
||||||
stz ZPOutBufPtr
|
stz ZPOutBufPtr
|
||||||
lda #$A0
|
lda #$A0
|
||||||
sta ZPOutBufPtr+1
|
sta ZPOutBufPtr+1
|
||||||
|
|
||||||
jsr X.Unpak
|
jsr X.Unpak
|
||||||
|
|
||||||
sta CLRHIRES
|
sta CLRHIRES
|
||||||
sta SETMIXED
|
sta SETMIXED
|
||||||
|
|
||||||
bit RDIOUDIS
|
bit RDIOUDIS
|
||||||
sta SETIOUDIS
|
sta SETIOUDIS
|
||||||
sta SETDHIRES
|
sta SETDHIRES
|
||||||
|
@ -895,13 +918,13 @@ LDR.ScrInit80 sta CLRC3ROM
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
.1 pha
|
.1 pha
|
||||||
|
|
||||||
jsr GBSCALC
|
jsr GBSCALC
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.2 lda (ZPPtr1),y
|
.2 lda (ZPPtr1),y
|
||||||
pha
|
pha
|
||||||
|
|
||||||
|
@ -939,7 +962,7 @@ LDR.ScrInit80 sta CLRC3ROM
|
||||||
.4 lda (ZPPtr1),y
|
.4 lda (ZPPtr1),y
|
||||||
pha
|
pha
|
||||||
and #$f
|
and #$f
|
||||||
|
|
||||||
tax
|
tax
|
||||||
lda PALETTE.AUX,x
|
lda PALETTE.AUX,x
|
||||||
asl
|
asl
|
||||||
|
@ -968,20 +991,20 @@ LDR.ScrInit80 sta CLRC3ROM
|
||||||
iny
|
iny
|
||||||
cpy #40
|
cpy #40
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
lda ZPPtr1
|
lda ZPPtr1
|
||||||
clc
|
clc
|
||||||
adc #40
|
adc #40
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
bcc .7
|
bcc .7
|
||||||
|
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
|
|
||||||
.7 pla
|
.7 pla
|
||||||
inc
|
inc
|
||||||
cmp #20
|
cmp #20
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.FIN
|
.FIN
|
||||||
jsr CLREOL
|
jsr CLREOL
|
||||||
jsr setnorm
|
jsr setnorm
|
||||||
|
@ -1000,10 +1023,10 @@ LDR.PrintX bit RROMBNK2
|
||||||
inx
|
inx
|
||||||
pla
|
pla
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
lda #$A0
|
lda #$A0
|
||||||
jsr COUT
|
jsr COUT
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta INVFLG
|
sta INVFLG
|
||||||
rts
|
rts
|
||||||
|
@ -1102,7 +1125,7 @@ LDR.MLIOL.P .DA #2
|
||||||
|
|
||||||
LDR.MLISETP.P .DA #1
|
LDR.MLISETP.P .DA #1
|
||||||
.DA pbuf
|
.DA pbuf
|
||||||
|
|
||||||
.DO READCAT=1
|
.DO READCAT=1
|
||||||
LDR.MLIRB.P .DA #3
|
LDR.MLIRB.P .DA #3
|
||||||
.DA #0 unit number
|
.DA #0 unit number
|
||||||
|
|
|
@ -549,17 +549,20 @@ XRW.Write.RTS rts (6)
|
||||||
* for motor on timing.
|
* for motor on timing.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.WaitSeekTime
|
XRW.WaitSeekTime
|
||||||
lda XRW.SeekTime
|
* lda XRW.SeekCnt
|
||||||
|
* bne .1
|
||||||
|
* inc XRW.SeekCnt
|
||||||
|
|
||||||
|
lda #IO.D2.SeekTime0
|
||||||
|
* bra XRW.Wait100usecA
|
||||||
|
*.1 lda XRW.SeekTime
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
XRW.Wait25600usec
|
XRW.Wait25600usec
|
||||||
lda #0
|
lda #0
|
||||||
XRW.Wait100usecA
|
XRW.Wait100usecA
|
||||||
phx
|
phx
|
||||||
|
|
||||||
.1 ldx A2L (3)
|
.1 ldx #17 (2)
|
||||||
bit IO.D2.RData,x (4)
|
|
||||||
|
|
||||||
ldx #16 (2)
|
|
||||||
|
|
||||||
.2 dex (2)
|
.2 dex (2)
|
||||||
bne .2 (3)
|
bne .2 (3)
|
||||||
|
@ -573,7 +576,7 @@ XRW.Wait100usecA
|
||||||
bne .1 (3)
|
bne .1 (3)
|
||||||
|
|
||||||
plx
|
plx
|
||||||
rts (6)
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* read subroutine (16-sector format)
|
* read subroutine (16-sector format)
|
||||||
*
|
*
|
||||||
|
@ -730,7 +733,6 @@ XRW.Read.RTS rts
|
||||||
* A = target track
|
* A = target track
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.Seek ldx XRW.UnitIndex
|
XRW.Seek ldx XRW.UnitIndex
|
||||||
|
|
||||||
pha save target track
|
pha save target track
|
||||||
|
|
||||||
jsr XRW.Trk2Qtrk
|
jsr XRW.Trk2Qtrk
|
||||||
|
@ -744,6 +746,8 @@ XRW.Seek ldx XRW.UnitIndex
|
||||||
pla
|
pla
|
||||||
sta XRW.D2Trk-1,x will be current track at the end
|
sta XRW.D2Trk-1,x will be current track at the end
|
||||||
|
|
||||||
|
stz XRW.SeekCnt
|
||||||
|
|
||||||
ldx A2L
|
ldx A2L
|
||||||
ldy A2L
|
ldy A2L
|
||||||
|
|
||||||
|
@ -790,24 +794,18 @@ XRW.Seek ldx XRW.UnitIndex
|
||||||
and #6
|
and #6
|
||||||
ora A2L
|
ora A2L
|
||||||
|
|
||||||
bcc .4
|
* bcc .4
|
||||||
|
|
||||||
* move out : invert 2 phases
|
* move out : invert 2 phases
|
||||||
|
|
||||||
phx
|
* phx
|
||||||
tax
|
* tax
|
||||||
pla
|
* pla
|
||||||
|
|
||||||
.4 tay
|
.4 tay
|
||||||
|
|
||||||
lda IO.D2.Ph0On,x
|
lda IO.D2.Ph0On,x
|
||||||
phx
|
|
||||||
ldx A2L
|
|
||||||
bit IO.D2.RData,x
|
|
||||||
|
|
||||||
lda IO.D2.Ph0On,y
|
lda IO.D2.Ph0On,y
|
||||||
bit IO.D2.RData,x
|
|
||||||
plx
|
|
||||||
|
|
||||||
jsr XRW.WaitSeekTime
|
jsr XRW.WaitSeekTime
|
||||||
|
|
||||||
|
@ -815,14 +813,8 @@ XRW.Seek ldx XRW.UnitIndex
|
||||||
|
|
||||||
.7 jsr XRW.Wait25600usec
|
.7 jsr XRW.Wait25600usec
|
||||||
|
|
||||||
.8 pha
|
.8 bit IO.D2.Ph0Off,x
|
||||||
bit IO.D2.Ph0Off,x
|
ldx IO.D2.Ph0Off,y
|
||||||
ldx A2L
|
|
||||||
bit IO.D2.RData,x
|
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,y
|
|
||||||
bit IO.D2.RData,x
|
|
||||||
pla
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.Reset ldx A2L
|
XRW.Reset ldx A2L
|
||||||
|
@ -1024,7 +1016,9 @@ XRW.CurrentQTrack .HS 00
|
||||||
* .HS FF
|
* .HS FF
|
||||||
XRW.TargetQTrack .HS 00
|
XRW.TargetQTrack .HS 00
|
||||||
.HS B0B4B8BCC0C4C8
|
.HS B0B4B8BCC0C4C8
|
||||||
.HS FFFF
|
* .HS FFFF
|
||||||
|
.HS FF
|
||||||
|
XRW.SeekCnt .HS 00
|
||||||
.HS CCD0D4D8DCE0
|
.HS CCD0D4D8DCE0
|
||||||
XRW.bWrite .HS 00
|
XRW.bWrite .HS 00
|
||||||
.HS E4E8ECF0F4F8FC
|
.HS E4E8ECF0F4F8FC
|
||||||
|
|
|
@ -4,7 +4,7 @@ NEW
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF sbin/initd
|
.TF sbin/initd
|
||||||
*---------------------------------------
|
*--------------------------------------
|
||||||
INITDDBG .EQ 0
|
INITDDBG .EQ 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
|
@ -62,10 +62,13 @@ CS.RUN ldy #S.PS.PID
|
||||||
cmp #1
|
cmp #1
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
|
* bra .55
|
||||||
|
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>SYSCALL FEOF
|
>SYSCALL FEOF
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
tay
|
tay
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
@ -75,6 +78,7 @@ CS.RUN ldy #S.PS.PID
|
||||||
cmp #18 CTRL-R for Root mode
|
cmp #18 CTRL-R for Root mode
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
*.55
|
||||||
>LDYA L.MSG.CTRLR
|
>LDYA L.MSG.CTRLR
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
|
|
||||||
|
|
|
@ -158,6 +158,7 @@ BIN.Load.1 >PUSHWI K.Buf256
|
||||||
>LDYA K.S.STAT+S.STAT.P.AUXTYPE
|
>LDYA K.S.STAT+S.STAT.P.AUXTYPE
|
||||||
>STYA BIN.R.CS.Start
|
>STYA BIN.R.CS.Start
|
||||||
>PUSHYA Push AUXTYPE
|
>PUSHYA Push AUXTYPE
|
||||||
|
|
||||||
jsr K.LoadFile
|
jsr K.LoadFile
|
||||||
bcs .9 Error Loading file
|
bcs .9 Error Loading file
|
||||||
|
|
||||||
|
@ -425,6 +426,6 @@ BIN.65R02 .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
||||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
|
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.BIN
|
SAVE usr/src/sys/kernel.s.bin
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -12,7 +12,7 @@ CORE.Run ldx #1
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA pPs
|
>STYA pPs
|
||||||
lda (pPS) get S.PS.F
|
lda (pPS) get S.PS.F
|
||||||
* bit #S.PS.F.HOLD Waiting for Another Task to Terminate?
|
* bit #S.PS.F.HOLD Waiting for Another Task to Terminate?
|
||||||
* beq .2
|
* beq .2
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ CORE.Run ldx #1
|
||||||
bra .7
|
bra .7
|
||||||
|
|
||||||
.5 cmp #S.PS.S.QUIT
|
.5 cmp #S.PS.S.QUIT
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
ldy #S.PS.PID
|
ldy #S.PS.PID
|
||||||
|
@ -62,7 +62,7 @@ CORE.Run ldx #1
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
jmp CORE.Quit
|
jmp CORE.Quit
|
||||||
|
|
||||||
.6 >SYSCALL2 Kill
|
.6 >SYSCALL2 Kill
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ CORE.Events jsr CORE.GetEvents
|
||||||
sta pEvent
|
sta pEvent
|
||||||
lda CORE.EvtCount
|
lda CORE.EvtCount
|
||||||
bne .1
|
bne .1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.4 bit OPENAPPLE
|
.4 bit OPENAPPLE
|
||||||
bpl .8
|
bpl .8
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ CORE.Events jsr CORE.GetEvents
|
||||||
|
|
||||||
cmp A2osX.ASCREEN Same as active screen...nothing to do
|
cmp A2osX.ASCREEN Same as active screen...nothing to do
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHBI IOCTL.CONTROL request
|
>PUSHBI IOCTL.CONTROL request
|
||||||
>PUSHWZ Param
|
>PUSHWZ Param
|
||||||
|
@ -136,7 +136,7 @@ CORE.Quit php
|
||||||
|
|
||||||
lda IRQ.INTNUM
|
lda IRQ.INTNUM
|
||||||
sta K.MLI.PARAMS+1
|
sta K.MLI.PARAMS+1
|
||||||
|
|
||||||
>MLICALL MLIDEALLOCIRQ
|
>MLICALL MLIDEALLOCIRQ
|
||||||
|
|
||||||
ldx #5
|
ldx #5
|
||||||
|
@ -144,7 +144,7 @@ CORE.Quit php
|
||||||
.1 stz K.MLI.PARAMS+1,x
|
.1 stz K.MLI.PARAMS+1,x
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
lda #4
|
lda #4
|
||||||
ldx #MLIQUIT
|
ldx #MLIQUIT
|
||||||
jmp GP.MLICall
|
jmp GP.MLICall
|
||||||
|
@ -160,7 +160,7 @@ CORE.UpdateParentPS
|
||||||
bcs .8 parent is dead.....skipping...
|
bcs .8 parent is dead.....skipping...
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
lda (ZPPtr1) Parent PS is HOLD?
|
lda (ZPPtr1) Parent PS is HOLD?
|
||||||
bit #S.PS.F.HOLD
|
bit #S.PS.F.HOLD
|
||||||
beq .8 no...
|
beq .8 no...
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ CORE.UpdateParentPS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CORE.GetEvents :
|
* CORE.GetEvents :
|
||||||
* IN :
|
* IN :
|
||||||
* OUT :
|
* OUT :
|
||||||
* CS = no event, A = ERROR
|
* CS = no event, A = ERROR
|
||||||
* CC * event in YA
|
* CC * event in YA
|
||||||
* (pEvent)
|
* (pEvent)
|
||||||
|
@ -202,7 +202,7 @@ CORE.GetEvents lda #Evt.Table
|
||||||
|
|
||||||
.1 lda VBL get VLINE status
|
.1 lda VBL get VLINE status
|
||||||
tax
|
tax
|
||||||
eor CORE.VBLState
|
eor CORE.VBLState
|
||||||
bpl .8 no change,no tick
|
bpl .8 no change,no tick
|
||||||
|
|
||||||
txa
|
txa
|
||||||
|
@ -230,7 +230,7 @@ CORE.GetEvents lda #Evt.Table
|
||||||
|
|
||||||
.3 dec CORE.Tick10t
|
.3 dec CORE.Tick10t
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
.4 inc DevMgr.Timer
|
.4 inc DevMgr.Timer
|
||||||
inc A2osX.TIMER16
|
inc A2osX.TIMER16
|
||||||
bne .5
|
bne .5
|
||||||
|
@ -264,14 +264,14 @@ CORE.GetEvents lda #Evt.Table
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CORE.Dispatch
|
* CORE.Dispatch
|
||||||
* IN:
|
* IN:
|
||||||
* OUT:
|
* OUT:
|
||||||
* CS: Not Dispatched
|
* CS: Not Dispatched
|
||||||
* CC: Event Cleared
|
* CC: Event Cleared
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Dispatch ldx #1 skip PS0
|
CORE.Dispatch ldx #1 skip PS0
|
||||||
bra .80
|
bra .80
|
||||||
|
|
||||||
.1 stx CORE.PSIndex
|
.1 stx CORE.PSIndex
|
||||||
|
|
||||||
lda PS.Table.hPS,x
|
lda PS.Table.hPS,x
|
||||||
|
@ -279,7 +279,7 @@ CORE.Dispatch ldx #1 skip PS0
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA pPS
|
>STYA pPS
|
||||||
|
|
||||||
lda (pPS)
|
lda (pPS)
|
||||||
bit #S.PS.F.EVENT Accept Events ?
|
bit #S.PS.F.EVENT Accept Events ?
|
||||||
beq .5
|
beq .5
|
||||||
|
@ -321,12 +321,12 @@ CORE.Dispatch ldx #1 skip PS0
|
||||||
lda #S.PS.S.RUN
|
lda #S.PS.S.RUN
|
||||||
sta (pPS),y
|
sta (pPS),y
|
||||||
jsr CORE.PSLeave
|
jsr CORE.PSLeave
|
||||||
|
|
||||||
.5 ldx CORE.PSIndex
|
.5 ldx CORE.PSIndex
|
||||||
inx
|
inx
|
||||||
.80 cpx CORE.PSCount
|
.80 cpx CORE.PSCount
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
* sec
|
* sec
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
@ -368,7 +368,7 @@ CORE.GetPS.RTS rts
|
||||||
CORE.DestroyEvent
|
CORE.DestroyEvent
|
||||||
lda (pEvent)
|
lda (pEvent)
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
bit #S.EVT.F.hMEM1
|
bit #S.EVT.F.hMEM1
|
||||||
beq .1
|
beq .1
|
||||||
pha
|
pha
|
||||||
|
@ -394,12 +394,12 @@ CORE.PSSelect ldy #S.PS.ZP.CODE+PSCTX.SIZE-1
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.PSLeave ldx #PSCTX.SIZE-1
|
CORE.PSLeave ldx #PSCTX.SIZE-1
|
||||||
ldy #S.PS.ZP.CODE+PSCTX.SIZE-1
|
ldy #S.PS.ZP.CODE+PSCTX.SIZE-1
|
||||||
|
|
||||||
.1 lda pCode,x
|
.1 lda pCode,x
|
||||||
sta (pPS),y
|
sta (pPS),y
|
||||||
dey
|
dey
|
||||||
|
@ -429,7 +429,7 @@ CORE.PSResume sei
|
||||||
eor #S.PS.F.SLEEP unmark as SLEEP
|
eor #S.PS.F.SLEEP unmark as SLEEP
|
||||||
sta (pPS)
|
sta (pPS)
|
||||||
|
|
||||||
>PULLA Get !BC
|
>PULLA Get !BC
|
||||||
tax
|
tax
|
||||||
|
|
||||||
beq .2
|
beq .2
|
||||||
|
@ -508,9 +508,9 @@ CORE.EvtCount .BS 1
|
||||||
CORE.IRQ.IIGS lda IO.IIGS.INTFLAG
|
CORE.IRQ.IIGS lda IO.IIGS.INTFLAG
|
||||||
and #$08
|
and #$08
|
||||||
beq CORE.IRQ.DEV
|
beq CORE.IRQ.DEV
|
||||||
|
|
||||||
stz IO.IIGS.CLRVBLINT
|
stz IO.IIGS.CLRVBLINT
|
||||||
|
|
||||||
bra CORE.IRQ.Switch
|
bra CORE.IRQ.Switch
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.IRQ.TCLOCK ldy IRQ.n0
|
CORE.IRQ.TCLOCK ldy IRQ.n0
|
||||||
|
@ -552,10 +552,10 @@ CORE.IRQ.Switch inc IRQ.Tick
|
||||||
sta PS.Table.Stats,x
|
sta PS.Table.Stats,x
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
.2 lda IRQ.InKernel
|
.2 lda IRQ.InKernel
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
inc PS.Table.Hits
|
inc PS.Table.Hits
|
||||||
|
|
||||||
.9 clv
|
.9 clv
|
||||||
|
@ -577,7 +577,7 @@ CORE.IRQ.Switch inc IRQ.Tick
|
||||||
|
|
||||||
.8 clc exit with V flag set
|
.8 clc exit with V flag set
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.IRQ.DEV ldx #0
|
CORE.IRQ.DEV ldx #0
|
||||||
.1 lda IRQ.Vectors+1,x
|
.1 lda IRQ.Vectors+1,x
|
||||||
beq .9
|
beq .9
|
||||||
|
@ -605,18 +605,18 @@ CORE.IRQ.IIGS.Off
|
||||||
CORE.IRQ.TCLOCK.Off
|
CORE.IRQ.TCLOCK.Off
|
||||||
ldx IRQ.n0
|
ldx IRQ.n0
|
||||||
stz $c080,x
|
stz $c080,x
|
||||||
|
|
||||||
|
lda $c088,x
|
||||||
|
lda $c080,x
|
||||||
|
|
||||||
ldx IRQ.0n
|
ldx IRQ.0n
|
||||||
sta CLRPAGE2
|
sta CLRPAGE2
|
||||||
stz $478,x
|
stz $478,x
|
||||||
stz $7f8,x
|
stz $7f8,x
|
||||||
|
|
||||||
sta SETPAGE2
|
sta SETPAGE2
|
||||||
stz $478,x
|
stz $478,x
|
||||||
stz $7f8,x
|
stz $7f8,x
|
||||||
|
|
||||||
lda $c088,y
|
|
||||||
lda $c080,y
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -642,6 +642,6 @@ IRQ.Tick .BS 1
|
||||||
IRQ.Vectors .BS K.IRQDEV.MAX*2
|
IRQ.Vectors .BS K.IRQDEV.MAX*2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.CORE
|
SAVE usr/src/sys/kernel.s.core
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -15,9 +15,9 @@ pIOBuf .EQ ZPKERNEL+14
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPMEMMGR .EQ $10
|
ZPMEMMGR .EQ $10
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SIGNFLG .EQ $16 COS,SIN,TAN
|
*SIGNFLG .EQ $16 COS,SIN,TAN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* AuxMove / XFer
|
* XMov / XFer
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A1L .EQ $3C
|
A1L .EQ $3C
|
||||||
A2L .EQ $3E
|
A2L .EQ $3E
|
||||||
|
@ -25,7 +25,7 @@ A4L .EQ $42
|
||||||
|
|
||||||
*XFer.JMP .EQ $3ED
|
*XFer.JMP .EQ $3ED
|
||||||
|
|
||||||
AuxMove .EQ $C311
|
XMov .EQ $C311
|
||||||
XFer .EQ $C314 CS:M->X, VS:Use Aux ZP
|
XFer .EQ $C314 CS:M->X, VS:Use Aux ZP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* $42-$47 ProDOS Block Device Drivers Main
|
* $42-$47 ProDOS Block Device Drivers Main
|
||||||
|
@ -113,11 +113,12 @@ PS.NewPSPtr .BS 2
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPTMP+20 7 Bytes
|
.OR ZPTMP+20 6 Bytes
|
||||||
IO.Open.FLAGS .BS 1
|
IO.Open.FLAGS .BS 1
|
||||||
IO.Open.TYPE .BS 1
|
IO.Open.TYPE .BS 1
|
||||||
IO.Open.AUXTYPE .BS 2
|
IO.Open.AUXTYPE .BS 2
|
||||||
IO.hFD .BS 1
|
IO.hFD .BS 1
|
||||||
|
IO.hDevNod .BS 1
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.SaveSM .EQ $100 Aux
|
A2osX.SaveSM .EQ $100 Aux
|
||||||
|
@ -240,6 +241,6 @@ S.MD5.FINALIZED .EQ 25
|
||||||
S.MD5 .EQ 26
|
S.MD5 .EQ 26
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.DEF
|
SAVE usr/src/sys/kernel.s.def
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -9,44 +9,91 @@ NEW
|
||||||
* X = hDev
|
* X = hDev
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetDevByName >STYA ZPPtr1 requested dev name
|
K.GetDevByName >STYA ZPPtr1 requested dev name
|
||||||
|
|
||||||
ldx #1
|
ldx #1
|
||||||
|
|
||||||
.1 jsr SHARED.GetDevFD
|
.1 lda Dev.Table,x
|
||||||
bcs K.GetDev.NODEV
|
beq .4
|
||||||
|
|
||||||
|
sta pFD+1
|
||||||
pha
|
pha
|
||||||
tya
|
|
||||||
* clc
|
lda Dev.Table-1,x
|
||||||
|
sta pFD
|
||||||
|
|
||||||
|
clc
|
||||||
adc #S.FD.DEV
|
adc #S.FD.DEV
|
||||||
sta ZPPtr2
|
tay
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
adc /S.FD.DEV
|
adc /S.FD.DEV
|
||||||
sta ZPPtr2+1
|
|
||||||
|
|
||||||
ldy #$ff
|
jsr .8
|
||||||
|
bcs .3
|
||||||
|
|
||||||
.2 iny
|
jsr DEV.GetPDrv
|
||||||
lda (ZPPtr1),y
|
|
||||||
cmp (ZPPtr2),y
|
|
||||||
bne .7
|
|
||||||
|
|
||||||
ora (ZPPtr2),y Both char are 0 ?
|
>LDYA pFD X = hDevNod
|
||||||
bne .2
|
|
||||||
|
|
||||||
beq SHARED.GetDevFD yes, get Ptr
|
|
||||||
|
|
||||||
.7 inx no....loop
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 inx no....loop
|
||||||
inx
|
inx
|
||||||
cpx #K.DEV.MAX*2+1
|
cpx #K.DEV.MAX*2+1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
K.GetDev.NODEV lda #MLI.E.NODEV
|
.4 ldx #2
|
||||||
|
|
||||||
|
.5 lda Nod.Table.hFD-2,x
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
lda Nod.Table.hName-2,x
|
||||||
|
beq .7
|
||||||
|
jsr K.GetMemPtr
|
||||||
|
|
||||||
|
jsr .8
|
||||||
|
bcs .7
|
||||||
|
|
||||||
|
lda Nod.Table.hFD-2,x
|
||||||
|
jsr K.GetMemPtr Y,A = pPD, X = hDevNod
|
||||||
|
|
||||||
|
>STYA pFD for UNISTD.Open
|
||||||
|
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.7 inx
|
||||||
|
inx
|
||||||
|
cpx #K.NOD.MAX*2+2
|
||||||
|
bne .5
|
||||||
|
|
||||||
|
.9 lda #MLI.E.NODEV
|
||||||
sec
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
.8 >STYA ZPPtr2
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
|
.80 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
cmp (ZPPtr2),y
|
||||||
|
bne .89
|
||||||
|
|
||||||
|
eor #0
|
||||||
|
bne .80
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.89 sec
|
||||||
|
|
||||||
K.GetDev.9 rts
|
K.GetDev.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetDevStatus
|
* # GetDevStatus
|
||||||
* ## C
|
* ## C
|
||||||
* `int getdevstatus(short int DevID, S.DIB *dstat);`
|
* `int getdevstatus(short int DevID, S.DIB *dstat);`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* `>PUSHB DevID`
|
* `>PUSHB DevID`
|
||||||
|
@ -56,33 +103,23 @@ K.GetDev.9 rts
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
>PULLA
|
>PULLA
|
||||||
tax
|
|
||||||
|
jsr DEV.GetPFD
|
||||||
jsr SHARED.GetDevFD
|
|
||||||
bcs K.GetDev.9
|
bcs K.GetDev.9
|
||||||
>STYA pFD
|
|
||||||
|
|
||||||
lda #S.IOCTL.STATCODE.GETDIB
|
lda #S.IOCTL.STATCODE.GETDIB
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHARED.GetDevStatus
|
DEV.GetDevStatus
|
||||||
sta K.S.IOCTL+S.IOCTL.STATCODE
|
sta K.S.IOCTL+S.IOCTL.STATCODE
|
||||||
|
|
||||||
ldy #S.FD.DEV.DEVID
|
ldy #S.FD.DEV.DEVID
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
sta K.S.IOCTL+S.IOCTL.UNITNUM
|
sta K.S.IOCTL+S.IOCTL.UNITNUM
|
||||||
|
|
||||||
jsr SHARED.GetPDrv
|
|
||||||
|
|
||||||
>LDYAI K.S.IOCTL
|
>LDYAI K.S.IOCTL
|
||||||
ldx #IOCTL.STATUS
|
ldx #IOCTL.STATUS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHARED.pDrvJmp jmp (pDrv)
|
DEV.pDrvJmp jmp (pDrv)
|
||||||
*--------------------------------------
|
|
||||||
SHARED.GetDevFD lda Dev.Table,x
|
|
||||||
beq K.GetDev.NODEV
|
|
||||||
ldy Dev.Table-1,x
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # MKDev
|
* # MKDev
|
||||||
* Create a hDEV
|
* Create a hDEV
|
||||||
|
@ -96,11 +133,21 @@ SHARED.GetDevFD lda Dev.Table,x
|
||||||
* A = hDEV
|
* A = hDEV
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.MKDev >PULLW ZPPtr2 ptr2=name
|
K.MKDev >PULLW ZPPtr2 ptr2=name
|
||||||
>PULLW ZPPtr1 ptr1=fd
|
>PULLW ZPPtr1 ptr1=fd
|
||||||
|
|
||||||
ldx DevMgr.DevIdx
|
ldx #1
|
||||||
|
|
||||||
|
.10 lda Dev.Table,x
|
||||||
|
beq .11
|
||||||
|
|
||||||
|
inx
|
||||||
|
inx
|
||||||
cpx #K.DEV.MAX*2+1
|
cpx #K.DEV.MAX*2+1
|
||||||
beq .9
|
bne .10
|
||||||
|
|
||||||
|
bra .9
|
||||||
|
|
||||||
|
.11 stx IO.hDevNod
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
ldx #S.FD.DEV
|
ldx #S.FD.DEV
|
||||||
|
@ -120,7 +167,7 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
|
||||||
>STYA pFD
|
>STYA pFD
|
||||||
>STYA .4+1
|
>STYA .4+1
|
||||||
|
|
||||||
ldx DevMgr.DevIdx
|
ldx IO.hDevNod
|
||||||
sta Dev.Table,x
|
sta Dev.Table,x
|
||||||
tya
|
tya
|
||||||
sta Dev.Table-1,x
|
sta Dev.Table-1,x
|
||||||
|
@ -144,8 +191,10 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
|
||||||
>LDYAI K.IOBuf
|
>LDYAI K.IOBuf
|
||||||
>STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
>STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
|
|
||||||
lda #S.IOCTL.STATCODE.STATUS
|
jsr DEV.GetPDrv
|
||||||
jsr SHARED.GetDevStatus
|
|
||||||
|
lda #S.IOCTL.STATCODE.STATUS
|
||||||
|
jsr DEV.GetDevStatus
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda K.IOBuf Get Status byte
|
lda K.IOBuf Get Status byte
|
||||||
|
@ -172,10 +221,8 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
|
||||||
iny
|
iny
|
||||||
lda (pDRV),y
|
lda (pDRV),y
|
||||||
sta IRQ.Vectors+1,x
|
sta IRQ.Vectors+1,x
|
||||||
|
|
||||||
.8 lda DevMgr.DevIdx
|
.8 lda IO.hDevNod
|
||||||
inc DevMgr.DevIdx
|
|
||||||
inc DevMgr.DevIdx
|
|
||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
@ -192,14 +239,10 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.IOCTL ldy #3 hDev
|
K.IOCTL ldy #3 hDev
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
tax
|
|
||||||
|
|
||||||
jsr SHARED.GetDevFD
|
|
||||||
bcs .9
|
|
||||||
>STYA pFD
|
|
||||||
|
|
||||||
jsr SHARED.GetPDrv
|
jsr DEV.GetPFD
|
||||||
|
bcs .9
|
||||||
|
|
||||||
ldy #2 request
|
ldy #2 request
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
tax
|
tax
|
||||||
|
@ -207,12 +250,90 @@ K.IOCTL ldy #3 hDev
|
||||||
>PULLYA param
|
>PULLYA param
|
||||||
inc pStack
|
inc pStack
|
||||||
inc pStack
|
inc pStack
|
||||||
|
|
||||||
jmp (pDrv)
|
jmp (pDrv)
|
||||||
|
|
||||||
.9 >RET 4
|
.9 >RET 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DEV.GetPFD sta IO.hDevNod
|
||||||
|
|
||||||
|
tax
|
||||||
|
|
||||||
|
lsr
|
||||||
|
bcs .1
|
||||||
|
|
||||||
|
lda Nod.Table.hFD-2,x empty slot ?
|
||||||
|
beq DEV.GetPFD.9
|
||||||
|
|
||||||
|
sta IO.hFD
|
||||||
|
|
||||||
|
jsr K.GetMemPtr
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 stz IO.hFD
|
||||||
|
|
||||||
|
ldy Dev.Table-1,x
|
||||||
|
lda Dev.Table,x
|
||||||
|
beq DEV.GetPFD.9
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
|
DEV.GetPDrv ldy #S.FD.DEV.DRVPTR
|
||||||
|
lda (pFD),y
|
||||||
|
sta pDRV
|
||||||
|
iny
|
||||||
|
lda (pFD),y
|
||||||
|
sta pDRV+1
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
DEV.GetPFD.9 lda #E.INVH
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* X = 0 > REG
|
||||||
|
* X = 1 > DIR
|
||||||
|
* X = 2 > PIPE
|
||||||
|
*--------------------------------------
|
||||||
|
DEV.MkFD stx .8+1
|
||||||
|
|
||||||
|
ldy DEV.MkFD.Y,x
|
||||||
|
lda #0
|
||||||
|
ldx #S.MEM.F.INIT0+S.MEM.F.FD
|
||||||
|
jsr MEM.GetMem.YAX
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
stx IO.hFD
|
||||||
|
|
||||||
|
.8 ldx #$ff SELF MODIFIED
|
||||||
|
lda DEV.MkFD.T,x
|
||||||
|
sta (pFD) X = hFD, A = T
|
||||||
|
|
||||||
|
* clc
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
DEV.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE
|
||||||
|
DEV.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE
|
||||||
|
*--------------------------------------
|
||||||
|
DEV.Destroy ldx IO.hDevNod
|
||||||
|
lda Nod.Table.hName-2,x
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
stz Nod.Table.hName-2,x
|
||||||
|
jsr K.FreeMem
|
||||||
|
|
||||||
|
ldx IO.hDevNod
|
||||||
|
|
||||||
|
.1 lda Nod.Table.hFD-2,x
|
||||||
|
stz Nod.Table.hFD-2,x
|
||||||
|
jmp K.FreeMem
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.DEV
|
SAVE usr/src/sys/kernel.s.dev
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -16,36 +16,9 @@ NEW
|
||||||
K.OpenDir jsr PFT.CheckPathYA
|
K.OpenDir jsr PFT.CheckPathYA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldx #1
|
jmp FS.OPEN.DIR
|
||||||
jsr IO.MkFD
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
lda K.Buf256+1 One char ("/") ?
|
|
||||||
beq .8 No, Go open dir....
|
|
||||||
|
|
||||||
jsr FS.Stat
|
|
||||||
bcs .98 file/dir does not exists....quit
|
|
||||||
|
|
||||||
lda K.S.STAT+S.STAT.MODE+1
|
|
||||||
and #$f0
|
|
||||||
cmp /S.STAT.MODE.DIR
|
|
||||||
bne .97
|
|
||||||
|
|
||||||
jsr FS.OPEN
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
.8 jsr STDIO.NewHFile
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.97 lda #MLI.E.UNSUPST
|
|
||||||
.98 pha Save Error Code
|
|
||||||
lda IO.hFD
|
|
||||||
jsr K.Close
|
|
||||||
pla
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # ReadDir
|
* # ReadDir
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -235,15 +208,15 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
ldx #8
|
ldx #8
|
||||||
|
|
||||||
ldy #S.FD.DIR.ACL+7
|
ldy #S.FD.DIR.ACL+7
|
||||||
|
|
||||||
.20 pla
|
.20 pla
|
||||||
cpy #S.FD.DIR.MODE+1
|
cpy #S.FD.DIR.MODE+1
|
||||||
bne .30
|
bne .30
|
||||||
|
|
||||||
and #$0F
|
and #$0F
|
||||||
|
|
||||||
.30 sta (pFD),y
|
.30 sta (pFD),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
|
@ -500,7 +473,7 @@ K.ReadDir.AddStatACL
|
||||||
|
|
||||||
ldy #S.FD.DIR.MODE+1
|
ldy #S.FD.DIR.MODE+1
|
||||||
ldx #1
|
ldx #1
|
||||||
|
|
||||||
.2 lda (pFD),y
|
.2 lda (pFD),y
|
||||||
ora K.S.STAT+S.STAT.MODE,x
|
ora K.S.STAT+S.STAT.MODE,x
|
||||||
sta K.S.STAT+S.STAT.MODE,x
|
sta K.S.STAT+S.STAT.MODE,x
|
||||||
|
@ -531,6 +504,6 @@ K.ReadDir.AddStat
|
||||||
*K.CloseDir .EQ K.FClose
|
*K.CloseDir .EQ K.FClose
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.DIRENT
|
SAVE usr/src/sys/kernel.s.dirent
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -99,7 +99,7 @@ DRV.BlkDevice.DIB
|
||||||
DRV.BLK txa
|
DRV.BLK txa
|
||||||
lsr
|
lsr
|
||||||
sta DRV.BLK.PARAMS CMD
|
sta DRV.BLK.PARAMS CMD
|
||||||
ldy #S.FD.DEV.DEVID Drive 1, or 2
|
ldy #S.FD.DEV.DEVID Drive 1, or 2
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
dec O or 1
|
dec O or 1
|
||||||
lsr in Carry
|
lsr in Carry
|
||||||
|
@ -270,6 +270,6 @@ DRV.NULL.CLOSE clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.DRV
|
SAVE usr/src/sys/kernel.s.drv
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -75,6 +75,6 @@ K.GetEnv.I ldy #S.PS.hENV FROM STDLIB:EXPAND
|
||||||
jmp K.SYSCALL.JMPX
|
jmp K.SYSCALL.JMPX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.ENV
|
SAVE usr/src/sys/kernel.s.env
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -412,6 +412,6 @@ ENVX.NextEnvP4Y tya
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.ENVX
|
SAVE usr/src/sys/kernel.s.envx
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -18,6 +18,6 @@ K.GetErrorMessage
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.ERROR
|
SAVE usr/src/sys/kernel.s.error
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -148,6 +148,6 @@ ERRORX.Messages .AT "Bad MLI Call"
|
||||||
.AT "Unknown Error"
|
.AT "Unknown Error"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.ERRORX
|
SAVE usr/src/sys/kernel.s.errorx
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
FS.OPEN.REG >MLICALL MLIGETFILEINFO
|
||||||
bcc .10 Already Exists
|
bcc .2 Already Exists
|
||||||
|
|
||||||
bit IO.Open.FLAGS Create if not exists ?
|
bit IO.Open.FLAGS Create if not exists ?
|
||||||
bpl .9 No, return MLI error
|
bpl .9 No, return MLI error
|
||||||
|
@ -18,35 +18,35 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
||||||
jsr FS.CREATE
|
jsr FS.CREATE
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.10 ldx #0
|
.2 ldx #0
|
||||||
jsr IO.MkFD
|
jsr DEV.MkFD
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr FS.OPEN
|
jsr FS.MLIOPEN
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda IO.Open.FLAGS
|
lda IO.Open.FLAGS
|
||||||
bit #O.WRONLY
|
bit #O.WRONLY
|
||||||
beq .20 Write mode ?
|
beq .5 Write mode ?
|
||||||
|
|
||||||
and #O.APPEND Append ?
|
and #O.APPEND Append ?
|
||||||
bne .11 yes, go to end of file
|
bne .3 yes, go to end of file
|
||||||
|
|
||||||
stz K.MLI.PARAMS+2
|
stz K.MLI.PARAMS+2
|
||||||
stz K.MLI.PARAMS+3
|
stz K.MLI.PARAMS+3
|
||||||
stz K.MLI.PARAMS+4
|
stz K.MLI.PARAMS+4
|
||||||
>MLICALL MLISETEOF no, reset size to 0
|
>MLICALL MLISETEOF no, reset size to 0
|
||||||
bra .21
|
bra .4
|
||||||
|
|
||||||
.11 >MLICALL MLIGETEOF
|
.3 >MLICALL MLIGETEOF
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>MLICALL MLISETMARK
|
>MLICALL MLISETMARK
|
||||||
.21 bcs .99
|
.4 bcs .99
|
||||||
|
|
||||||
.20 lda IO.Open.FLAGS
|
.5 lda IO.Open.FLAGS
|
||||||
and #O.TEXT Text Mode ?
|
and #O.TEXT Text Mode ?
|
||||||
beq .8
|
beq .6
|
||||||
|
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta K.MLI.PARAMS+2
|
sta K.MLI.PARAMS+2
|
||||||
|
@ -54,36 +54,54 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
||||||
sta K.MLI.PARAMS+3
|
sta K.MLI.PARAMS+3
|
||||||
>MLICALL MLINEWLINE
|
>MLICALL MLINEWLINE
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.8 lda IO.hFD
|
.6 >LDYAI K.MLI.PATH+1
|
||||||
.9 rts
|
>STYA ZPPtr1
|
||||||
|
jsr K.MkNod.I
|
||||||
|
bcc .8
|
||||||
|
|
||||||
.99 pha Save Error Code
|
.99 pha Save Error Code
|
||||||
lda IO.hFD
|
lda IO.hFD
|
||||||
jsr K.Close
|
jsr K.Close
|
||||||
pla
|
pla
|
||||||
sec
|
sec
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
IO.READ.REG ldx #MLIREAD
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
*--------------------------------------
|
|
||||||
IO.WRITE.REG ldx #MLIWRITE
|
|
||||||
|
|
||||||
ldy #S.FD.REG.REF
|
.8
|
||||||
lda (pFD),y
|
|
||||||
sta K.MLI.PARAMS+1
|
|
||||||
>PULLW K.MLI.PARAMS+2
|
|
||||||
>PULLW K.MLI.PARAMS+4
|
|
||||||
|
|
||||||
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
|
.9 rts
|
||||||
jsr GP.MLICall
|
*--------------------------------------
|
||||||
|
FS.OPEN.DIR ldx #1
|
||||||
|
jsr DEV.MkFD
|
||||||
bcs .9
|
bcs .9
|
||||||
>LDYA K.MLI.PARAMS+6
|
|
||||||
|
|
||||||
.9
|
lda K.MLI.PATH+2
|
||||||
*IO.WRITE.REG.RTS
|
beq .8 "/"
|
||||||
|
|
||||||
|
>MLICALL MLIGETFILEINFO
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda K.MLI.PARAMS+S.FI.T
|
||||||
|
cmp #S.FI.T.DIR
|
||||||
|
bne .99
|
||||||
|
|
||||||
|
jsr FS.MLIOPEN
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
.8 >LDYAI K.MLI.PATH+1
|
||||||
|
>STYA ZPPtr1
|
||||||
|
jsr K.MkNod.I
|
||||||
|
bcc .9
|
||||||
|
|
||||||
|
.98 pha Save Error Code
|
||||||
|
lda IO.hFD
|
||||||
|
jsr K.Close
|
||||||
|
pla
|
||||||
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.99 lda #MLI.E.UNSUPST
|
||||||
|
sec
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FS.CLOSE.REG
|
FS.CLOSE.REG
|
||||||
FS.CLOSE.DIR ldy #S.FD.REG.REF
|
FS.CLOSE.DIR ldy #S.FD.REG.REF
|
||||||
|
@ -100,8 +118,25 @@ FS.CLOSE.DIR ldy #S.FD.REG.REF
|
||||||
|
|
||||||
jsr K.FreeMem
|
jsr K.FreeMem
|
||||||
|
|
||||||
.2 lda IO.hFD
|
.2 jmp DEV.Destroy
|
||||||
jmp K.FreeMem
|
*--------------------------------------
|
||||||
|
FS.READ.REG ldx #MLIREAD
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
*--------------------------------------
|
||||||
|
FS.WRITE.REG ldx #MLIWRITE
|
||||||
|
|
||||||
|
ldy #S.FD.REG.REF
|
||||||
|
lda (pFD),y
|
||||||
|
sta K.MLI.PARAMS+1
|
||||||
|
>PULLW K.MLI.PARAMS+2
|
||||||
|
>PULLW K.MLI.PARAMS+4
|
||||||
|
|
||||||
|
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
|
||||||
|
jsr GP.MLICall
|
||||||
|
bcs .9
|
||||||
|
>LDYA K.MLI.PARAMS+6
|
||||||
|
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FS.EOF.REG >MLICALL MLIGETMARK
|
FS.EOF.REG >MLICALL MLIGETMARK
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -130,6 +165,7 @@ FS.EOF.REG >MLICALL MLIGETMARK
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FS.CREATE sta K.MLI.PARAMS+7 Storage Type
|
FS.CREATE sta K.MLI.PARAMS+7 Storage Type
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.1 lda DATELO,x
|
.1 lda DATELO,x
|
||||||
sta K.MLI.PARAMS+8,x Create Date/Time
|
sta K.MLI.PARAMS+8,x Create Date/Time
|
||||||
dex
|
dex
|
||||||
|
@ -140,7 +176,7 @@ FS.CREATE sta K.MLI.PARAMS+7 Storage Type
|
||||||
>MLICALL MLICREATE
|
>MLICALL MLICREATE
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FS.OPEN >LDYAI 1024 get a ProDOS IOBUF
|
FS.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
|
||||||
ldx #S.MEM.F.ALIGN
|
ldx #S.MEM.F.ALIGN
|
||||||
jsr MEM.GetMem.YAX
|
jsr MEM.GetMem.YAX
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -152,6 +188,7 @@ FS.OPEN >LDYAI 1024 get a ProDOS IOBUF
|
||||||
|
|
||||||
>MLICALL MLIOPEN
|
>MLICALL MLIOPEN
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda K.MLI.PARAMS+5 get ref_num
|
lda K.MLI.PARAMS+5 get ref_num
|
||||||
ldy #S.FD.REG.REF
|
ldy #S.FD.REG.REF
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
|
@ -159,72 +196,25 @@ FS.OPEN >LDYAI 1024 get a ProDOS IOBUF
|
||||||
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
|
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
.9
|
|
||||||
FS.OPEN.RTS rts
|
|
||||||
*--------------------------------------
|
|
||||||
FS.FSTAT.A >PUSHA
|
|
||||||
|
|
||||||
FS.FSTAT >PUSHWI K.S.STAT
|
.9
|
||||||
ldx #SYS.FStat
|
FS.MLIOPEN.RTS rts
|
||||||
jsr PFT.CheckNode2
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
ldy #2
|
|
||||||
lda (pStack),y
|
|
||||||
|
|
||||||
tax
|
|
||||||
|
|
||||||
lda OF.Table.hPath-1,x
|
|
||||||
jsr K.GetMemPtr
|
|
||||||
jsr PFT.YAToMLIPATH
|
|
||||||
|
|
||||||
jsr FS.Stat.203
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
lda (pFD) #S.FD.T
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
ldy #S.FD.REG.REF
|
|
||||||
lda (pFD),y
|
|
||||||
sta K.MLI.PARAMS+1
|
|
||||||
|
|
||||||
>MLICALL MLIGETEOF
|
|
||||||
|
|
||||||
ldx #2
|
|
||||||
|
|
||||||
.1 lda K.MLI.PARAMS+2,x
|
|
||||||
sta K.S.STAT+S.STAT.SIZE,x
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
.9 >RET 3
|
|
||||||
*--------------------------------------
|
|
||||||
FS.STAT.YA >PUSHYA
|
|
||||||
>PUSHWI K.S.STAT
|
|
||||||
ldx #SYS.Stat
|
|
||||||
jsr PFT.CheckPath2
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr FS.Stat.203
|
|
||||||
|
|
||||||
.9 >POP 4
|
|
||||||
FS.STAT.YA.RTS rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FS.Stat bit A2osX.FSID
|
FS.Stat bit A2osX.FSID
|
||||||
bmi FS.Stat.FX
|
bmi FS.Stat.FX
|
||||||
|
|
||||||
FS.Stat.203 >MLICALL MLIGETFILEINFO
|
FS.Stat.203 >MLICALL MLIGETFILEINFO
|
||||||
bcs FS.STAT.YA.RTS
|
bcs FS.MLIOPEN.RTS
|
||||||
|
|
||||||
jsr FS.ClrStat
|
jsr FS.ClrStat
|
||||||
|
|
||||||
lda K.MLI.PARAMS+S.FI.T
|
lda K.MLI.PARAMS+S.FI.T
|
||||||
cmp #S.FI.T.DIR
|
cmp #S.FI.T.DIR
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda /S.STAT.MODE.DIR
|
lda /S.STAT.MODE.DIR
|
||||||
sta K.S.STAT+S.STAT.MODE+1
|
sta K.S.STAT+S.STAT.MODE+1
|
||||||
|
|
||||||
.1 lda K.MLI.PARAMS+S.FI.A
|
.1 lda K.MLI.PARAMS+S.FI.A
|
||||||
sta K.S.STAT+S.STAT.P.ACCESS
|
sta K.S.STAT+S.STAT.P.ACCESS
|
||||||
|
|
||||||
|
@ -236,7 +226,7 @@ FS.Stat.203 >MLICALL MLIGETFILEINFO
|
||||||
sta K.S.STAT,y
|
sta K.S.STAT,y
|
||||||
dex
|
dex
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
>LDYAI K.MLI.PARAMS+S.FI.CDATE
|
>LDYAI K.MLI.PARAMS+S.FI.CDATE
|
||||||
ldx #K.S.STAT+S.STAT.CTIME
|
ldx #K.S.STAT+S.STAT.CTIME
|
||||||
jsr FS.PTime2StatYAX
|
jsr FS.PTime2StatYAX
|
||||||
|
@ -247,11 +237,11 @@ FS.Stat.203 >MLICALL MLIGETFILEINFO
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FS.Stat.FX >MLICALL MLIGETFILEINFOEX
|
FS.Stat.FX >MLICALL MLIGETFILEINFOEX
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
cmp #MLI.E.BADCALL
|
cmp #MLI.E.BADCALL
|
||||||
beq FS.Stat.203 Apple WS CARD
|
beq FS.Stat.203 Apple WS CARD
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 >LDYAI K.MLI.PARAMS+3
|
.1 >LDYAI K.MLI.PARAMS+3
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -277,7 +267,7 @@ FS.DirEnt2Stat jsr FS.ClrStat
|
||||||
ldy #S.FIEX.ACCESS
|
ldy #S.FIEX.ACCESS
|
||||||
lda (ZPPtr3),y
|
lda (ZPPtr3),y
|
||||||
sta K.S.STAT+S.STAT.P.ACCESS
|
sta K.S.STAT+S.STAT.P.ACCESS
|
||||||
|
|
||||||
ldy #S.FIEX.ACL
|
ldy #S.FIEX.ACL
|
||||||
lda (ZPPtr3),y
|
lda (ZPPtr3),y
|
||||||
cmp #$57
|
cmp #$57
|
||||||
|
@ -290,14 +280,14 @@ FS.DirEnt2Stat jsr FS.ClrStat
|
||||||
ldy #S.FIEX.ACL.GID
|
ldy #S.FIEX.ACL.GID
|
||||||
lda (ZPPtr3),y
|
lda (ZPPtr3),y
|
||||||
sta K.S.STAT+S.STAT.GID
|
sta K.S.STAT+S.STAT.GID
|
||||||
|
|
||||||
ldy #S.FIEX.ACL.MOD
|
ldy #S.FIEX.ACL.MOD
|
||||||
lda (ZPPtr3),y
|
lda (ZPPtr3),y
|
||||||
tsb K.S.STAT+S.STAT.MODE
|
tsb K.S.STAT+S.STAT.MODE
|
||||||
iny
|
iny
|
||||||
lda (ZPPtr3),y
|
lda (ZPPtr3),y
|
||||||
tsb K.S.STAT+S.STAT.MODE+1
|
tsb K.S.STAT+S.STAT.MODE+1
|
||||||
|
|
||||||
.7 lda #S.FIEX.CTIME
|
.7 lda #S.FIEX.CTIME
|
||||||
ldx #K.S.STAT+S.STAT.CTIME
|
ldx #K.S.STAT+S.STAT.CTIME
|
||||||
jsr FS.PTime2StatAX
|
jsr FS.PTime2StatAX
|
||||||
|
|
|
@ -97,7 +97,9 @@ GP.Sleep2 ldy #S.PS.PC
|
||||||
|
|
||||||
inc $1fe PC=PC+1
|
inc $1fe PC=PC+1
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
inc $1ff because of RTI
|
inc $1ff because of RTI
|
||||||
|
|
||||||
.4 lda (pPS)
|
.4 lda (pPS)
|
||||||
ora #S.PS.F.SLEEP
|
ora #S.PS.F.SLEEP
|
||||||
sta (pPS)
|
sta (pPS)
|
||||||
|
@ -123,6 +125,7 @@ GP.SysCall dec IRQ.InKernel
|
||||||
pla
|
pla
|
||||||
jsr K.SYSCALL2
|
jsr K.SYSCALL2
|
||||||
bcc .2 no error quit...
|
bcc .2 no error quit...
|
||||||
|
|
||||||
tax CS,A=0 ?
|
tax CS,A=0 ?
|
||||||
beq .3 Yes, BLOCKING I/O
|
beq .3 Yes, BLOCKING I/O
|
||||||
|
|
||||||
|
@ -136,7 +139,9 @@ GP.SysCall dec IRQ.InKernel
|
||||||
* sec
|
* sec
|
||||||
sbc #2 move back JSR GP.SysCall -3 (jsr $BF00) +1 (RTI)
|
sbc #2 move back JSR GP.SysCall -3 (jsr $BF00) +1 (RTI)
|
||||||
bcs .4
|
bcs .4
|
||||||
|
|
||||||
dex
|
dex
|
||||||
|
|
||||||
.4 inc IRQ.InKernel
|
.4 inc IRQ.InKernel
|
||||||
bra GP.Sleep2
|
bra GP.Sleep2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -147,6 +152,7 @@ GP.LibCall dec IRQ.InLib
|
||||||
jsr K.GetMemPtr Get LIB Code Segment (MemMgr in $E000, no BNK change)
|
jsr K.GetMemPtr Get LIB Code Segment (MemMgr in $E000, no BNK change)
|
||||||
>STYA .1+1
|
>STYA .1+1
|
||||||
pla
|
pla
|
||||||
|
|
||||||
.1 jsr $FFFF SELF MODIFIED
|
.1 jsr $FFFF SELF MODIFIED
|
||||||
|
|
||||||
GP.LibCall.8 inc IRQ.InLib
|
GP.LibCall.8 inc IRQ.InLib
|
||||||
|
@ -155,11 +161,15 @@ GP.LibCall.RTS rts
|
||||||
GP.AtkCall dec IRQ.InKernel
|
GP.AtkCall dec IRQ.InKernel
|
||||||
|
|
||||||
>STYA .1
|
>STYA .1
|
||||||
|
|
||||||
jsr GO.ProDOS
|
jsr GO.ProDOS
|
||||||
|
|
||||||
jsr MLI
|
jsr MLI
|
||||||
.DA #MLIATALK
|
.DA #MLIATALK
|
||||||
.1 .DA *
|
.1 .DA *
|
||||||
|
|
||||||
jsr GO.A2osX
|
jsr GO.A2osX
|
||||||
|
|
||||||
GP.AtkCall.INC inc IRQ.InKernel
|
GP.AtkCall.INC inc IRQ.InKernel
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
@ -298,6 +308,7 @@ GP.lrintf jsr GP.SetFAC
|
||||||
jsr GP.ROMCALL
|
jsr GP.ROMCALL
|
||||||
|
|
||||||
ldy #3
|
ldy #3
|
||||||
|
|
||||||
.1 lda FAC+1,y
|
.1 lda FAC+1,y
|
||||||
sta (pStack),y
|
sta (pStack),y
|
||||||
dey
|
dey
|
||||||
|
@ -340,7 +351,7 @@ GO.A2osX php
|
||||||
|
|
||||||
bcs GO.A2osX.BNK if CS, go AUXLC
|
bcs GO.A2osX.BNK if CS, go AUXLC
|
||||||
bit RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1
|
bit RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1
|
||||||
bit RRAMWRAMBNK1
|
* bit RRAMWRAMBNK1
|
||||||
|
|
||||||
tsx
|
tsx
|
||||||
stx A2osX.SaveSX
|
stx A2osX.SaveSX
|
||||||
|
@ -352,7 +363,7 @@ GO.A2osX php
|
||||||
GO.A2osX.BNK ldx #RRAMWRAMBNK1 Self Modified, initialized to BNK1 for INIT3
|
GO.A2osX.BNK ldx #RRAMWRAMBNK1 Self Modified, initialized to BNK1 for INIT3
|
||||||
|
|
||||||
bit $C000,x
|
bit $C000,x
|
||||||
bit $C000,x
|
* bit $C000,x
|
||||||
sta SETALTZP
|
sta SETALTZP
|
||||||
tsx
|
tsx
|
||||||
stx A2osX.SaveSM
|
stx A2osX.SaveSM
|
||||||
|
@ -418,6 +429,6 @@ GP.CodeEnd .BS $BED0-*
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GP.End .EQ *
|
GP.End .EQ *
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.GP
|
SAVE usr/src/sys/kernel.s.gp
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -121,7 +121,7 @@ Kernel.Init3 sta SETALTZP
|
||||||
sta A2osX.KVER+1
|
sta A2osX.KVER+1
|
||||||
|
|
||||||
sta SETALTCHAR
|
sta SETALTCHAR
|
||||||
sta CLRMIXED
|
sta SETMIXED
|
||||||
sta CLRHIRES
|
sta CLRHIRES
|
||||||
sta SET80DISP
|
sta SET80DISP
|
||||||
sta SET80STORE
|
sta SET80STORE
|
||||||
|
@ -153,6 +153,9 @@ Kernel.Init3 sta SETALTZP
|
||||||
|
|
||||||
jsr SysScrInit
|
jsr SysScrInit
|
||||||
bcs *
|
bcs *
|
||||||
|
|
||||||
|
sta CLRMIXED
|
||||||
|
|
||||||
>PUSHWI DEV.CONSOLE
|
>PUSHWI DEV.CONSOLE
|
||||||
>PUSHBI O.RDWR
|
>PUSHBI O.RDWR
|
||||||
>PUSHBI S.FI.T.TXT
|
>PUSHBI S.FI.T.TXT
|
||||||
|
@ -297,7 +300,7 @@ MemMgrInit >LDYAI Mem.MHiMem
|
||||||
|
|
||||||
ldx #K.NOD.MAX*2-1
|
ldx #K.NOD.MAX*2-1
|
||||||
|
|
||||||
.2 stz Nod.Table.hPath,x
|
.2 stz Nod.Table.hName,x
|
||||||
dex
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
|
@ -307,12 +310,6 @@ MemMgrInit >LDYAI Mem.MHiMem
|
||||||
dex
|
dex
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
ldx #K.OF.MAX*2-1
|
|
||||||
|
|
||||||
.4 stz OF.Table.hPath,x
|
|
||||||
dex
|
|
||||||
bpl .4
|
|
||||||
|
|
||||||
ldx #K.EVT.MAX*S.EVT-1
|
ldx #K.EVT.MAX*S.EVT-1
|
||||||
|
|
||||||
.5 stz Evt.Table,x
|
.5 stz Evt.Table,x
|
||||||
|
@ -683,6 +680,7 @@ DevMgrInit >LDYAI MSG.DEV
|
||||||
|
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
stz ZPPtr1 Cn00
|
stz ZPPtr1 Cn00
|
||||||
|
|
||||||
plp
|
plp
|
||||||
lda #0
|
lda #0
|
||||||
adc #1 Make DevID 1 or 2
|
adc #1 Make DevID 1 or 2
|
||||||
|
@ -1121,14 +1119,14 @@ PwdMgrInit >LDYAI MSG.PWD
|
||||||
>SYSCALL2 puts
|
>SYSCALL2 puts
|
||||||
|
|
||||||
>LDYAI PWD.ETCPASSWD
|
>LDYAI PWD.ETCPASSWD
|
||||||
jsr PwdMgrInit.Load
|
>SYSCALL2 LoadStkObj
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
stx PWD.hUsrDB
|
stx PWD.hUsrDB
|
||||||
>STYA PWD.UsrDBSize
|
>STYA PWD.UsrDBSize
|
||||||
|
|
||||||
>LDYAI PWD.ETCGROUP
|
>LDYAI PWD.ETCGROUP
|
||||||
jsr PwdMgrInit.Load
|
>SYSCALL2 LoadStkObj
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
stx PWD.hGrpDB
|
stx PWD.hGrpDB
|
||||||
|
@ -1138,13 +1136,6 @@ PwdMgrInit >LDYAI MSG.PWD
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PwdMgrInit.Load >PUSHYA
|
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI S.FI.T.TXT
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL2 LoadStkObj
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* Modified CHARGET/CHARGOT for ROM CALL
|
* Modified CHARGET/CHARGOT for ROM CALL
|
||||||
* CHRGET .EQ $B1 - C8
|
* CHRGET .EQ $B1 - C8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -136,6 +136,6 @@ IRQ.JMP jmp $FFFF SELF MODIFIED Not handled, pass to ProDOS
|
||||||
IRQ.8 rti
|
IRQ.8 rti
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.IRQ
|
SAVE usr/src/sys/kernel.s.irq
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -43,15 +43,15 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
|
||||||
|
|
||||||
.DA K.Remove $40
|
.DA K.Remove $40
|
||||||
.DA K.Rename
|
.DA K.Rename
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA K.PrintF
|
.DA K.PrintF
|
||||||
.DA K.FPrintF
|
.DA K.FPrintF
|
||||||
.DA K.SPrintF
|
.DA K.SPrintF
|
||||||
.DA K.ScanF
|
.DA K.ScanF
|
||||||
|
.DA K.FScanF
|
||||||
.DA K.FScanF $50
|
|
||||||
.DA K.SScanF
|
.DA K.SScanF
|
||||||
|
|
||||||
|
.DA 0 $50
|
||||||
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
|
|
|
@ -2,6 +2,6 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.MATH
|
SAVE usr/src/sys/kernel.s.math
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -550,6 +550,6 @@ MATH32.ACC32NEG.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.MATH32
|
SAVE usr/src/sys/kernel.s.math32
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -58,6 +58,6 @@ K.MD5Finalize >PULLW FORPNT
|
||||||
jmp K.SYSCALL.JMPX
|
jmp K.SYSCALL.JMPX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.MD5
|
SAVE usr/src/sys/kernel.s.md5
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -487,6 +487,6 @@ MD5.i .BS 1
|
||||||
MD5.BUFFER64 .BS 64
|
MD5.BUFFER64 .BS 64
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.MD5X
|
SAVE usr/src/sys/kernel.s.md5x
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -51,11 +51,11 @@ K.Realloc >PULLW MEM.NewSize
|
||||||
|
|
||||||
lda .7+1
|
lda .7+1
|
||||||
sta SETREADAUX
|
sta SETREADAUX
|
||||||
jsr MEM.MoveSetupA1A2 Setup AUX base & End Ptrs
|
jsr MEM.SetA1A2 Setup AUX base & End Ptrs
|
||||||
sta CLRREADAUX
|
sta CLRREADAUX
|
||||||
|
|
||||||
clc Aux To Main
|
clc Aux To Main
|
||||||
jsr AuxMove
|
jsr XMov
|
||||||
|
|
||||||
.7 lda #$ff SELF MODIFIED
|
.7 lda #$ff SELF MODIFIED
|
||||||
>SYSCALL2 FreeStkObj
|
>SYSCALL2 FreeStkObj
|
||||||
|
@ -589,11 +589,11 @@ MEM.MoveToMain sec
|
||||||
|
|
||||||
lda .2+1 Get AUX mem Ptr
|
lda .2+1 Get AUX mem Ptr
|
||||||
sta SETREADAUX
|
sta SETREADAUX
|
||||||
jsr MEM.MoveSetupA1A2 Setup AUX base & End Ptrs
|
jsr MEM.SetA1A2 Setup AUX base & End Ptrs
|
||||||
sta CLRREADAUX
|
sta CLRREADAUX
|
||||||
|
|
||||||
clc Aux To Main
|
clc Aux To Main
|
||||||
jsr AuxMove
|
jsr XMov
|
||||||
|
|
||||||
.1 lda #$ff SELF MODIFIED
|
.1 lda #$ff SELF MODIFIED
|
||||||
bpl .8 Copy : dont discard AUX mem
|
bpl .8 Copy : dont discard AUX mem
|
||||||
|
@ -615,10 +615,10 @@ MEM.MoveToAux stx .1+1 Save MAIN hMem
|
||||||
>STYA A4L Save AUX Ptr
|
>STYA A4L Save AUX Ptr
|
||||||
|
|
||||||
lda .1+1
|
lda .1+1
|
||||||
jsr MEM.MoveSetupA1A2 Setup MAIN base & End Ptrs
|
jsr MEM.SetA1A2 Setup MAIN base & End Ptrs
|
||||||
|
|
||||||
sec Main To Aux
|
sec Main To Aux
|
||||||
jsr AuxMove
|
jsr XMov
|
||||||
|
|
||||||
.1 lda #$ff SELF MODIFIED
|
.1 lda #$ff SELF MODIFIED
|
||||||
jsr K.FreeMem release MAIN memory
|
jsr K.FreeMem release MAIN memory
|
||||||
|
@ -628,8 +628,7 @@ MEM.MoveToAux stx .1+1 Save MAIN hMem
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MEM.MoveSetupA1A2
|
MEM.SetA1A2 jsr K.GetMemPtr
|
||||||
jsr K.GetMemPtr
|
|
||||||
|
|
||||||
>STYA A1L Start Address
|
>STYA A1L Start Address
|
||||||
pha
|
pha
|
||||||
|
@ -678,6 +677,6 @@ MEM.GetKrnlBuf pha
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.MEM
|
SAVE usr/src/sys/kernel.s.mem
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -16,7 +16,7 @@ PFT.CheckPath4 ldy #4
|
||||||
ply
|
ply
|
||||||
|
|
||||||
PFT.CheckPathYA >PUSHYA
|
PFT.CheckPathYA >PUSHYA
|
||||||
|
|
||||||
stx .6+1 Save SYSCALL #
|
stx .6+1 Save SYSCALL #
|
||||||
|
|
||||||
>PUSHWI K.Buf256
|
>PUSHWI K.Buf256
|
||||||
|
@ -53,7 +53,7 @@ PFT.CheckPathYA >PUSHYA
|
||||||
pla
|
pla
|
||||||
>LDYAI K.Buf256 pass full path to handler
|
>LDYAI K.Buf256 pass full path to handler
|
||||||
|
|
||||||
.6 ldx #$ff SELF MODIFIED SYSCALL #
|
.6 ldx #$ff SELF MODIFIED SYSCALL #
|
||||||
.7 jmp $ffff SELF MODIFIED
|
.7 jmp $ffff SELF MODIFIED
|
||||||
|
|
||||||
.8 inx
|
.8 inx
|
||||||
|
@ -88,27 +88,15 @@ PFT.YAToMLIPATH.RTS
|
||||||
PFT.CheckNode4 ldy #4
|
PFT.CheckNode4 ldy #4
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
PFT.CheckNode2 ldy #2
|
PFT.CheckNode2 ldy #2
|
||||||
|
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
|
|
||||||
PFT.CheckNodeA stx .80+1 Save SYSCALL #
|
PFT.CheckNodeA stx .80+1 Save SYSCALL #
|
||||||
sta .81+1 Save hFILE
|
sta .81+1 Save hFILE
|
||||||
|
|
||||||
tax
|
jsr DEV.GetPFD
|
||||||
lda OF.Table.hFD-1,x
|
bcs .99
|
||||||
beq .9
|
|
||||||
|
|
||||||
sta IO.hFD
|
|
||||||
ldy OF.Table.hPath-1,x if 0, its a hDEV
|
|
||||||
bne .10
|
|
||||||
|
|
||||||
tax
|
|
||||||
ldy Dev.Table-1,x
|
|
||||||
lda Dev.Table,x
|
|
||||||
bra .11
|
|
||||||
|
|
||||||
.10 jsr K.GetMemPtr
|
|
||||||
.11 >STYA pFD
|
|
||||||
ldy #S.FD.HANDLER
|
ldy #S.FD.HANDLER
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
beq .8 Handler is 0, back to kernel....
|
beq .8 Handler is 0, back to kernel....
|
||||||
|
@ -124,7 +112,7 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
|
||||||
|
|
||||||
.8 lda (pFD) #S.FD.T
|
.8 lda (pFD) #S.FD.T
|
||||||
cmp #S.FD.T.CDEV
|
cmp #S.FD.T.CDEV
|
||||||
bcs .80
|
bcs .80
|
||||||
|
|
||||||
ldy #S.FD.REG.REF REG or DIR
|
ldy #S.FD.REG.REF REG or DIR
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
|
@ -133,13 +121,10 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
|
||||||
.80 ldx #$ff SELF MODIFIED
|
.80 ldx #$ff SELF MODIFIED
|
||||||
.81 lda #$ff SELF MODIFIED
|
.81 lda #$ff SELF MODIFIED
|
||||||
clc
|
clc
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #E.INVH
|
.99 rts
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.PFT
|
SAVE usr/src/sys/kernel.s.pft
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -1,39 +1,38 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.PIPE.SRCBUF .EQ ZPDRV
|
PIPE.SRCBUF .EQ ZPDRV
|
||||||
IO.PIPE.DSTBUF .EQ ZPDRV+2
|
PIPE.DSTBUF .EQ ZPDRV+2
|
||||||
IO.PIPE.CNT .EQ ZPDRV+4
|
PIPE.CNT .EQ ZPDRV+4
|
||||||
IO.PIPE.BASEH .EQ ZPDRV+6
|
PIPE.BASEH .EQ ZPDRV+6
|
||||||
IO.PIPE.BUFH .EQ ZPDRV+7
|
PIPE.BUFH .EQ ZPDRV+7
|
||||||
IO.PIPE.SIZEH .EQ ZPDRV+8
|
PIPE.SIZEH .EQ ZPDRV+8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.OPEN.PIPE ldy #S.FD.PIPE.S
|
IO.OPEN.PIPE ldy #S.FD.PIPE.S
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
inc
|
inc
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
lda IO.hFD
|
|
||||||
|
lda IO.hDevNod
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.CLOSE.PIPE ldy #S.FD.PIPE.S
|
IO.CLOSE.PIPE ldy #S.FD.PIPE.S
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
bmi .1 remote PS closed its end
|
bmi .1 remote PS closed its end
|
||||||
|
|
||||||
lda #$80
|
lda #$80
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 jsr IO.CLOSE.NOD
|
.1 ldy #S.FD.PIPE.hMem
|
||||||
|
|
||||||
ldy #S.FD.PIPE.hMem
|
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
>SYSCALL2 FreeStkObj
|
>SYSCALL2 FreeStkObj
|
||||||
|
|
||||||
.2 lda IO.hFD
|
.2 jmp DEV.Destroy
|
||||||
jmp K.FreeMem
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* (pStack)+2 count
|
* (pStack)+2 count
|
||||||
* (pStack)+0 buf
|
* (pStack)+0 buf
|
||||||
|
@ -55,20 +54,20 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
|
||||||
sbc (pStack),y
|
sbc (pStack),y
|
||||||
bcc IO.READ.PIPE.NODATA not enough room in PIPE
|
bcc IO.READ.PIPE.NODATA not enough room in PIPE
|
||||||
|
|
||||||
>PULLW IO.PIPE.SRCBUF
|
>PULLW PIPE.SRCBUF
|
||||||
|
|
||||||
ldy #S.FD.PIPE.Head+1
|
ldy #S.FD.PIPE.Head+1
|
||||||
jsr IO.PIPE.GET.BUF
|
jsr PIPE.GET.BUF
|
||||||
|
|
||||||
>STYA IO.PIPE.DSTBUF
|
>STYA PIPE.DSTBUF
|
||||||
|
|
||||||
>PULLA get cnt lo
|
>PULLA get cnt lo
|
||||||
sta IO.PIPE.CNT
|
sta PIPE.CNT
|
||||||
eor #$ff
|
eor #$ff
|
||||||
tax
|
tax
|
||||||
|
|
||||||
>PULLA get cnt hi
|
>PULLA get cnt hi
|
||||||
sta IO.PIPE.CNT+1
|
sta PIPE.CNT+1
|
||||||
eor #$ff
|
eor #$ff
|
||||||
pha
|
pha
|
||||||
ldy #S.FD.PIPE.Head
|
ldy #S.FD.PIPE.Head
|
||||||
|
@ -86,28 +85,28 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
.2 lda (IO.PIPE.SRCBUF)
|
.2 lda (PIPE.SRCBUF)
|
||||||
sta (IO.PIPE.DSTBUF),y
|
sta (PIPE.DSTBUF),y
|
||||||
|
|
||||||
inc IO.PIPE.SRCBUF
|
inc PIPE.SRCBUF
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
inc IO.PIPE.SRCBUF+1
|
inc PIPE.SRCBUF+1
|
||||||
.4 iny
|
.4 iny
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda IO.PIPE.BUFH
|
lda PIPE.BUFH
|
||||||
inc
|
inc
|
||||||
cmp IO.PIPE.SIZEH
|
cmp PIPE.SIZEH
|
||||||
beq .6
|
beq .6
|
||||||
|
|
||||||
sta IO.PIPE.BUFH
|
sta PIPE.BUFH
|
||||||
inc IO.PIPE.DSTBUF+1
|
inc PIPE.DSTBUF+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.6 stz IO.PIPE.BUFH
|
.6 stz PIPE.BUFH
|
||||||
lda IO.PIPE.BASEH Pipe Buffer Base
|
lda PIPE.BASEH Pipe Buffer Base
|
||||||
sta IO.PIPE.DSTBUF+1
|
sta PIPE.DSTBUF+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 sta CLRWRITEAUX
|
.8 sta CLRWRITEAUX
|
||||||
|
@ -116,14 +115,14 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
|
||||||
ldy #S.FD.PIPE.Head
|
ldy #S.FD.PIPE.Head
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
iny
|
iny
|
||||||
lda IO.PIPE.BUFH
|
lda PIPE.BUFH
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
ldy #S.FD.PIPE.Free
|
ldy #S.FD.PIPE.Free
|
||||||
jsr IO.PIPE.SUB.CNT
|
jsr PIPE.SUB.CNT
|
||||||
|
|
||||||
iny #S.FD.PIPE.Used
|
iny #S.FD.PIPE.Used
|
||||||
|
|
||||||
jsr IO.PIPE.ADD.CNT
|
jsr PIPE.ADD.CNT
|
||||||
jmp IO.READ.PIPE.EXIT
|
jmp IO.READ.PIPE.EXIT
|
||||||
|
|
||||||
IO.READ.PIPE.EOF
|
IO.READ.PIPE.EOF
|
||||||
|
@ -145,12 +144,12 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
|
||||||
bmi IO.READ.PIPE.EOF Remote PS closed the Pipe
|
bmi IO.READ.PIPE.EOF Remote PS closed the Pipe
|
||||||
bpl IO.READ.PIPE.NODATA
|
bpl IO.READ.PIPE.NODATA
|
||||||
|
|
||||||
.10 >PULLW IO.PIPE.DSTBUF get dest buf
|
.10 >PULLW PIPE.DSTBUF get dest buf
|
||||||
|
|
||||||
ldy #S.FD.PIPE.Tail+1
|
ldy #S.FD.PIPE.Tail+1
|
||||||
jsr IO.PIPE.GET.BUF
|
jsr PIPE.GET.BUF
|
||||||
|
|
||||||
>STYA IO.PIPE.SRCBUF
|
>STYA PIPE.SRCBUF
|
||||||
|
|
||||||
>PULLA get cnt lo
|
>PULLA get cnt lo
|
||||||
tax
|
tax
|
||||||
|
@ -170,8 +169,8 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
|
||||||
iny
|
iny
|
||||||
lda (pFD),y X,A = Used
|
lda (pFD),y X,A = Used
|
||||||
|
|
||||||
.12 stx IO.PIPE.CNT
|
.12 stx PIPE.CNT
|
||||||
sta IO.PIPE.CNT+1
|
sta PIPE.CNT+1
|
||||||
|
|
||||||
eor #$ff
|
eor #$ff
|
||||||
pha
|
pha
|
||||||
|
@ -193,28 +192,28 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
.2 lda (IO.PIPE.SRCBUF),y
|
.2 lda (PIPE.SRCBUF),y
|
||||||
sta (IO.PIPE.DSTBUF)
|
sta (PIPE.DSTBUF)
|
||||||
|
|
||||||
inc IO.PIPE.DSTBUF
|
inc PIPE.DSTBUF
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
inc IO.PIPE.DSTBUF+1
|
inc PIPE.DSTBUF+1
|
||||||
.4 iny
|
.4 iny
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda IO.PIPE.BUFH
|
lda PIPE.BUFH
|
||||||
inc
|
inc
|
||||||
cmp IO.PIPE.SIZEH
|
cmp PIPE.SIZEH
|
||||||
beq .6
|
beq .6
|
||||||
|
|
||||||
sta IO.PIPE.BUFH
|
sta PIPE.BUFH
|
||||||
inc IO.PIPE.SRCBUF+1
|
inc PIPE.SRCBUF+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.6 stz IO.PIPE.BUFH
|
.6 stz PIPE.BUFH
|
||||||
lda IO.PIPE.BASEH
|
lda PIPE.BASEH
|
||||||
sta IO.PIPE.SRCBUF+1 Restore Pipe Buf base
|
sta PIPE.SRCBUF+1 Restore Pipe Buf base
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 sta CLRREADAUX
|
.8 sta CLRREADAUX
|
||||||
|
@ -223,54 +222,57 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
|
||||||
ldy #S.FD.PIPE.Tail
|
ldy #S.FD.PIPE.Tail
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
iny
|
iny
|
||||||
lda IO.PIPE.BUFH
|
lda PIPE.BUFH
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
ldy #S.FD.PIPE.Free
|
ldy #S.FD.PIPE.Free
|
||||||
jsr IO.PIPE.ADD.CNT
|
jsr PIPE.ADD.CNT
|
||||||
|
|
||||||
iny #S.FD.PIPE.Used
|
iny #S.FD.PIPE.Used
|
||||||
|
|
||||||
jsr IO.PIPE.SUB.CNT
|
jsr PIPE.SUB.CNT
|
||||||
IO.READ.PIPE.EXIT
|
IO.READ.PIPE.EXIT
|
||||||
>LDYA IO.PIPE.CNT Y,A = bytes written
|
>LDYA PIPE.CNT Y,A = bytes written
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.PIPE.GET.BUF lda (pFD),y
|
PIPE.GET.BUF lda (pFD),y
|
||||||
sta IO.PIPE.BUFH
|
sta PIPE.BUFH
|
||||||
|
|
||||||
ldy #S.FD.PIPE.Size+1
|
ldy #S.FD.PIPE.Size+1
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
sta IO.PIPE.SIZEH
|
sta PIPE.SIZEH
|
||||||
|
|
||||||
ldy #S.FD.PIPE.hMem
|
ldy #S.FD.PIPE.hMem
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
|
|
||||||
>SYSCALL2 GetStkObjPtr
|
>SYSCALL2 GetStkObjPtr
|
||||||
|
|
||||||
sta IO.PIPE.BASEH Pipe Buffer Base
|
sta PIPE.BASEH Pipe Buffer Base
|
||||||
* clc
|
* clc
|
||||||
adc IO.PIPE.BUFH
|
adc PIPE.BUFH
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.PIPE.ADD.CNT clc
|
PIPE.ADD.CNT clc
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
adc IO.PIPE.CNT
|
adc PIPE.CNT
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
adc IO.PIPE.CNT+1
|
adc PIPE.CNT+1
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.PIPE.SUB.CNT sec
|
PIPE.SUB.CNT sec
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
sbc IO.PIPE.CNT
|
sbc PIPE.CNT
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
sbc IO.PIPE.CNT+1
|
sbc PIPE.CNT+1
|
||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -280,15 +282,16 @@ IO.EOF.PIPE clc
|
||||||
iny
|
iny
|
||||||
ora (pFD),y
|
ora (pFD),y
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 lda #$ff
|
.8 dec lda #$ff
|
||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.PIPE
|
SAVE usr/src/sys/kernel.s.pipe
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -12,7 +12,7 @@ NEW
|
||||||
* A = Child PSID
|
* A = Child PSID
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.ExecL >PULLB PS.Flags
|
K.ExecL >PULLB PS.Flags
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
jsr K.GetMem
|
jsr K.GetMem
|
||||||
bcs .99
|
bcs .99
|
||||||
|
@ -44,12 +44,13 @@ K.ExecL >PULLB PS.Flags
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.ExecV >PULLB PS.Flags
|
K.ExecV >PULLB PS.Flags
|
||||||
>PULLW PS.ArgV
|
>PULLW PS.ArgV
|
||||||
|
|
||||||
PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||||
bcs .9
|
bcs .9
|
||||||
sta .8+1
|
sta .8+1
|
||||||
|
|
||||||
stz K.IOBuf If !=0 after PS.Load, it's a script
|
stz K.IOBuf If !=0 after PS.Load, it's a script
|
||||||
|
|
||||||
jsr PS.Load
|
jsr PS.Load
|
||||||
bcs .90
|
bcs .90
|
||||||
|
|
||||||
|
@ -66,7 +67,7 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||||
|
|
||||||
.8 lda #$ff SELF MODIFIED
|
.8 lda #$ff SELF MODIFIED
|
||||||
* clc
|
* clc
|
||||||
.9
|
.9
|
||||||
PS.Exec.RTS rts
|
PS.Exec.RTS rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Fork
|
* # Fork
|
||||||
|
@ -80,17 +81,17 @@ PS.Exec.RTS rts
|
||||||
K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||||
bcs PS.Exec.RTS
|
bcs PS.Exec.RTS
|
||||||
sta .8+1
|
sta .8+1
|
||||||
|
|
||||||
ldy #S.PS.S
|
ldy #S.PS.S
|
||||||
lda #S.PS.S.RUN
|
lda #S.PS.S.RUN
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
|
|
||||||
ldy #S.PS.hCS
|
ldy #S.PS.hCS
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
jsr MEM.GetMemByID
|
jsr MEM.GetMemByID
|
||||||
jsr Mem.IncRefCnt
|
jsr Mem.IncRefCnt
|
||||||
|
|
||||||
ldy #S.MEM.PTR+1
|
ldy #S.MEM.PTR+1
|
||||||
lda (ZPMemMgrSPtr),y
|
lda (ZPMemMgrSPtr),y
|
||||||
pha
|
pha
|
||||||
|
@ -101,12 +102,12 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||||
dey
|
dey
|
||||||
pla
|
pla
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
|
|
||||||
ldy #S.PS.hDS
|
ldy #S.PS.hDS
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
jsr MEM.Dup
|
jsr MEM.Dup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.PS.hDS
|
ldy #S.PS.hDS
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
|
@ -121,7 +122,7 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
jsr MEM.Dup
|
jsr MEM.Dup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.PS.hSS
|
ldy #S.PS.hSS
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
|
@ -131,18 +132,18 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||||
dey
|
dey
|
||||||
pla
|
pla
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
|
|
||||||
ldy #S.PS.hARGV
|
ldy #S.PS.hARGV
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
jsr MEM.Dup
|
jsr MEM.Dup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.PS.hARGV
|
ldy #S.PS.hARGV
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
dey
|
dey
|
||||||
lda (ZPPtr1),y S.PS.ARGC
|
lda (ZPPtr1),y S.PS.ARGC
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
|
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
iny S.PS.hARGV
|
iny S.PS.hARGV
|
||||||
|
@ -154,20 +155,20 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||||
sta (PS.NewPSPtr),y Forked PS will get A=PSID=0
|
sta (PS.NewPSPtr),y Forked PS will get A=PSID=0
|
||||||
iny
|
iny
|
||||||
|
|
||||||
.1 lda (ZPPtr1),y
|
.1 lda (ZPPtr1),y
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
iny
|
iny
|
||||||
cpy #S.PS.hSession
|
cpy #S.PS.hSession
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #S.PS.ZP.LOCAL
|
ldy #S.PS.ZP.LOCAL
|
||||||
|
|
||||||
.2 lda (ZPPtr1),y
|
.2 lda (ZPPtr1),y
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
iny
|
iny
|
||||||
cpy #S.PS
|
cpy #S.PS
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
.8 lda #$ff SELF MODIFIED
|
.8 lda #$ff SELF MODIFIED
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
@ -257,7 +258,7 @@ PS.CreateChild ldx #0
|
||||||
|
|
||||||
ldy #S.PS.hENV
|
ldy #S.PS.hENV
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
|
||||||
jsr MEM.DupX dup hENV from parent PS
|
jsr MEM.DupX dup hENV from parent PS
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -275,7 +276,7 @@ PS.CreateChild ldx #0
|
||||||
iny
|
iny
|
||||||
cpy #S.PS.hStdErr+1
|
cpy #S.PS.hStdErr+1
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
ldy #S.PS.hSession
|
ldy #S.PS.hSession
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
|
@ -295,13 +296,13 @@ PS.CreateChild ldx #0
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
.8
|
.8
|
||||||
* lda #S.PS.S.INIT
|
* lda #S.PS.S.INIT
|
||||||
* ldy #S.PS.S
|
* ldy #S.PS.S
|
||||||
* sta (PS.NewPSPtr),y Make this PS Init....
|
* sta (PS.NewPSPtr),y Make this PS Init....
|
||||||
|
|
||||||
lda CORE.LastPSID Exit with A=PSID
|
lda CORE.LastPSID Exit with A=PSID
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 pha
|
.9 pha
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
lda CORE.LastPSID
|
lda CORE.LastPSID
|
||||||
|
@ -320,7 +321,7 @@ PS.Load ldy #$ff
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
>LDYA PS.ArgV found /, some path specified, no search
|
>LDYA PS.ArgV found /, some path specified, no search
|
||||||
jsr FS.STAT.YA
|
jsr PS.STAT.YA
|
||||||
bcc .6 REAL path in K.Buf256
|
bcc .6 REAL path in K.Buf256
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
|
@ -346,15 +347,15 @@ PS.Load ldy #$ff
|
||||||
bne PS.Load.IPATH
|
bne PS.Load.IPATH
|
||||||
|
|
||||||
jsr PS.Buf2IO .SYSTEM -> IOBUF
|
jsr PS.Buf2IO .SYSTEM -> IOBUF
|
||||||
|
|
||||||
* ldy #$ff
|
* ldy #$ff
|
||||||
|
|
||||||
*.8 iny
|
*.8 iny
|
||||||
* inx
|
* inx
|
||||||
* lda PS.T,y
|
* lda PS.T,y
|
||||||
* sta K.IOBuf-1,x
|
* sta K.IOBuf-1,x
|
||||||
* bne .8
|
* bne .8
|
||||||
|
|
||||||
>LDYAI PS.SHUTDOWN
|
>LDYAI PS.SHUTDOWN
|
||||||
jsr PS.Find.PATH
|
jsr PS.Find.PATH
|
||||||
bcs PS.Load.RTS
|
bcs PS.Load.RTS
|
||||||
|
@ -399,12 +400,12 @@ PS.Load.SCRIPT jsr PS.Buf2IO
|
||||||
beq .5
|
beq .5
|
||||||
|
|
||||||
eor #C.CR
|
eor #C.CR
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
sta K.Buf256-1,x K.Buf256 = "${ROOT}BIN/SHELL\0"
|
sta K.Buf256-1,x K.Buf256 = "${ROOT}BIN/SHELL\0"
|
||||||
|
|
||||||
.5 >LDYAI K.Buf256
|
.5 >LDYAI K.Buf256
|
||||||
jsr FS.STAT.YA
|
jsr PS.STAT.YA
|
||||||
bcs PS.Load.RTS
|
bcs PS.Load.RTS
|
||||||
|
|
||||||
lda K.S.STAT+S.STAT.P.TYPE
|
lda K.S.STAT+S.STAT.P.TYPE
|
||||||
|
@ -416,7 +417,7 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr4 save PTR to Code Segment
|
>STYA ZPPtr4 save PTR to Code Segment
|
||||||
|
|
||||||
phy
|
phy
|
||||||
ldy #S.PS.ZP.CODE+1
|
ldy #S.PS.ZP.CODE+1
|
||||||
sta (PS.NewPSPtr),y save pCode HI...
|
sta (PS.NewPSPtr),y save pCode HI...
|
||||||
|
@ -440,7 +441,7 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
|
||||||
.1 ldy #H.BIN.DS.SIZE+1
|
.1 ldy #H.BIN.DS.SIZE+1
|
||||||
lda (ZPPtr4),y Load DS.SIZE HI
|
lda (ZPPtr4),y Load DS.SIZE HI
|
||||||
tax
|
tax
|
||||||
dey
|
dey
|
||||||
ora (ZPPtr4),y
|
ora (ZPPtr4),y
|
||||||
|
|
||||||
beq .2 DS.SIZE=0...
|
beq .2 DS.SIZE=0...
|
||||||
|
@ -490,7 +491,7 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
|
||||||
ldy #H.BIN.SS.SIZE ...plus Stack size
|
ldy #H.BIN.SS.SIZE ...plus Stack size
|
||||||
* clc
|
* clc
|
||||||
adc (ZPPtr4),y
|
adc (ZPPtr4),y
|
||||||
|
|
||||||
ldy #S.PS.ZP.STACK
|
ldy #S.PS.ZP.STACK
|
||||||
sta (PS.NewPSPtr),y
|
sta (PS.NewPSPtr),y
|
||||||
|
|
||||||
|
@ -527,8 +528,8 @@ PS.Load.ROOT .AZ "ROOT"
|
||||||
PS.Load.HEADER .AZ "#!/"
|
PS.Load.HEADER .AZ "#!/"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* K.Buf256= /.../SHELL, K.IOBuf=/.../SCRIPT
|
* K.Buf256= /.../SHELL, K.IOBuf=/.../SCRIPT
|
||||||
* - or -
|
* - or -
|
||||||
* K.Buf256=/.../BINFILE,K.IOBuf=0
|
* K.Buf256=/.../BINFILE,K.IOBuf=0
|
||||||
* Buf256+IOBUF(?)+PS.ArgV[1,...] -> #S.PS.hARGV
|
* Buf256+IOBUF(?)+PS.ArgV[1,...] -> #S.PS.hARGV
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.AddArgV ldy #$ff In both cases, remove ARGV[0]
|
PS.AddArgV ldy #$ff In both cases, remove ARGV[0]
|
||||||
|
@ -704,7 +705,7 @@ K.Kill.2 ldy #S.PS.hSession
|
||||||
ldy #S.PS.hENV
|
ldy #S.PS.hENV
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
>SYSCALL2 FreeStkObj
|
>SYSCALL2 FreeStkObj
|
||||||
|
|
||||||
ldx #4
|
ldx #4
|
||||||
|
|
||||||
.11 ldy .10,x
|
.11 ldy .10,x
|
||||||
|
@ -745,19 +746,21 @@ K.Kill.2 ldy #S.PS.hSession
|
||||||
* # LoadTxtFile
|
* # LoadTxtFile
|
||||||
* Load TXT a file in memory (with ending 0)
|
* Load TXT a file in memory (with ending 0)
|
||||||
* ## C
|
* ## C
|
||||||
* `int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
* `int loadtxtfile ( const char * filename );`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* `>PUSHW filename`
|
* `>LDYA filename`
|
||||||
* `>PUSHB flags`
|
|
||||||
* `>PUSHB ftype`
|
|
||||||
* `>PUSHW auxtype`
|
|
||||||
* `>SYSCALL loadtxtfile`
|
* `>SYSCALL loadtxtfile`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* Y,A = File Length (without ending 0)
|
* Y,A = File Length (without ending 0)
|
||||||
* X = hMem of Loaded File
|
* X = hMem of Loaded File
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.LoadTxtFile sec
|
K.LoadTxtFile >PUSHYA
|
||||||
|
>PUSHBI O.RDONLY
|
||||||
|
>PUSHBI S.FI.T.TXT
|
||||||
|
>PUSHWZ Aux type
|
||||||
|
|
||||||
|
sec
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # LoadFile
|
* # LoadFile
|
||||||
|
@ -776,15 +779,16 @@ K.LoadTxtFile sec
|
||||||
* X = hMem of Loaded File
|
* X = hMem of Loaded File
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.LoadFile clc
|
K.LoadFile clc
|
||||||
|
|
||||||
ror PS.bTXT
|
ror PS.bTXT
|
||||||
|
|
||||||
>SYSCALL2 FOpen
|
>SYSCALL2 FOpen
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
sta PS.hFILE
|
sta PS.hFILE
|
||||||
|
>PUSHA
|
||||||
jsr FS.FSTAT.A
|
>PUSHWI K.S.Stat
|
||||||
|
>SYSCALL2 FStat
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
lda K.S.Stat+S.STAT.SIZE+3
|
lda K.S.Stat+S.STAT.SIZE+3
|
||||||
|
@ -795,8 +799,10 @@ K.LoadFile clc
|
||||||
|
|
||||||
bit PS.bTXT Add 1 to buffer size for ending 0
|
bit PS.bTXT Add 1 to buffer size for ending 0
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
inc
|
inc
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
@ -878,9 +884,9 @@ K.FileSearch >PULLW .4+1 DstStat
|
||||||
>PULLW .2+1 DstBuf
|
>PULLW .2+1 DstBuf
|
||||||
>PULLW PS.Find.2+1 path to search
|
>PULLW PS.Find.2+1 path to search
|
||||||
>PULLW PS.Find.4+1 filename to find
|
>PULLW PS.Find.4+1 filename to find
|
||||||
|
|
||||||
stz PS.Find.98+1
|
stz PS.Find.98+1
|
||||||
|
|
||||||
jsr PS.Find
|
jsr PS.Find
|
||||||
bcs K.FileSearch.RTS
|
bcs K.FileSearch.RTS
|
||||||
|
|
||||||
|
@ -903,11 +909,11 @@ PS.Find.CWD >STYA PS.Find.4+1 filename to find
|
||||||
lda (PS.NewPSPtr),y
|
lda (PS.NewPSPtr),y
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA PS.Find.2+1
|
>STYA PS.Find.2+1
|
||||||
|
|
||||||
stz PS.Find.98+1
|
stz PS.Find.98+1
|
||||||
|
|
||||||
bra PS.Find
|
bra PS.Find
|
||||||
|
|
||||||
PS.Find.LIB ldx #0
|
PS.Find.LIB ldx #0
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
PS.Find.DRV ldx #2
|
PS.Find.DRV ldx #2
|
||||||
|
@ -925,7 +931,7 @@ PS.Find.PATH ldx #4
|
||||||
stx PS.Find.98+1
|
stx PS.Find.98+1
|
||||||
|
|
||||||
PS.Find stz PS.Find.1+1
|
PS.Find stz PS.Find.1+1
|
||||||
|
|
||||||
PS.Find.1 ldy #0 Self Modified Index in Search list string
|
PS.Find.1 ldy #0 Self Modified Index in Search list string
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -958,7 +964,7 @@ PS.Find.4 lda $ffff,y Self Modified, Append Filename...
|
||||||
bra PS.Find.4
|
bra PS.Find.4
|
||||||
|
|
||||||
PS.Find.5 >LDYAI K.Buf256
|
PS.Find.5 >LDYAI K.Buf256
|
||||||
jsr FS.STAT.YA
|
jsr PS.STAT.YA
|
||||||
bcs PS.Find.1 Failed...retry next path...
|
bcs PS.Find.1 Failed...retry next path...
|
||||||
|
|
||||||
lda K.S.STAT+S.STAT.P.TYPE
|
lda K.S.STAT+S.STAT.P.TYPE
|
||||||
|
@ -971,7 +977,7 @@ PS.Find.5 >LDYAI K.Buf256
|
||||||
|
|
||||||
PS.Find.98 lda #$ff SELF MODIFIED : Discard Search list
|
PS.Find.98 lda #$ff SELF MODIFIED : Discard Search list
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
jsr K.FreeMem
|
jsr K.FreeMem
|
||||||
|
|
||||||
.1 lda #MLI.E.FNOTFND
|
.1 lda #MLI.E.FNOTFND
|
||||||
|
@ -987,6 +993,11 @@ PS.Buf2IO ldx #$ff
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
PS.STAT.YA >PUSHYA
|
||||||
|
>PUSHWI K.S.STAT
|
||||||
|
>SYSCALL2 Stat
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
PS.SHUTDOWN .AZ "shutdown"
|
PS.SHUTDOWN .AZ "shutdown"
|
||||||
*PS.T .AZ " -T 3"
|
*PS.T .AZ " -T 3"
|
||||||
PS.VARS .DA .1
|
PS.VARS .DA .1
|
||||||
|
@ -1028,6 +1039,6 @@ K.GetMemStat >STYA ZPPtr1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.PS
|
SAVE usr/src/sys/kernel.s.ps
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -833,6 +833,6 @@ PWDX.GROUP .AS "root:0"
|
||||||
PWDX.GROUP.Size .EQ *-PWDX.GROUP
|
PWDX.GROUP.Size .EQ *-PWDX.GROUP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.PWDX
|
SAVE usr/src/sys/kernel.s.pwdx
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -151,6 +151,6 @@ SHARED.GetScrnDevX
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.SHARED
|
SAVE usr/src/sys/kernel.s.shared
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -87,6 +87,6 @@ K.SListFree >PULLA
|
||||||
K.SListNew jmp K.SYSCALL.JMPX
|
K.SListNew jmp K.SYSCALL.JMPX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.SLIST
|
SAVE usr/src/sys/kernel.s.slist
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -504,6 +504,6 @@ SLIST.ToNextBlock.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.SLISTX
|
SAVE usr/src/sys/kernel.s.slistx
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -93,8 +93,28 @@ K.FStat jsr PFT.CheckNode2
|
||||||
|
|
||||||
>PULLW K.Stat.Store.2+1
|
>PULLW K.Stat.Store.2+1
|
||||||
|
|
||||||
jsr FS.FSTAT
|
>PULLA
|
||||||
|
tax
|
||||||
|
lda Nod.Table.hName-2,x get path
|
||||||
|
jsr K.GetMemPtr
|
||||||
|
jsr PFT.YAToMLIPATH
|
||||||
|
|
||||||
|
jsr FS.Stat.203
|
||||||
bcs K.Stat.Store.RTS
|
bcs K.Stat.Store.RTS
|
||||||
|
|
||||||
|
ldy #S.FD.REG.REF
|
||||||
|
lda (pFD),y
|
||||||
|
sta K.MLI.PARAMS+1
|
||||||
|
|
||||||
|
>MLICALL MLIGETEOF
|
||||||
|
bcs K.Stat.Store.RTS
|
||||||
|
|
||||||
|
ldx #2
|
||||||
|
|
||||||
|
.1 lda K.MLI.PARAMS+2,x
|
||||||
|
sta K.S.STAT+S.STAT.SIZE,x
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
K.Stat.Store ldy #S.STAT-1
|
K.Stat.Store ldy #S.STAT-1
|
||||||
|
|
||||||
|
@ -174,10 +194,10 @@ K.MKFIFO jsr STAT.PullPathAndMode
|
||||||
bcs K.Stat.Store.RTS
|
bcs K.Stat.Store.RTS
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
.1 lda DEV.FIFO,y
|
.1 lda STAT.FIFO,y
|
||||||
sta (ZPPtr1),y fill pathname buffer
|
sta (ZPPtr1),y fill pathname buffer
|
||||||
iny
|
iny
|
||||||
cpy #9
|
cpy #4
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda IO.hFD
|
lda IO.hFD
|
||||||
|
@ -211,9 +231,10 @@ K.MkNod >PULLB IO.hFD
|
||||||
|
|
||||||
K.MkNod.I ldx #2
|
K.MkNod.I ldx #2
|
||||||
|
|
||||||
.1 lda Nod.Table.hPath-2,x
|
.1 lda Nod.Table.hFD-2,x empty slot ?
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
|
inx
|
||||||
inx
|
inx
|
||||||
cpx #K.Nod.MAX+2
|
cpx #K.Nod.MAX+2
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -222,18 +243,21 @@ K.MkNod.I ldx #2
|
||||||
* sec
|
* sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 stx .3+1 Store hFILE
|
.2 stx IO.hDevNod
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
>SYSCALL2 StrDup
|
>SYSCALL2 StrDup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
txa
|
txa
|
||||||
|
|
||||||
.3 ldx #$ff SELF MODIFIED
|
.3 ldx IO.hDevNod
|
||||||
sta Nod.Table.hPath-2,x
|
sta Nod.Table.hName-2,x store path
|
||||||
lda IO.hFD
|
|
||||||
sta Nod.Table.hFD-2,x
|
.4 lda IO.hFD
|
||||||
txa hNODE
|
sta Nod.Table.hFD-2,x store hFD
|
||||||
|
|
||||||
|
txa hDevNod
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
@ -255,7 +279,7 @@ K.Pipe sta .1+1 SIZE HI
|
||||||
stx .8+1 save PIPE buffer
|
stx .8+1 save PIPE buffer
|
||||||
|
|
||||||
ldx #2
|
ldx #2
|
||||||
jsr IO.MkFD
|
jsr DEV.MkFD
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.1 lda #$ff SELF MODIFIED
|
.1 lda #$ff SELF MODIFIED
|
||||||
|
@ -288,6 +312,8 @@ STAT.PullPathAndMode
|
||||||
>PULLW ZPPtr1 pathname
|
>PULLW ZPPtr1 pathname
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
STAT.FIFO .AS "fifo"
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/sys/kernel.s.stat
|
SAVE usr/src/sys/kernel.s.stat
|
||||||
LOAD usr/src/sys/kernel.s
|
LOAD usr/src/sys/kernel.s
|
||||||
|
|
|
@ -210,17 +210,19 @@ K.FGetS jsr PFT.CheckNodeA
|
||||||
.1 jsr STDIO.Get.1
|
.1 jsr STDIO.Get.1
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
|
cmp #MLI.E.EOF
|
||||||
|
beq .9
|
||||||
|
|
||||||
cmp #E.NODATA
|
cmp #E.NODATA
|
||||||
sec
|
sec
|
||||||
bne .9 IO error
|
bne .9 IO error
|
||||||
|
|
||||||
.11 lda #0 BLOCKING
|
lda #0 BLOCKING
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 lda K.IOBuf
|
.2 lda K.IOBuf
|
||||||
cmp #C.LF Discard any leading LF from a previous CR/LF
|
cmp #C.LF Discard any leading LF from a prev CR/LF
|
||||||
* beq .8 returns as empty string
|
beq .1
|
||||||
beq .11 CS -> NODATA -> BLOCKING
|
|
||||||
|
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
beq .8 empty string
|
beq .8 empty string
|
||||||
|
@ -234,7 +236,7 @@ K.FGetS jsr PFT.CheckNodeA
|
||||||
lda ZPPtr1+1
|
lda ZPPtr1+1
|
||||||
eor #$ff
|
eor #$ff
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
|
*--------------------------------------
|
||||||
.3 inc ZPPtr1
|
.3 inc ZPPtr1
|
||||||
bne .4
|
bne .4
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
|
@ -377,25 +379,15 @@ K.UngetC clc
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FOpen jsr PFT.CheckPath4
|
K.FOpen jsr PFT.CheckPath4
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PULLW IO.Open.AUXTYPE
|
>PULLW IO.Open.AUXTYPE
|
||||||
>PULLB IO.Open.TYPE
|
>PULLB IO.Open.TYPE
|
||||||
>PULLB IO.Open.FLAGS
|
>PULLB IO.Open.FLAGS
|
||||||
|
|
||||||
inc pStack discard filename
|
inc pStack discard filename
|
||||||
inc pStack
|
inc pStack
|
||||||
|
|
||||||
jsr UNISTD.Open
|
jmp UNISTD.Open
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr STDIO.NewHFile
|
|
||||||
bcc .99
|
|
||||||
|
|
||||||
pha Save Error Code
|
|
||||||
lda IO.hFD
|
|
||||||
jsr K.Close
|
|
||||||
pla
|
|
||||||
sec
|
|
||||||
|
|
||||||
.9 >POP 6
|
.9 >POP 6
|
||||||
.99 rts
|
.99 rts
|
||||||
|
@ -411,21 +403,9 @@ K.FOpen jsr PFT.CheckPath4
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FClose jsr PFT.CheckNodeA
|
K.FClose jsr PFT.CheckNodeA
|
||||||
bcs K.FClose.RTS
|
bcs K.FRead.RTS
|
||||||
|
|
||||||
sta .1+1 store hFile
|
jmp UNISTD.Close
|
||||||
|
|
||||||
jsr UNISTD.Close
|
|
||||||
bcs K.FClose.RTS
|
|
||||||
|
|
||||||
.1 ldx #$ff SELF MODIFIED
|
|
||||||
stz OF.Table.hFD-1,x
|
|
||||||
|
|
||||||
lda OF.Table.hPath-1,x
|
|
||||||
beq K.FClose.RTS special files have no path
|
|
||||||
|
|
||||||
stz OF.Table.hPath-1,x
|
|
||||||
jmp K.FreeMem discard filename
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FRead (BLOCKING)
|
* # FRead (BLOCKING)
|
||||||
* Read bytes from file
|
* Read bytes from file
|
||||||
|
@ -446,7 +426,7 @@ K.FRead jsr PFT.CheckNodeA
|
||||||
jsr UNISTD.Read
|
jsr UNISTD.Read
|
||||||
bcs K.FWrite.9
|
bcs K.FWrite.9
|
||||||
|
|
||||||
K.FClose.RTS rts
|
K.FRead.RTS rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FWrite (BLOCKING)
|
* # FWrite (BLOCKING)
|
||||||
* Write bytes to file
|
* Write bytes to file
|
||||||
|
@ -463,7 +443,7 @@ K.FClose.RTS rts
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FWrite jsr PFT.CheckNodeA
|
K.FWrite jsr PFT.CheckNodeA
|
||||||
bcs K.FWrite.RET4
|
bcs K.FWrite.RET4
|
||||||
|
|
||||||
jsr UNISTD.Write
|
jsr UNISTD.Write
|
||||||
bcc K.FWrite.RTS
|
bcc K.FWrite.RTS
|
||||||
|
|
||||||
|
@ -682,48 +662,6 @@ K.Rename jsr PFT.CheckPath2
|
||||||
|
|
||||||
.9 >RET 4
|
.9 >RET 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* K.Buf256 = filepath
|
|
||||||
* X = hFD
|
|
||||||
*--------------------------------------
|
|
||||||
STDIO.NewHFile ldx #1
|
|
||||||
|
|
||||||
.1 lda OF.Table.hFD-1,x
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
inx
|
|
||||||
cpx #K.OF.MAX+1
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
lda #E.OOH
|
|
||||||
* sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.2 stx .4+1
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
lda (pFD)
|
|
||||||
cmp #S.FD.T.CDEV
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
cmp #S.FD.T.BDEV
|
|
||||||
beq .3 No hPath for DEV
|
|
||||||
|
|
||||||
>LDYAI K.buf256
|
|
||||||
>SYSCALL2 StrDup
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.3 txa
|
|
||||||
|
|
||||||
.4 ldx #$ff SELF MODIFIED
|
|
||||||
sta OF.Table.hPath-1,x
|
|
||||||
lda IO.hFD
|
|
||||||
sta OF.Table.hFD-1,x
|
|
||||||
txa hFILE
|
|
||||||
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/sys/kernel.s.stdio
|
SAVE usr/src/sys/kernel.s.stdio
|
||||||
LOAD usr/src/sys/kernel.s
|
LOAD usr/src/sys/kernel.s
|
||||||
|
|
|
@ -728,6 +728,6 @@ STDIO.Exit php
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.STDIO2
|
SAVE usr/src/sys/kernel.s.stdio2
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -577,6 +577,6 @@ ENV.GetP3LenY ldy #$ff
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.STDLIB
|
SAVE usr/src/sys/kernel.s.stdlib
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -249,6 +249,6 @@ SHARED.SPtr1PPtr2
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.STRING
|
SAVE usr/src/sys/kernel.s.string
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -69,6 +69,6 @@ STRV.Ptr1Ptr2cpy
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.STRV
|
SAVE usr/src/sys/kernel.s.strv
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -150,6 +150,6 @@ STRVX.NStrPtr1 ldy #$ff
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.STRVX
|
SAVE usr/src/sys/kernel.s.strvx
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -24,7 +24,6 @@ TERM.STATUS jsr TERM.GetIOCTLBufCntDCB
|
||||||
bra TERM.TOAUX
|
bra TERM.TOAUX
|
||||||
|
|
||||||
TERM.OPEN sta ZPDevID DEV.ID in A for OPEN
|
TERM.OPEN sta ZPDevID DEV.ID in A for OPEN
|
||||||
|
|
||||||
TERM.CONTROL
|
TERM.CONTROL
|
||||||
TERM.CLOSE jsr TERM.GetDCB
|
TERM.CLOSE jsr TERM.GetDCB
|
||||||
|
|
||||||
|
@ -104,6 +103,6 @@ TERM.GetDevName sta CLRREADAUX
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.TERM
|
SAVE usr/src/sys/kernel.s.term
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -1521,6 +1521,6 @@ BUF.BASEH .DA /S.DCB.TTY+0
|
||||||
.DA /S.DCB.TTY+1840
|
.DA /S.DCB.TTY+1840
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.TERMX
|
SAVE usr/src/sys/kernel.s.termx
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -76,6 +76,6 @@ K.CTime2Time >PULLW FORPNT S.TIME
|
||||||
jmp K.SYSCALL.JMPX
|
jmp K.SYSCALL.JMPX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.TIME
|
SAVE usr/src/sys/kernel.s.time
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -459,6 +459,6 @@ TIMEX.IsLeap cmp #0 Year = 00 ?
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.TIMEX
|
SAVE usr/src/sys/kernel.s.timex
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -21,61 +21,30 @@ K.Open jsr PFT.YAToMLIPATH
|
||||||
stz IO.Open.AUXTYPE
|
stz IO.Open.AUXTYPE
|
||||||
stz IO.Open.AUXTYPE+1
|
stz IO.Open.AUXTYPE+1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
UNISTD.Open ldx #5 /DEV/
|
UNISTD.Open ldx #5 /dev/
|
||||||
cpx K.MLI.PATH
|
cpx K.MLI.PATH
|
||||||
bcs .99
|
bcs .8
|
||||||
|
|
||||||
.1 lda K.MLI.PATH,x
|
.1 lda K.MLI.PATH,x
|
||||||
cmp DEV.FIFO-1,x
|
cmp UNISTD.DEV-1,x
|
||||||
bne .99
|
bne .8
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* /DEV/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE)
|
* /DEV/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
>LDYAI K.MLI.PATH+6 skip $/DEV/
|
>LDYAI K.MLI.PATH+6 skip $/dev/
|
||||||
|
|
||||||
jsr K.GetDevByName
|
jsr K.GetDevByName
|
||||||
bcc .7
|
bcs .9
|
||||||
|
|
||||||
ldx #2
|
|
||||||
.10 lda Nod.Table.hPath-2,x
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
|
||||||
>STYA ZPPtr1
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.2 lda (ZPPtr1),y
|
|
||||||
iny
|
|
||||||
cmp K.MLI.PATH,y
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
cmp #0 end of string ?
|
|
||||||
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
lda Nod.Table.hFD-2,x return hFD
|
|
||||||
jsr UNISTD.GetPFD
|
|
||||||
bra .71
|
|
||||||
|
|
||||||
.3 inx
|
|
||||||
cpx #K.NOD.MAX+2
|
|
||||||
bne .10
|
|
||||||
|
|
||||||
lda #MLI.E.NODEV
|
|
||||||
* sec
|
|
||||||
rts no OF found
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.7 stx IO.hFD
|
stx IO.hDevNod pFD set by GetDevByName
|
||||||
>STYA pFD
|
|
||||||
|
|
||||||
.71 lda (pFD) #S.FD.T
|
lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
|
|
||||||
jmp (.8-2,x)
|
jmp (.2-2,x)
|
||||||
.8
|
.2
|
||||||
* .DA STDIO.IOERR REG
|
* .DA STDIO.IOERR REG
|
||||||
.DA STDIO.IOERR DIR
|
.DA STDIO.IOERR DIR
|
||||||
.DA IO.OPEN.CDEV
|
.DA IO.OPEN.CDEV
|
||||||
|
@ -85,7 +54,9 @@ UNISTD.Open ldx #5 /DEV/
|
||||||
.DA IO.OPEN.SSOCK
|
.DA IO.OPEN.SSOCK
|
||||||
.DA IO.OPEN.PIPE
|
.DA IO.OPEN.PIPE
|
||||||
|
|
||||||
.99 jmp IO.OPEN.REG
|
.8 jmp FS.OPEN.REG
|
||||||
|
|
||||||
|
.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # close
|
* # close
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -95,7 +66,7 @@ UNISTD.Open ldx #5 /DEV/
|
||||||
* `lda fd`
|
* `lda fd`
|
||||||
* `>SYSCALL close`
|
* `>SYSCALL close`
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Close jsr UNISTD.GetPFD
|
K.Close jsr DEV.GetPFD
|
||||||
|
|
||||||
UNISTD.Close lda (pFD) #S.FD.T
|
UNISTD.Close lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
|
@ -122,12 +93,12 @@ UNISTD.Close lda (pFD) #S.FD.T
|
||||||
* CC: Y,A = bytes read
|
* CC: Y,A = bytes read
|
||||||
* CS: A = EC
|
* CS: A = EC
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Read jsr UNISTD.GetPFD
|
K.Read jsr DEV.GetPFD
|
||||||
|
|
||||||
UNISTD.Read lda (pFD) #S.FD.T
|
UNISTD.Read lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA IO.READ.REG
|
.1 .DA FS.READ.REG
|
||||||
.DA STDIO.IOERR DIR
|
.DA STDIO.IOERR DIR
|
||||||
.DA IO.READ.CDEV
|
.DA IO.READ.CDEV
|
||||||
.DA STDIO.IOERR BDEV
|
.DA STDIO.IOERR BDEV
|
||||||
|
@ -149,12 +120,12 @@ UNISTD.Read lda (pFD) #S.FD.T
|
||||||
* CC: Y,A = bytes written
|
* CC: Y,A = bytes written
|
||||||
* CS: A = EC
|
* CS: A = EC
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Write jsr UNISTD.GetPFD
|
K.Write jsr DEV.GetPFD
|
||||||
|
|
||||||
UNISTD.Write lda (pFD) #S.FD.T
|
UNISTD.Write lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA IO.WRITE.REG
|
.1 .DA FS.WRITE.REG
|
||||||
.DA STDIO.IOERR DIR
|
.DA STDIO.IOERR DIR
|
||||||
.DA IO.WRITE.CDEV
|
.DA IO.WRITE.CDEV
|
||||||
.DA STDIO.IOERR BDEV
|
.DA STDIO.IOERR BDEV
|
||||||
|
@ -163,28 +134,22 @@ UNISTD.Write lda (pFD) #S.FD.T
|
||||||
.DA IO.WRITE.SSOCK
|
.DA IO.WRITE.SSOCK
|
||||||
.DA IO.WRITE.PIPE
|
.DA IO.WRITE.PIPE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
UNISTD.GetPFD sta IO.hFD
|
|
||||||
jsr K.GetMemPtr
|
|
||||||
>STYA pFD
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
IO.OPEN.CDEV
|
IO.OPEN.CDEV
|
||||||
IO.OPEN.BDEV jsr SHARED.GetPDrv
|
IO.OPEN.BDEV ldx #IOCTL.OPEN
|
||||||
ldx #IOCTL.OPEN
|
lda IO.hDevNod
|
||||||
lda IO.hFD
|
jsr DEV.pDrvJmp
|
||||||
jsr SHARED.pDrvJmp
|
|
||||||
bcs IO.WRITE.CDEV.RTS
|
bcs IO.WRITE.CDEV.RTS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.OPEN.DSOCK
|
IO.OPEN.DSOCK
|
||||||
*--------------------------------------
|
IO.OPEN.SSOCK lda IO.hDevNod
|
||||||
IO.OPEN.SSOCK
|
|
||||||
lda IO.hFD
|
|
||||||
*--------------------------------------
|
|
||||||
IO.CLOSE.CDEV
|
|
||||||
IO.CLOSE.BDEV
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
IO.CLOSE.CDEV
|
||||||
|
IO.CLOSE.BDEV ldx #IOCTL.CLOSE
|
||||||
|
lda IO.hDevNod
|
||||||
|
jmp DEV.pDrvJmp
|
||||||
|
*--------------------------------------
|
||||||
IO.READ.CDEV ldx #IOCTL.READ
|
IO.READ.CDEV ldx #IOCTL.READ
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -192,9 +157,9 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE
|
||||||
|
|
||||||
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
|
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
|
||||||
jsr SHARED.GetPDrv
|
|
||||||
>LDYAI K.S.IOCTL
|
>LDYAI K.S.IOCTL
|
||||||
jsr SHARED.pDrvJmp
|
jsr DEV.pDrvJmp
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
|
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
|
||||||
|
@ -227,51 +192,7 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
|
||||||
.1 jmp $FFFF SELF MODIFIED
|
.1 jmp $FFFF SELF MODIFIED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
|
IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
|
||||||
jmp SHARED.GetDevStatus
|
jmp DEV.GetDevStatus
|
||||||
*--------------------------------------
|
|
||||||
* X = 0 > REG
|
|
||||||
* X = 1 > DIR
|
|
||||||
* X = 2 > PIPE
|
|
||||||
*--------------------------------------
|
|
||||||
IO.MkFD stx .8+1
|
|
||||||
|
|
||||||
ldy IO.MkFD.Y,x
|
|
||||||
lda #0
|
|
||||||
ldx #S.MEM.F.INIT0+S.MEM.F.FD
|
|
||||||
jsr MEM.GetMem.YAX
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STYA pFD
|
|
||||||
stx IO.hFD
|
|
||||||
|
|
||||||
.8 ldx #$ff SELF MODIFIED
|
|
||||||
lda IO.MkFD.T,x
|
|
||||||
sta (pFD) X = hFD, A = T
|
|
||||||
* clc
|
|
||||||
.9 rts
|
|
||||||
|
|
||||||
IO.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE
|
|
||||||
IO.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE
|
|
||||||
*--------------------------------------
|
|
||||||
IO.CLOSE.NOD ldx #2
|
|
||||||
|
|
||||||
lda IO.hFD
|
|
||||||
|
|
||||||
.1 cmp Nod.Table.hFD-2,x
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
stz Nod.Table.hFD-2,x
|
|
||||||
lda Nod.Table.hPath-2,x
|
|
||||||
stz Nod.Table.hPath-2,x
|
|
||||||
jmp K.FreeMem
|
|
||||||
|
|
||||||
.2 inx
|
|
||||||
cpx #K.Nod.MAX+2
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
lda #E.INVH
|
|
||||||
* sec
|
|
||||||
rts
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # ChOwn
|
* # ChOwn
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -310,17 +231,9 @@ K.ChOwn jsr PFT.CheckPath2
|
||||||
|
|
||||||
K.ChOwn.RET4 >RET 4
|
K.ChOwn.RET4 >RET 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHARED.GetPDrv ldy #S.FD.DEV.DRVPTR
|
UNISTD.DEV .AS "/dev/"
|
||||||
lda (pFD),y
|
|
||||||
sta pDRV
|
|
||||||
iny
|
|
||||||
lda (pFD),y
|
|
||||||
sta pDRV+1
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
DEV.FIFO .AS "/dev/fifo" STAT,UNISTD
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.UNISTD
|
SAVE usr/src/sys/kernel.s.unistd
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -89,6 +89,6 @@ Z80.6502Y .BS 1
|
||||||
Z80.6502P .BS 1
|
Z80.6502P .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.Z80
|
SAVE usr/src/sys/kernel.s.z80
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -125,7 +125,6 @@ DevMgr.Timer .BS 1
|
||||||
DevMgr.Stat .DA DevMgr.FreeMem
|
DevMgr.Stat .DA DevMgr.FreeMem
|
||||||
DevMgr.Free .DA DevMgr.FreeMem
|
DevMgr.Free .DA DevMgr.FreeMem
|
||||||
.DA DevMgr.HiMem
|
.DA DevMgr.HiMem
|
||||||
DevMgr.DevIdx .DA #1
|
|
||||||
DevMgr.FreeMem .EQ *
|
DevMgr.FreeMem .EQ *
|
||||||
.EP
|
.EP
|
||||||
A2osX.E0.S .EQ *-A2osX.E0.B
|
A2osX.E0.S .EQ *-A2osX.E0.B
|
||||||
|
|
|
@ -133,8 +133,7 @@ RW.Detect2 php
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.3 txa
|
.3 stx RWBankSelect
|
||||||
sta RWBankSelect
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Added after David Finnigan from macgui.com testing sessions
|
* Added after David Finnigan from macgui.com testing sessions
|
||||||
*
|
*
|
||||||
|
@ -143,17 +142,16 @@ RW.Detect2 php
|
||||||
*
|
*
|
||||||
* to address possibly a timing issue with Accelerators
|
* to address possibly a timing issue with Accelerators
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
cmp 0
|
lda 0
|
||||||
bne .4
|
tay
|
||||||
|
eor #$ff
|
||||||
eor #$FF
|
|
||||||
cmp 1
|
cmp 1
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
inx
|
inx
|
||||||
bpl .3
|
|
||||||
|
|
||||||
dex we reached 128,last detected page was 127
|
cpy #127
|
||||||
|
bne .3
|
||||||
|
|
||||||
.4 ldy #127 X = detected page count
|
.4 ldy #127 X = detected page count
|
||||||
|
|
||||||
|
@ -586,8 +584,10 @@ RWDRVX.RESTORE ldy #RWDRVX.XM.SIZE Now, restore begining of $300
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RWDRVX.XM.START ldy #2 2 pages to copy
|
RWDRVX.XM.START ldy #2 2 pages to copy
|
||||||
|
|
||||||
RWDRVX.XM.COPY jsr RWDRV.XM.RUN+RWDRVX.XM.SRCLC-RWDRVX.XM.START
|
RWDRVX.XM.COPY sta CLRALTZP
|
||||||
sta $C000,x
|
|
||||||
|
jsr RWDRV.XM.RUN+RWDRVX.XM.SRCLC-RWDRVX.XM.START
|
||||||
|
sta $C000,x select proper Main/Aux ZP/LC
|
||||||
sta RWBankSelect
|
sta RWBankSelect
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -597,8 +597,10 @@ RWDRVX.XM.SRC lda $FFFF,x
|
||||||
inx
|
inx
|
||||||
bne RWDRVX.XM.SRC
|
bne RWDRVX.XM.SRC
|
||||||
|
|
||||||
|
sta CLRALTZP
|
||||||
|
|
||||||
jsr RWDRV.XM.RUN+RWDRVX.XM.DSTLC-RWDRVX.XM.START
|
jsr RWDRV.XM.RUN+RWDRVX.XM.DSTLC-RWDRVX.XM.START
|
||||||
sta $C000,x
|
sta $C000,x select proper Main/Aux ZP/LC
|
||||||
sta RWBankSelect
|
sta RWBankSelect
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -617,7 +619,7 @@ RWDRVX.XM.DST sta $FFFF,x
|
||||||
stz RWBankSelect
|
stz RWBankSelect
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RWDRVX.XM.MNLC bit RRAMWRAMBNK1 ProDOS always uses LCBANK1
|
RWDRVX.XM.MNLC bit RRAMWRAMBNK1 ProDOS always uses LCBANK1
|
||||||
bit RRAMWRAMBNK1
|
* bit RRAMWRAMBNK1
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
|
@ -633,7 +635,7 @@ RWDRVX.XM.RWLC lda #$FF
|
||||||
bmi RWDRVX.XM.BANK
|
bmi RWDRVX.XM.BANK
|
||||||
|
|
||||||
bit RRAMWRAMBNK2
|
bit RRAMWRAMBNK2
|
||||||
bit RRAMWRAMBNK2
|
* bit RRAMWRAMBNK2
|
||||||
|
|
||||||
RWDRVX.XM.BANK lda #$FF
|
RWDRVX.XM.BANK lda #$FF
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue