Kernel 0.92

This commit is contained in:
Rémy GIBERT 2018-12-17 08:02:03 +01:00
parent 95a10cbd54
commit 2120025d9f
12 changed files with 381 additions and 313 deletions

View File

@ -3,7 +3,8 @@ PREFIX
AUTO 4,1 AUTO 4,1
#!/BIN/SHELL #!/BIN/SHELL
ECHO *** A2osX INIT Script *** ECHO *** A2osX INIT Script ***
SET PS1='$PWD' SET PS1 = '$PWD'
SET PATH = ${PATH}BIN/DEV/
# Main Screen # Main Screen
GETTY /DEV/TTY1 ${ROOT}SBIN/LOGIN & GETTY /DEV/TTY1 ${ROOT}SBIN/LOGIN &
GETTY /DEV/TTY2 ${ROOT}SBIN/LOGIN & GETTY /DEV/TTY2 ${ROOT}SBIN/LOGIN &

View File

@ -3,30 +3,25 @@ PREFIX
AUTO 4,1 AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
*** $3F0-$3FF IRQ Handler.... *** Dev.Table.hPath .EQ $1300 K.Dev.MAX
Dev.Table.hFD .EQ $1320 K.Dev.MAX
*-------------------------------------- *--------------------------------------
* Main/Aux $400 -> $7FF : TXT PAGE1 Console Screen Nod.Table.hPath .EQ $1340 K.NOD.MAX
* Main/Aux $800 -> $BFF : TXT PAGE2 System Screen Nod.Table.hFD .EQ $1360 K.NOD.MAX
*-------------------------------------- *--------------------------------------
* free $0C00->$17FF = $C00 (3072) Aux PS.Table.PID .EQ $1380 K.PS.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
*-------------------------------------- *--------------------------------------
Dev.Table.hPath .EQ $0C00 K.Dev.MAX OF.Table.hPath .EQ $1400 K.OF.MAX
Dev.Table.hFD .EQ $0C20 K.Dev.MAX OF.Table.hFD .EQ $1420 K.OF.MAX
*-------------------------------------- *--------------------------------------
Nod.Table.hPath .EQ $0C40 K.NOD.MAX Evt.Table .EQ $1440 K.EVT.MAX*S.EVT=4*8=32b
Nod.Table.hFD .EQ $0C60 K.NOD.MAX
*-------------------------------------- *--------------------------------------
PS.Table.PID .EQ $0C80 K.PS.MAX Flt.Table .EQ $1460 K.FLT.MAX*S.FLT=4*32=128b
PS.Table.hPS .EQ $0CA0 K.PS.MAX
PS.Table.Hits .EQ $0CC0 K.PS.MAX
PS.Table.Stats .EQ $0CE0 K.PS.MAX
*-------------------------------------- *--------------------------------------
OF.Table.hPath .EQ $0D00 K.OF.MAX
OF.Table.hFD .EQ $0D20 K.OF.MAX
*--------------------------------------
Evt.Table .EQ $0D40 K.EVT.MAX*S.EVT=4*8=32b
*--------------------------------------
Flt.Table .EQ $0D60 K.FLT.MAX*S.FLT=4*32=128b
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE INC/KERNEL.I SAVE INC/KERNEL.I

View File

@ -163,11 +163,17 @@ CORE.GetEvents lda #Evt.Table
dec CORE.TickSec dec CORE.TickSec
bne .3 not yet One Sec bne .3 not yet One Sec
lda SYS.BASL0+38 lda IRQ.Mode
eor #$C0 eor #$C0
sta IRQ.Mode
ldx A2osX.ASCREEN
cpx #1 /DEV/CONSOLE
bne .22
sta SYS.BASL0+38 sta SYS.BASL0+38
ldx CORE.TickPerSec .22 ldx CORE.TickPerSec
stx CORE.TickSec stx CORE.TickSec
lda #S.EVT.F.T1SEC lda #S.EVT.F.T1SEC

View File

@ -14,12 +14,12 @@ A2osX.D2.S .EQ A2osX.E0-A2osX.D2
A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0 A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0
*-------------------------------------- *--------------------------------------
.LIST OFF .LIST OFF
.DO A2osX.MAIN.S>$700 .DO Mem.MLoMem>$1fff
.LIST ON .LIST ON
* ERROR:MAIN too big * ERROR:MAIN too big
.LIST OFF .LIST OFF
.FIN .FIN
.DO A2osX.AUX.S>$C00 .DO Mem.XLoMem>$1fff
.LIST ON .LIST ON
* ERROR:AUX too big * ERROR:AUX too big
.LIST OFF .LIST OFF

View File

@ -91,30 +91,31 @@ K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!
*-------------------------------------- *--------------------------------------
K.STACKTOP .EQ $03ED XFer !!! down to $3E0 K.STACKTOP .EQ $03ED XFer !!! down to $3E0
*-------------------------------------- *--------------------------------------
K.Buf256 .EQ $0E00 *** $3F0-$3FF IRQ Handler.... ***
*-------------------------------------- *--------------------------------------
K.IOBuf .EQ $0F00 * Main/Aux $400 -> $7FF : TXT PAGE1 Screens
*--------------------------------------
* MemMgr : $0800->$0FFF MAIN/AUX (2 kBytes)
*--------------------------------------
Mem.Table .EQ $0800 Slot 0 is Reserved
Mem.LoMem .EQ $0800
Mem.Free .EQ $0802
Mem.HiMem .EQ $0804
Mem.LastSlot .EQ $0806
*--------------------------------------
* free $1000->$1FFF = $1000 (4096) Aux
*-------------------------------------- *--------------------------------------
*** Z80 Reserved $1000-10FF*** *** Z80 Reserved $1000-10FF***
*-------------------------------------- *--------------------------------------
Z80CODE .EQ $1000 (00000h) Up To $10FF Z80CODE .EQ $1000 (00000h) Up To $10FF
Z80STACK .EQ $10FF (000FFh) Down to $1000 Z80STACK .EQ $10FF (000FFh) Down to $1000
*-------------------------------------- *--------------------------------------
* CORE $1100->$17FF = $700 Main K.Buf256 .EQ $1100
*-------------------------------------- *--------------------------------------
* MemMgr : $1800->$1FFF MAIN/AUX (2 kBytes) K.IOBuf .EQ $1200
*-------------------------------------- *--------------------------------------
Mem.Table .EQ $1800 Slot 0 is Reserved
Mem.LoMem .EQ $1800
Mem.Free .EQ $1802
Mem.HiMem .EQ $1804
Mem.LastSlot .EQ $1806
*--------------------------------------
Mem.MLoMem .EQ $2000
Mem.MHiMem .EQ $BD00 Mem.MHiMem .EQ $BD00
Mem.XLoMem .EQ $2000
Mem.XHiMem .EQ $C000 Mem.XHiMem .EQ $C000
*--------------------------------------
DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC
*-------------------------------------- *--------------------------------------
H.BIN.T .EQ 0 H.BIN.T .EQ 0

View File

@ -322,6 +322,7 @@ GP.IrqH.Exit stz IRQ.SkipA2osX reset flag
sec sec
rts rts
*-------------------------------------- *--------------------------------------
IRQ.Mode .BS 1
IRQ.SkipA2osX .BS 1 IRQ.SkipA2osX .BS 1
IRQ.Tick .BS 1 IRQ.Tick .BS 1
IRQ.InKernel .BS 1 IRQ.InKernel .BS 1

View File

@ -309,7 +309,7 @@ MemMgrInit >LDYAI Mem.MHiMem
rts rts
*-------------------------------------- *--------------------------------------
SysScrInit jsr SysScrInit.EnvBuf SysScrInit jsr SysScrInit.DCBBuf
>PUSHWI FD.CONSOLE.NAME >PUSHWI FD.CONSOLE.NAME
>LDYAI FD.TTY >LDYAI FD.TTY
@ -326,7 +326,7 @@ SysScrInit jsr SysScrInit.EnvBuf
sbc /2048 sbc /2048
sta FD.TTY+S.FD.DEV.BUFPTR+1 sta FD.TTY+S.FD.DEV.BUFPTR+1
jsr SysScrInit.EnvBuf jsr SysScrInit.DCBBuf
>PUSHWI FD.TTY.NAME >PUSHWI FD.TTY.NAME
>LDYAI FD.TTY >LDYAI FD.TTY
@ -339,7 +339,7 @@ SysScrInit jsr SysScrInit.EnvBuf
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SysScrInit.EnvBuf SysScrInit.DCBBuf
clc clc
lda DevMgr.Free lda DevMgr.Free
@ -587,7 +587,7 @@ IrqMgrInit >LDYAI MSG.IRQ
bcs .1 bcs .1
lda #"C" lda #"C"
sta SYS.BASL0+38 sta IRQ.Mode
>LDYAI K.IrqH.TCLOCK >LDYAI K.IrqH.TCLOCK
>STYA K.IrqHAuxLC.JSR+1 >STYA K.IrqHAuxLC.JSR+1
@ -603,7 +603,7 @@ IrqMgrInit >LDYAI MSG.IRQ
bcs .8 bcs .8
lda #"V" lda #"V"
sta SYS.BASL0+38 sta IRQ.Mode
>LDYAI K.IrqH.VBL >LDYAI K.IrqH.VBL
>STYA K.IrqHAuxLC.JSR+1 >STYA K.IrqHAuxLC.JSR+1
@ -618,7 +618,7 @@ IrqMgrInit >LDYAI MSG.IRQ
.8 jsr IrqMgrInit.HZ2Tick .8 jsr IrqMgrInit.HZ2Tick
lda #"P" lda #"P"
sta SYS.BASL0+38 sta IRQ.Mode
>LDYAI MSG.IRQ.POLL >LDYAI MSG.IRQ.POLL
>SYSCALL puts >SYSCALL puts

View File

@ -33,6 +33,10 @@ K.IrqHAuxLC cld
lda $ff lda $ff
pha pha
lda RDPAGE2
pha
sta CLRPAGE2
lda RDREADAUX lda RDREADAUX
pha pha
sta CLRREADAUX Make sure we can access FD.Table sta CLRREADAUX Make sure we can access FD.Table
@ -79,6 +83,11 @@ K.IrqHAuxLC.3 pla Must keep Carry
sta SETREADAUX sta SETREADAUX
.2 pla .2 pla
bpl .3
sta SETPAGE2
.3 pla
sta $ff sta $ff
pla pla
sta $fe sta $fe
@ -96,10 +105,10 @@ K.IrqHAuxLC.3 pla Must keep Carry
tsx tsx
lda $104,x get RTI PC LO lda $104,x get RTI PC LO
bne .3 bne .4
dec $105,x adjust RTI PC HI dec $105,x adjust RTI PC HI
.3 dec $104,x back one byte, to make it a "RTS" return adddress .4 dec $104,x back one byte, to make it a "RTS" return adddress
lda $103,x get IRQ pushed P lda $103,x get IRQ pushed P
sta $101,x down 2 bytes sta $101,x down 2 bytes
@ -110,8 +119,8 @@ K.IrqHAuxLC.3 pla Must keep Carry
sta $103,x sta $103,x
lda #$A0+'S lda #$A0+'S
eor SYS.BASL0+37 eor SYS.BASL0+39
sta SYS.BASL0+37 sta SYS.BASL0+39
K.IrqHAuxLC.4 ldy #$ff Self Modified K.IrqHAuxLC.4 ldy #$ff Self Modified
K.IrqHAuxLC.5 ldx #$ff Self Modified K.IrqHAuxLC.5 ldx #$ff Self Modified

View File

@ -347,7 +347,7 @@ K.FreeMem tay
* Mem.Table is page aligned at $1800 * Mem.Table is page aligned at $1800
* S.MEM is 8 bytes * S.MEM is 8 bytes
*-------------------------------------- *--------------------------------------
.DO Mem.Table=$1800 .DO Mem.Table=$800
.ELSE .ELSE
!!!!!WARNING!!!!! !!!!!WARNING!!!!!
.FIN .FIN

View File

@ -36,9 +36,7 @@ DRV.TERM cld
.DA DRV.TERM.READ .DA DRV.TERM.READ
.DA DRV.TERM.WRITE .DA DRV.TERM.WRITE
*-------------------------------------- *--------------------------------------
DRV.TERM.STATUS >STYA ZPIOCTL DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufAndCnt
jsr DRV.TERM.GetIOCTLBuf
ldy #S.IOCTL.STATCODE ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y lda (ZPIOCTL),y
@ -118,6 +116,14 @@ DRV.TERM.CONTROL
jsr DRV.TERM.SCRCPY jsr DRV.TERM.SCRCPY
lda #0
ldy #S.DCB.TTY.bCURON
sta (ZPDCBPtr),y
ldy #S.DCB.TTY.bTITLE
sta (ZPDCBPtr),y
clc clc
rts rts
*-------------------------------------- *--------------------------------------
@ -151,14 +157,9 @@ DRV.TERM.CLOSE jsr DRV.TERM.GetDCB
sec sec
rts rts
*-------------------------------------- *--------------------------------------
DRV.TERM.READ >STYA ZPIOCTL DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufAndCnt
jsr DRV.TERM.GetIOCTLBufAndCnt
jsr DRV.TERM.GetDCB jsr DRV.TERM.GetDCB
jsr DRV.TERM.GetActive
bit bActive is screen active? bit bActive is screen active?
bpl .6 no....go check flush... bpl .6 no....go check flush...
@ -168,11 +169,19 @@ DRV.TERM.READ >STYA ZPIOCTL
eor (ZPDCBPtr),y eor (ZPDCBPtr),y
beq .1 beq .1
jsr CURBLNK jsr DRV.TERM.CURBLNK
.1 lda OPENAPPLE .1 lda OPENAPPLE
bpl .11
lda KBD
bmi .6 Open apple key, not for us... bmi .6 Open apple key, not for us...
jsr DRV.TERM.Title.ON
bra .6
.11 jsr DRV.TERM.Title.OFF
lda KBD lda KBD
bpl .6 bpl .6
sta KBDSTROBE sta KBDSTROBE
@ -233,20 +242,17 @@ DRV.TERM.READ >STYA ZPIOCTL
sec sec
rts rts
*-------------------------------------- *--------------------------------------
DRV.TERM.WRITE >STYA ZPIOCTL DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufAndCnt
jsr DRV.TERM.GetIOCTLBufAndCnt
jsr DRV.TERM.GetDCB jsr DRV.TERM.GetDCB
jsr DRV.TERM.GetActive
.1 inc ZPCount .1 inc ZPCount
bne .2 bne .2
inc ZPCount+1 inc ZPCount+1
beq .8 beq FS.8
.2 ldy #S.DCB.TTY.MODE .2 jsr DRV.TERM.CUROFF
ldy #S.DCB.TTY.MODE
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
tax tax
@ -258,13 +264,11 @@ DRV.TERM.WRITE >STYA ZPIOCTL
bra .1 bra .1
.3 jmp (.4,x) .3 jmp (.4,x)
.4 .DA DRV.TERM.COUT .4 .DA DRV.TERM.COUT
.DA DRV.TERM.ESC .DA DRV.TERM.ESC
.DA DRV.TERM.CSI .DA DRV.TERM.CSI
.DA DRV.TERM.IAC .DA DRV.TERM.IAC
.8 clc
rts
*-------------------------------------- *--------------------------------------
DRV.TERM.COUT lda (ZPBufPtr) DRV.TERM.COUT lda (ZPBufPtr)
@ -272,21 +276,12 @@ DRV.TERM.COUT lda (ZPBufPtr)
bne .1 bne .1
lda #S.DCB.TTY.MODE.IAC lda #S.DCB.TTY.MODE.IAC
sta (ZPDCBPtr),y bra DRV.TERM.SETMODE
ldy #S.DCB.TTY.INBUFFER .1 cmp #C.DEL
lda #S.DCB.TTY.INBUFFER beq DRV.TERM.COUT.DEL
sta (ZPDCBPtr),y
clc
rts
.1 pha
jsr CUROFF
pla
cmp #C.DEL
beq DEL
cmp #C.SPACE cmp #C.SPACE
bcc COUT.Ctrl bcc DRV.TERM.COUT.Ctrl
ldy #S.DCB.TTY.bINVERSE ldy #S.DCB.TTY.bINVERSE
ora (ZPDCBPtr),y ora (ZPDCBPtr),y
@ -313,7 +308,8 @@ FS ldy #S.DCB.TTY.CH
FS.8 clc FS.8 clc
rts rts
*-------------------------------------- *--------------------------------------
DEL ldy #S.DCB.TTY.CH DRV.TERM.COUT.DEL
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
beq .1 beq .1
dec dec
@ -336,7 +332,8 @@ DEL ldy #S.DCB.TTY.CH
ora (ZPDCBPtr),y ora (ZPDCBPtr),y
jmp SetCharAtCurPos jmp SetCharAtCurPos
*-------------------------------------- *--------------------------------------
COUT.Ctrl ldx #CtrlChars.Cnt-1 DRV.TERM.COUT.Ctrl
ldx #CtrlChars.Cnt-1
.1 cmp CtrlChars,x .1 cmp CtrlChars,x
beq .2 beq .2
@ -348,14 +345,27 @@ COUT.Ctrl ldx #CtrlChars.Cnt-1
.2 txa .2 txa
asl asl
tax tax
jmp (J.CtrlChars,x) jmp (.8,x)
.8 .DA ENQ 5
.DA BS 8
.DA LF 10
.DA FF 12
.DA CROUT 13
.DA FS 21
.DA ESC 27
*--------------------------------------
ESC lda #S.DCB.TTY.MODE.ESC
bra DRV.TERM.SETMODE
*-------------------------------------- *--------------------------------------
DRV.TERM.ESC lda (ZPBufPtr) DRV.TERM.ESC lda (ZPBufPtr)
cmp #'[' cmp #'['
bne .1 bne DRV.TERM.ESC1
lda #S.DCB.TTY.MODE.CSI lda #S.DCB.TTY.MODE.CSI
DRV.TERM.SETMODE
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
ldy #S.DCB.TTY.INBUFFER ldy #S.DCB.TTY.INBUFFER
lda #S.DCB.TTY.INBUFFER lda #S.DCB.TTY.INBUFFER
@ -363,7 +373,7 @@ DRV.TERM.ESC lda (ZPBufPtr)
clc clc
rts rts
.1 lda #0 y = #S.DCB.TTY.MODE DRV.TERM.ESC1 lda #0 y = #S.DCB.TTY.MODE
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
ldx #EscCodes.Cnt-1 ldx #EscCodes.Cnt-1
@ -802,36 +812,29 @@ RESET.MODE lda #0
clc clc
rts rts
*-------------------------------------- *--------------------------------------
RESET jsr RESET.MODE RESET.VALUES .DA #0 S.DCB.TTY.MODE
.DA #0 S.DCB.TTY.CH
.DA #0 S.DCB.TTY.CV
.DA #0 S.DCB.TTY.SCROLLTOP
.DA #23 S.DCB.TTY.SCROLLBOT
.DA #0 S.DCB.TTY.bCURON
.DA #0 S.DCB.TTY.CURCHAR
.DA #$80 S.DCB.TTY.bINVERSE
.DA #$80 S.DCB.TTY.bLINEWRAP
.DA #0 S.DCB.TTY.bTITLE
.DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTTAIL
.DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTHEAD
.DA #S.DCB.TTY.INBUFFER S.DCB.TTY.INBUFFER
*--------------------------------------
RESET ldy #1
ldy #S.DCB.TTY.OUTTAIL .1 iny
sta (ZPDCBPtr),y lda RESET.VALUES-2,y
iny
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
cpy #S.DCB.TTY.INBUFFER
bne .1
ldy #S.DCB.TTY.bCURON jmp DRV.TERM.CLRSCR
sta (ZPDCBPtr),y
dec
ldy #S.DCB.TTY.bLINEWRAP
sta (ZPDCBPtr),y
lda #0
ldy #S.DCB.TTY.SCROLLTOP
sta (ZPDCBPtr),y
iny
lda #23
sta (ZPDCBPtr),y
lda #S.DCB.TTY.OUTBUFFER
ldy #S.DCB.TTY.OUTTAIL
sta (ZPDCBPtr),y
iny
sta (ZPDCBPtr),y
jsr DRV.TERM.CLRSCR
*-------------------------------------- *--------------------------------------
RESETATTR lda #$80 RESETATTR lda #$80
ldy #S.DCB.TTY.bINVERSE ldy #S.DCB.TTY.bINVERSE
@ -839,14 +842,6 @@ RESETATTR lda #$80
clc clc
rts rts
*-------------------------------------- *--------------------------------------
J.CtrlChars .DA ENQ 5
.DA BS 8
.DA LF 10
.DA DRV.TERM.CLRSCR 12
.DA CROUT 13
.DA FS 21
.DA ESC 27
*--------------------------------------
ENQ ldx #0 ENQ ldx #0
.1 lda ENQ.String,x .1 lda ENQ.String,x
@ -881,6 +876,13 @@ BS ldy #S.DCB.TTY.CH
.2 clc .2 clc
rts rts
*-------------------------------------- *--------------------------------------
FF lda #0
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
dey
sta (ZPDCBPtr),y
jmp DRV.TERM.CLRSCR
*--------------------------------------
CROUT lda #0 CROUT lda #0
ldy #S.DCB.TTY.CH ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
@ -900,13 +902,6 @@ LF ldy #S.DCB.TTY.CV
clc clc
rts rts
*-------------------------------------- *--------------------------------------
ESC lda #S.DCB.TTY.MODE.ESC
ldy #S.DCB.TTY.MODE
sta (ZPDCBPtr),y
clc
rts
*--------------------------------------
SCROLL.UP ldy #S.DCB.TTY.SCROLLTOP SCROLL.UP ldy #S.DCB.TTY.SCROLLTOP
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
@ -916,7 +911,7 @@ SCROLL.UP ldy #S.DCB.TTY.SCROLLTOP
inx inx
jsr COPY.XtoL1 jsr DRV.TERM.COPY.XtoL1
txa txa
ldy #S.DCB.TTY.SCROLLBOT ldy #S.DCB.TTY.SCROLLBOT
@ -969,7 +964,7 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
dex dex
jsr COPY.XtoL1 jsr DRV.TERM.COPY.XtoL1
txa txa
ldy #S.DCB.TTY.SCROLLTOP ldy #S.DCB.TTY.SCROLLTOP
@ -979,40 +974,37 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
clc clc
rts rts
*-------------------------------------- *--------------------------------------
CUROFF ldy #S.DCB.TTY.bCURON DRV.TERM.CUROFF ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
beq DRV.TERM.CURBLNK.RTS
beq CUREXIT.RTS DRV.TERM.CURBLNK
bit bActive
CURBLNK bit bActive bpl DRV.TERM.CURBLNK.RTS do not Light if screen is not active
bmi CURBLNK1
ldy #S.DCB.TTY.bCURON ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
bne CURBLNK.OFF bne DRV.TERM.CURBLNK.OFF
rts do not Light if screen is not active
CURBLNK1 ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y
bne CURBLNK.OFF
jsr GetCharAtCurPos jsr GetCharAtCurPos
ldy #S.DCB.TTY.CURCHAR ldy #S.DCB.TTY.CURCHAR
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
and #$80 and #$80
eor #" " eor #" "
bra CUREXIT bra DRV.TERM.CURBLNK.SET
CURBLNK.OFF ldy #S.DCB.TTY.CURCHAR DRV.TERM.CURBLNK.OFF
ldy #S.DCB.TTY.CURCHAR
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
CUREXIT jsr SetCharAtCurPos DRV.TERM.CURBLNK.SET
jsr SetCharAtCurPos
ldy #S.DCB.TTY.bCURON ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
eor #CURSOR.BLINK.SPEED eor #CURSOR.BLINK.SPEED
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
CUREXIT.RTS rts DRV.TERM.CURBLNK.RTS
rts
*-------------------------------------- *--------------------------------------
Decimal.Out stz ZPTmpWord Decimal.Out stz ZPTmpWord
stz ZPTmpWord+1 stz ZPTmpWord+1
@ -1125,9 +1117,7 @@ DRV.TERM.GetDCB ldy #S.FD.DEV.DCBPTR
iny iny
lda (pFD),y lda (pFD),y
sta ZPDCBPtr+1 sta ZPDCBPtr+1
rts
*--------------------------------------
DRV.TERM.GetActive
ldy #S.DCB.TTY.DEVID ldy #S.DCB.TTY.DEVID
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
cmp A2osX.ASCREEN cmp A2osX.ASCREEN
@ -1138,7 +1128,16 @@ DRV.TERM.GetActive
rts rts
*-------------------------------------- *--------------------------------------
DRV.TERM.GetIOCTLBufAndCnt DRV.TERM.GetIOCTLBufAndCnt
ldy #S.IOCTL.BYTECNT >STYA ZPIOCTL
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
iny #S.IOCTL.BYTECNT
lda (ZPIOCTL),y lda (ZPIOCTL),y
eor #$ff eor #$ff
@ -1148,88 +1147,62 @@ DRV.TERM.GetIOCTLBufAndCnt
eor #$ff eor #$ff
sta ZPCount+1 sta ZPCount+1
DRV.TERM.GetIOCTLBuf
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
rts rts
*-------------------------------------- *--------------------------------------
DRV.TERM.SETUP.L1X DRV.TERM.Title.ON
ldy #S.FD.DEV.BUFPTR ldy #S.DCB.TTY.bTITLE
lda (pFD),y lda (ZPDCBPtr),y
clc bmi DRV.TERM.Title.RTS
adc BUF.BASEL,x
sta ZPBufBaseL1
lda #$ff
sta (ZPDCBPtr),y
ldy #S.DCB.TTY.DEVID
lda (ZPDCBPtr),y
tax
lda Dev.Table.hPath,x
jsr K.GetMemPtr
>STYA ZPTmpWord
ldx #0
jsr DRV.TERM.SETUP.L1X.SCR
ldy #0
.1 lda (ZPTmpWord),y
beq .2
cmp #$40
bcc .10
cmp #$5F
bcs .10
and #$3F
.10 phy
jsr SetCharAtY.SCR
ply
iny iny
lda (pFD),y bne .1
adc BUF.BASEH,x
sta ZPBufBaseL1+1
bit bActive .2 lda #C.SPACE
bpl .8
lda SCR.BASEL,x .3 phy
sta ZPScrBaseL1 jsr SetCharAtY.SCR
lda SCR.BASEH,x ply
sta ZPScrBaseL1+1 iny
.8 rts cpy #80
*-------------------------------------- bne .3
SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 DRV.TERM.Title.RTS
SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 rts
*--------------------------------------
BUF.BASEL .DA #S.TTYBUF.SCRBUF DRV.TERM.Title.OFF
.DA #S.TTYBUF.SCRBUF+80 ldy #S.DCB.TTY.bTITLE
.DA #S.TTYBUF.SCRBUF+160 lda (ZPDCBPtr),y
.DA #S.TTYBUF.SCRBUF+240 bpl DRV.TERM.Title.RTS
.DA #S.TTYBUF.SCRBUF+320
.DA #S.TTYBUF.SCRBUF+400 lda #$0
.DA #S.TTYBUF.SCRBUF+480 sta (ZPDCBPtr),y
.DA #S.TTYBUF.SCRBUF+560 jmp DRV.TERM.LINE0CPY
.DA #S.TTYBUF.SCRBUF+640
.DA #S.TTYBUF.SCRBUF+720
.DA #S.TTYBUF.SCRBUF+800
.DA #S.TTYBUF.SCRBUF+880
.DA #S.TTYBUF.SCRBUF+960
.DA #S.TTYBUF.SCRBUF+1040
.DA #S.TTYBUF.SCRBUF+1120
.DA #S.TTYBUF.SCRBUF+1200
.DA #S.TTYBUF.SCRBUF+1280
.DA #S.TTYBUF.SCRBUF+1360
.DA #S.TTYBUF.SCRBUF+1440
.DA #S.TTYBUF.SCRBUF+1520
.DA #S.TTYBUF.SCRBUF+1600
.DA #S.TTYBUF.SCRBUF+1680
.DA #S.TTYBUF.SCRBUF+1760
.DA #S.TTYBUF.SCRBUF+1840
BUF.BASEH .DA /S.TTYBUF.SCRBUF
.DA /S.TTYBUF.SCRBUF+80
.DA /S.TTYBUF.SCRBUF+160
.DA /S.TTYBUF.SCRBUF+240
.DA /S.TTYBUF.SCRBUF+320
.DA /S.TTYBUF.SCRBUF+400
.DA /S.TTYBUF.SCRBUF+480
.DA /S.TTYBUF.SCRBUF+560
.DA /S.TTYBUF.SCRBUF+640
.DA /S.TTYBUF.SCRBUF+720
.DA /S.TTYBUF.SCRBUF+800
.DA /S.TTYBUF.SCRBUF+880
.DA /S.TTYBUF.SCRBUF+960
.DA /S.TTYBUF.SCRBUF+1040
.DA /S.TTYBUF.SCRBUF+1120
.DA /S.TTYBUF.SCRBUF+1200
.DA /S.TTYBUF.SCRBUF+1280
.DA /S.TTYBUF.SCRBUF+1360
.DA /S.TTYBUF.SCRBUF+1440
.DA /S.TTYBUF.SCRBUF+1520
.DA /S.TTYBUF.SCRBUF+1600
.DA /S.TTYBUF.SCRBUF+1680
.DA /S.TTYBUF.SCRBUF+1760
.DA /S.TTYBUF.SCRBUF+1840
*-------------------------------------- *--------------------------------------
CtrlChars .HS 05080A0C0D151B CtrlChars .HS 05080A0C0D151B
CtrlChars.Cnt .EQ *-CtrlChars CtrlChars.Cnt .EQ *-CtrlChars

View File

@ -2,6 +2,80 @@ NEW
PREFIX PREFIX
AUTO 4,1 AUTO 4,1
*-------------------------------------- *--------------------------------------
DRV.TERM.SETUP.L1X
ldy #S.FD.DEV.BUFPTR
lda (pFD),y
clc
adc BUF.BASEL,x
sta ZPBufBaseL1
iny
lda (pFD),y
adc BUF.BASEH,x
sta ZPBufBaseL1+1
bit bActive
bpl DRV.TERM.SETUP.L1X.8
DRV.TERM.SETUP.L1X.SCR
lda SCR.BASEL,x
sta ZPScrBaseL1
lda SCR.BASEH,x
sta ZPScrBaseL1+1
DRV.TERM.SETUP.L1X.8
rts
*--------------------------------------
SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07
*--------------------------------------
BUF.BASEL .DA #S.TTYBUF.SCRBUF
.DA #S.TTYBUF.SCRBUF+80
.DA #S.TTYBUF.SCRBUF+160
.DA #S.TTYBUF.SCRBUF+240
.DA #S.TTYBUF.SCRBUF+320
.DA #S.TTYBUF.SCRBUF+400
.DA #S.TTYBUF.SCRBUF+480
.DA #S.TTYBUF.SCRBUF+560
.DA #S.TTYBUF.SCRBUF+640
.DA #S.TTYBUF.SCRBUF+720
.DA #S.TTYBUF.SCRBUF+800
.DA #S.TTYBUF.SCRBUF+880
.DA #S.TTYBUF.SCRBUF+960
.DA #S.TTYBUF.SCRBUF+1040
.DA #S.TTYBUF.SCRBUF+1120
.DA #S.TTYBUF.SCRBUF+1200
.DA #S.TTYBUF.SCRBUF+1280
.DA #S.TTYBUF.SCRBUF+1360
.DA #S.TTYBUF.SCRBUF+1440
.DA #S.TTYBUF.SCRBUF+1520
.DA #S.TTYBUF.SCRBUF+1600
.DA #S.TTYBUF.SCRBUF+1680
.DA #S.TTYBUF.SCRBUF+1760
.DA #S.TTYBUF.SCRBUF+1840
BUF.BASEH .DA /S.TTYBUF.SCRBUF
.DA /S.TTYBUF.SCRBUF+80
.DA /S.TTYBUF.SCRBUF+160
.DA /S.TTYBUF.SCRBUF+240
.DA /S.TTYBUF.SCRBUF+320
.DA /S.TTYBUF.SCRBUF+400
.DA /S.TTYBUF.SCRBUF+480
.DA /S.TTYBUF.SCRBUF+560
.DA /S.TTYBUF.SCRBUF+640
.DA /S.TTYBUF.SCRBUF+720
.DA /S.TTYBUF.SCRBUF+800
.DA /S.TTYBUF.SCRBUF+880
.DA /S.TTYBUF.SCRBUF+960
.DA /S.TTYBUF.SCRBUF+1040
.DA /S.TTYBUF.SCRBUF+1120
.DA /S.TTYBUF.SCRBUF+1200
.DA /S.TTYBUF.SCRBUF+1280
.DA /S.TTYBUF.SCRBUF+1360
.DA /S.TTYBUF.SCRBUF+1440
.DA /S.TTYBUF.SCRBUF+1520
.DA /S.TTYBUF.SCRBUF+1600
.DA /S.TTYBUF.SCRBUF+1680
.DA /S.TTYBUF.SCRBUF+1760
.DA /S.TTYBUF.SCRBUF+1840
*--------------------------------------
DRV.TERM.CLRSCR ldx #23 DRV.TERM.CLRSCR ldx #23
sta SET80STORE sta SET80STORE
@ -48,21 +122,23 @@ DRV.TERM.CLRSCR ldx #23
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
rts rts
*-------------------------------------- *--------------------------------------
DRV.TERM.SCRCPY ldx #0 DRV.TERM.LINE0CPY
ldx #0
.HS 2C BIT ABS
DRV.TERM.SCRCPY ldx #23
sta SET80STORE sta SET80STORE
.1 ldy #S.FD.DEV.BUFPTR .1 ldy #S.FD.DEV.BUFPTR
lda (pFD),y lda (pFD),y
clc clc
adc BUF.BASEL,x adc BUF.BASEL,x
sta .2+1 sta .80+1
sta .3+1
iny iny
lda (pFD),y lda (pFD),y
adc BUF.BASEH,x adc BUF.BASEH,x
sta .2+2 sta .80+2
sta .3+2
lda SCR.BASEL,x lda SCR.BASEL,x
sta ZPScrBaseL1 sta ZPScrBaseL1
@ -74,94 +150,39 @@ DRV.TERM.SCRCPY ldx #0
sta SETREADAUX sta SETREADAUX
ldx #78 ldx #78
ldy #39
sta SETPAGE2 sta SETPAGE2
.2 lda $ffff,x SELF MODIFIED ldy #39
sta (ZPScrBaseL1),y
dex jsr .8
dex
dey
bpl .2
ldx #79 ldx #79
ldy #39
sta CLRPAGE2 sta CLRPAGE2
.3 lda $ffff,x SELF MODIFIED ldy #39
sta (ZPScrBaseL1),y
dex jsr .8
dex
dey
bpl .3
sta CLRREADAUX sta CLRREADAUX
plx plx
inx dex
cpx #24
bne .1 bpl .1
rts rts
*--------------------------------------
SetCharAtCurPos pha .8 ldy #39
ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y .80 lda $ffff,x SELF MODIFIED
tax sta (ZPScrBaseL1),y
dex
dex
dey dey
lda (ZPDCBPtr),y bpl .80
tay
pla
*--------------------------------------
SetCharAtYX cmp #$40
bcc .1
cmp #$5F
bcs .1
and #$3F
.1 pha
phy
jsr DRV.TERM.SETUP.L1X
ply
pla
sta SETWRITEAUX
sta (ZPBufBaseL1),y
sta CLRWRITEAUX
bit bActive
bpl .8
pha
tya
lsr
tay
pla
bcs .2
sta SET80STORE
sta SETPAGE2
.2 sta (ZPScrBaseL1),y
sta CLRPAGE2
.8 rts
*--------------------------------------
GetCharAtCurPos ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
tax
jsr DRV.TERM.SETUP.L1X
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
tay
sta SETREADAUX
lda (ZPBufBaseL1),y
sta CLRREADAUX
rts rts
*-------------------------------------- *--------------------------------------
COPY.XtoL1 ldy #79 DRV.TERM.COPY.XtoL1
ldy #79
sta SETWRITEAUX sta SETWRITEAUX
sta SETREADAUX sta SETREADAUX
@ -196,6 +217,65 @@ COPY.XtoL1 ldy #79
bpl .7 bpl .7
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
SetCharAtCurPos pha
ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
tax
dey
lda (ZPDCBPtr),y
tay
pla
*--------------------------------------
SetCharAtYX cmp #$40
bcc .1
cmp #$5F
bcs .1
and #$3F
.1 pha
phy
jsr DRV.TERM.SETUP.L1X
ply
pla
sta SETWRITEAUX
sta (ZPBufBaseL1),y
sta CLRWRITEAUX
bit bActive
bpl SetCharAtYX.8
SetCharAtY.SCR
pha
tya
lsr
tay
pla
sta SET80STORE
bcs .2
sta SETPAGE2
.2 sta (ZPScrBaseL1),y
sta CLRPAGE2
SetCharAtYX.8 rts
*--------------------------------------
GetCharAtCurPos ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
tax
jsr DRV.TERM.SETUP.L1X
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
tay
sta SETREADAUX
lda (ZPBufBaseL1),y
sta CLRREADAUX
rts
*--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.TERMLC SAVE USR/SRC/SYS/KERNEL.S.TERMLC
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S

View File

@ -21,13 +21,16 @@ AUTO 4,1
.INB USR/SRC/SYS/KERNEL.S.INIT .INB USR/SRC/SYS/KERNEL.S.INIT
.INB USR/SRC/X.PRINTF.S .INB USR/SRC/X.PRINTF.S
A2osX.MAIN .PH $1100 A2osX.MAIN .PH $1480
.INB USR/SRC/SYS/KERNEL.S.CORE .INB USR/SRC/SYS/KERNEL.S.CORE
.INB USR/SRC/SYS/KERNEL.S.DRV .INB USR/SRC/SYS/KERNEL.S.DRV
.INB USR/SRC/SYS/KERNEL.S.TERM
Mem.MLoMem .EQ *
.EP .EP
A2osX.AUX .PH $0800 A2osX.AUX .PH $1000
.INB USR/SRC/SYS/KERNEL.S.OSD .INB USR/SRC/SYS/KERNEL.S.OSD
.INB USR/SRC/SYS/KERNEL.S.SLIST .INB USR/SRC/SYS/KERNEL.S.SLIST
Mem.XLoMem .EQ *
.EP .EP
A2osX.GP .PH $BD00 A2osX.GP .PH $BD00
.INB USR/SRC/SYS/KERNEL.S.GP .INB USR/SRC/SYS/KERNEL.S.GP
@ -53,7 +56,6 @@ A2osX.E0 .PH $E000
.INB USR/SRC/SYS/KERNEL.S.JMP .INB USR/SRC/SYS/KERNEL.S.JMP
.INB USR/SRC/SYS/KERNEL.S.IRQ .INB USR/SRC/SYS/KERNEL.S.IRQ
.INB USR/SRC/SYS/KERNEL.S.MEM .INB USR/SRC/SYS/KERNEL.S.MEM
.INB USR/SRC/SYS/KERNEL.S.TERM
.INB USR/SRC/SYS/KERNEL.S.TERMLC .INB USR/SRC/SYS/KERNEL.S.TERMLC
********* TMP ***** go to A2osX.D1 ********* TMP ***** go to A2osX.D1
.INB USR/SRC/SYS/KERNEL.S.PFT .INB USR/SRC/SYS/KERNEL.S.PFT