mirror of
https://github.com/A2osX/A2osX.git
synced 2024-12-27 02:32:51 +00:00
Kernel 0.92
This commit is contained in:
parent
95a10cbd54
commit
2120025d9f
3
ETC/INIT
3
ETC/INIT
@ -3,7 +3,8 @@ PREFIX
|
||||
AUTO 4,1
|
||||
#!/BIN/SHELL
|
||||
ECHO *** A2osX INIT Script ***
|
||||
SET PS1='$PWD'
|
||||
SET PS1 = '$PWD'
|
||||
SET PATH = ${PATH}BIN/DEV/
|
||||
# Main Screen
|
||||
GETTY /DEV/TTY1 ${ROOT}SBIN/LOGIN &
|
||||
GETTY /DEV/TTY2 ${ROOT}SBIN/LOGIN &
|
||||
|
@ -3,30 +3,25 @@ PREFIX
|
||||
AUTO 4,1
|
||||
.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
|
||||
* Main/Aux $800 -> $BFF : TXT PAGE2 System Screen
|
||||
Nod.Table.hPath .EQ $1340 K.NOD.MAX
|
||||
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
|
||||
Dev.Table.hFD .EQ $0C20 K.Dev.MAX
|
||||
OF.Table.hPath .EQ $1400 K.OF.MAX
|
||||
OF.Table.hFD .EQ $1420 K.OF.MAX
|
||||
*--------------------------------------
|
||||
Nod.Table.hPath .EQ $0C40 K.NOD.MAX
|
||||
Nod.Table.hFD .EQ $0C60 K.NOD.MAX
|
||||
Evt.Table .EQ $1440 K.EVT.MAX*S.EVT=4*8=32b
|
||||
*--------------------------------------
|
||||
PS.Table.PID .EQ $0C80 K.PS.MAX
|
||||
PS.Table.hPS .EQ $0CA0 K.PS.MAX
|
||||
PS.Table.Hits .EQ $0CC0 K.PS.MAX
|
||||
PS.Table.Stats .EQ $0CE0 K.PS.MAX
|
||||
Flt.Table .EQ $1460 K.FLT.MAX*S.FLT=4*32=128b
|
||||
*--------------------------------------
|
||||
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
|
||||
SAVE INC/KERNEL.I
|
||||
|
@ -163,11 +163,17 @@ CORE.GetEvents lda #Evt.Table
|
||||
dec CORE.TickSec
|
||||
bne .3 not yet One Sec
|
||||
|
||||
lda SYS.BASL0+38
|
||||
lda IRQ.Mode
|
||||
eor #$C0
|
||||
sta IRQ.Mode
|
||||
|
||||
ldx A2osX.ASCREEN
|
||||
cpx #1 /DEV/CONSOLE
|
||||
bne .22
|
||||
|
||||
sta SYS.BASL0+38
|
||||
|
||||
ldx CORE.TickPerSec
|
||||
.22 ldx CORE.TickPerSec
|
||||
stx CORE.TickSec
|
||||
|
||||
lda #S.EVT.F.T1SEC
|
||||
|
@ -14,12 +14,12 @@ A2osX.D2.S .EQ A2osX.E0-A2osX.D2
|
||||
A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0
|
||||
*--------------------------------------
|
||||
.LIST OFF
|
||||
.DO A2osX.MAIN.S>$700
|
||||
.DO Mem.MLoMem>$1fff
|
||||
.LIST ON
|
||||
* ERROR:MAIN too big
|
||||
.LIST OFF
|
||||
.FIN
|
||||
.DO A2osX.AUX.S>$C00
|
||||
.DO Mem.XLoMem>$1fff
|
||||
.LIST ON
|
||||
* ERROR:AUX too big
|
||||
.LIST OFF
|
||||
|
@ -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.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***
|
||||
*--------------------------------------
|
||||
Z80CODE .EQ $1000 (00000h) Up To $10FF
|
||||
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.XLoMem .EQ $2000
|
||||
Mem.XHiMem .EQ $C000
|
||||
*--------------------------------------
|
||||
DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC
|
||||
*--------------------------------------
|
||||
H.BIN.T .EQ 0
|
||||
|
@ -322,6 +322,7 @@ GP.IrqH.Exit stz IRQ.SkipA2osX reset flag
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
IRQ.Mode .BS 1
|
||||
IRQ.SkipA2osX .BS 1
|
||||
IRQ.Tick .BS 1
|
||||
IRQ.InKernel .BS 1
|
||||
|
@ -309,7 +309,7 @@ MemMgrInit >LDYAI Mem.MHiMem
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
SysScrInit jsr SysScrInit.EnvBuf
|
||||
SysScrInit jsr SysScrInit.DCBBuf
|
||||
|
||||
>PUSHWI FD.CONSOLE.NAME
|
||||
>LDYAI FD.TTY
|
||||
@ -326,7 +326,7 @@ SysScrInit jsr SysScrInit.EnvBuf
|
||||
sbc /2048
|
||||
sta FD.TTY+S.FD.DEV.BUFPTR+1
|
||||
|
||||
jsr SysScrInit.EnvBuf
|
||||
jsr SysScrInit.DCBBuf
|
||||
|
||||
>PUSHWI FD.TTY.NAME
|
||||
>LDYAI FD.TTY
|
||||
@ -339,7 +339,7 @@ SysScrInit jsr SysScrInit.EnvBuf
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SysScrInit.EnvBuf
|
||||
SysScrInit.DCBBuf
|
||||
clc
|
||||
|
||||
lda DevMgr.Free
|
||||
@ -587,7 +587,7 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
bcs .1
|
||||
|
||||
lda #"C"
|
||||
sta SYS.BASL0+38
|
||||
sta IRQ.Mode
|
||||
|
||||
>LDYAI K.IrqH.TCLOCK
|
||||
>STYA K.IrqHAuxLC.JSR+1
|
||||
@ -603,7 +603,7 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
bcs .8
|
||||
|
||||
lda #"V"
|
||||
sta SYS.BASL0+38
|
||||
sta IRQ.Mode
|
||||
|
||||
>LDYAI K.IrqH.VBL
|
||||
>STYA K.IrqHAuxLC.JSR+1
|
||||
@ -618,7 +618,7 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
.8 jsr IrqMgrInit.HZ2Tick
|
||||
|
||||
lda #"P"
|
||||
sta SYS.BASL0+38
|
||||
sta IRQ.Mode
|
||||
|
||||
>LDYAI MSG.IRQ.POLL
|
||||
>SYSCALL puts
|
||||
|
@ -33,6 +33,10 @@ K.IrqHAuxLC cld
|
||||
lda $ff
|
||||
pha
|
||||
|
||||
lda RDPAGE2
|
||||
pha
|
||||
sta CLRPAGE2
|
||||
|
||||
lda RDREADAUX
|
||||
pha
|
||||
sta CLRREADAUX Make sure we can access FD.Table
|
||||
@ -79,6 +83,11 @@ K.IrqHAuxLC.3 pla Must keep Carry
|
||||
sta SETREADAUX
|
||||
|
||||
.2 pla
|
||||
bpl .3
|
||||
|
||||
sta SETPAGE2
|
||||
|
||||
.3 pla
|
||||
sta $ff
|
||||
pla
|
||||
sta $fe
|
||||
@ -96,10 +105,10 @@ K.IrqHAuxLC.3 pla Must keep Carry
|
||||
tsx
|
||||
|
||||
lda $104,x get RTI PC LO
|
||||
bne .3
|
||||
bne .4
|
||||
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
|
||||
sta $101,x down 2 bytes
|
||||
@ -110,8 +119,8 @@ K.IrqHAuxLC.3 pla Must keep Carry
|
||||
sta $103,x
|
||||
|
||||
lda #$A0+'S
|
||||
eor SYS.BASL0+37
|
||||
sta SYS.BASL0+37
|
||||
eor SYS.BASL0+39
|
||||
sta SYS.BASL0+39
|
||||
|
||||
K.IrqHAuxLC.4 ldy #$ff Self Modified
|
||||
K.IrqHAuxLC.5 ldx #$ff Self Modified
|
||||
|
@ -347,7 +347,7 @@ K.FreeMem tay
|
||||
* Mem.Table is page aligned at $1800
|
||||
* S.MEM is 8 bytes
|
||||
*--------------------------------------
|
||||
.DO Mem.Table=$1800
|
||||
.DO Mem.Table=$800
|
||||
.ELSE
|
||||
!!!!!WARNING!!!!!
|
||||
.FIN
|
||||
|
@ -36,9 +36,7 @@ DRV.TERM cld
|
||||
.DA DRV.TERM.READ
|
||||
.DA DRV.TERM.WRITE
|
||||
*--------------------------------------
|
||||
DRV.TERM.STATUS >STYA ZPIOCTL
|
||||
|
||||
jsr DRV.TERM.GetIOCTLBuf
|
||||
DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufAndCnt
|
||||
|
||||
ldy #S.IOCTL.STATCODE
|
||||
lda (ZPIOCTL),y
|
||||
@ -118,6 +116,14 @@ DRV.TERM.CONTROL
|
||||
|
||||
jsr DRV.TERM.SCRCPY
|
||||
|
||||
lda #0
|
||||
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
sta (ZPDCBPtr),y
|
||||
|
||||
ldy #S.DCB.TTY.bTITLE
|
||||
sta (ZPDCBPtr),y
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -151,14 +157,9 @@ DRV.TERM.CLOSE jsr DRV.TERM.GetDCB
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.TERM.READ >STYA ZPIOCTL
|
||||
|
||||
jsr DRV.TERM.GetIOCTLBufAndCnt
|
||||
|
||||
DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufAndCnt
|
||||
jsr DRV.TERM.GetDCB
|
||||
|
||||
jsr DRV.TERM.GetActive
|
||||
|
||||
bit bActive is screen active?
|
||||
bpl .6 no....go check flush...
|
||||
|
||||
@ -168,11 +169,19 @@ DRV.TERM.READ >STYA ZPIOCTL
|
||||
eor (ZPDCBPtr),y
|
||||
beq .1
|
||||
|
||||
jsr CURBLNK
|
||||
jsr DRV.TERM.CURBLNK
|
||||
|
||||
.1 lda OPENAPPLE
|
||||
bpl .11
|
||||
|
||||
lda KBD
|
||||
bmi .6 Open apple key, not for us...
|
||||
|
||||
jsr DRV.TERM.Title.ON
|
||||
bra .6
|
||||
|
||||
.11 jsr DRV.TERM.Title.OFF
|
||||
|
||||
lda KBD
|
||||
bpl .6
|
||||
sta KBDSTROBE
|
||||
@ -233,20 +242,17 @@ DRV.TERM.READ >STYA ZPIOCTL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.TERM.WRITE >STYA ZPIOCTL
|
||||
|
||||
jsr DRV.TERM.GetIOCTLBufAndCnt
|
||||
|
||||
DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufAndCnt
|
||||
jsr DRV.TERM.GetDCB
|
||||
|
||||
jsr DRV.TERM.GetActive
|
||||
|
||||
.1 inc ZPCount
|
||||
bne .2
|
||||
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
|
||||
tax
|
||||
|
||||
@ -258,13 +264,11 @@ DRV.TERM.WRITE >STYA ZPIOCTL
|
||||
bra .1
|
||||
|
||||
.3 jmp (.4,x)
|
||||
|
||||
.4 .DA DRV.TERM.COUT
|
||||
.DA DRV.TERM.ESC
|
||||
.DA DRV.TERM.CSI
|
||||
.DA DRV.TERM.IAC
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.TERM.COUT lda (ZPBufPtr)
|
||||
|
||||
@ -272,21 +276,12 @@ DRV.TERM.COUT lda (ZPBufPtr)
|
||||
bne .1
|
||||
|
||||
lda #S.DCB.TTY.MODE.IAC
|
||||
sta (ZPDCBPtr),y
|
||||
bra DRV.TERM.SETMODE
|
||||
|
||||
ldy #S.DCB.TTY.INBUFFER
|
||||
lda #S.DCB.TTY.INBUFFER
|
||||
sta (ZPDCBPtr),y
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 pha
|
||||
jsr CUROFF
|
||||
pla
|
||||
cmp #C.DEL
|
||||
beq DEL
|
||||
.1 cmp #C.DEL
|
||||
beq DRV.TERM.COUT.DEL
|
||||
cmp #C.SPACE
|
||||
bcc COUT.Ctrl
|
||||
bcc DRV.TERM.COUT.Ctrl
|
||||
|
||||
ldy #S.DCB.TTY.bINVERSE
|
||||
ora (ZPDCBPtr),y
|
||||
@ -313,7 +308,8 @@ FS ldy #S.DCB.TTY.CH
|
||||
FS.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DEL ldy #S.DCB.TTY.CH
|
||||
DRV.TERM.COUT.DEL
|
||||
ldy #S.DCB.TTY.CH
|
||||
lda (ZPDCBPtr),y
|
||||
beq .1
|
||||
dec
|
||||
@ -336,7 +332,8 @@ DEL ldy #S.DCB.TTY.CH
|
||||
ora (ZPDCBPtr),y
|
||||
jmp SetCharAtCurPos
|
||||
*--------------------------------------
|
||||
COUT.Ctrl ldx #CtrlChars.Cnt-1
|
||||
DRV.TERM.COUT.Ctrl
|
||||
ldx #CtrlChars.Cnt-1
|
||||
|
||||
.1 cmp CtrlChars,x
|
||||
beq .2
|
||||
@ -348,14 +345,27 @@ COUT.Ctrl ldx #CtrlChars.Cnt-1
|
||||
.2 txa
|
||||
asl
|
||||
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)
|
||||
|
||||
cmp #'['
|
||||
bne .1
|
||||
bne DRV.TERM.ESC1
|
||||
|
||||
lda #S.DCB.TTY.MODE.CSI
|
||||
|
||||
DRV.TERM.SETMODE
|
||||
sta (ZPDCBPtr),y
|
||||
ldy #S.DCB.TTY.INBUFFER
|
||||
lda #S.DCB.TTY.INBUFFER
|
||||
@ -363,7 +373,7 @@ DRV.TERM.ESC lda (ZPBufPtr)
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 lda #0 y = #S.DCB.TTY.MODE
|
||||
DRV.TERM.ESC1 lda #0 y = #S.DCB.TTY.MODE
|
||||
sta (ZPDCBPtr),y
|
||||
|
||||
ldx #EscCodes.Cnt-1
|
||||
@ -802,36 +812,29 @@ RESET.MODE lda #0
|
||||
clc
|
||||
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
|
||||
sta (ZPDCBPtr),y
|
||||
iny
|
||||
.1 iny
|
||||
lda RESET.VALUES-2,y
|
||||
sta (ZPDCBPtr),y
|
||||
cpy #S.DCB.TTY.INBUFFER
|
||||
bne .1
|
||||
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
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
|
||||
jmp DRV.TERM.CLRSCR
|
||||
*--------------------------------------
|
||||
RESETATTR lda #$80
|
||||
ldy #S.DCB.TTY.bINVERSE
|
||||
@ -839,14 +842,6 @@ RESETATTR lda #$80
|
||||
clc
|
||||
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
|
||||
|
||||
.1 lda ENQ.String,x
|
||||
@ -881,6 +876,13 @@ BS ldy #S.DCB.TTY.CH
|
||||
.2 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
FF lda #0
|
||||
ldy #S.DCB.TTY.CV
|
||||
sta (ZPDCBPtr),y
|
||||
dey
|
||||
sta (ZPDCBPtr),y
|
||||
jmp DRV.TERM.CLRSCR
|
||||
*--------------------------------------
|
||||
CROUT lda #0
|
||||
ldy #S.DCB.TTY.CH
|
||||
sta (ZPDCBPtr),y
|
||||
@ -900,13 +902,6 @@ LF ldy #S.DCB.TTY.CV
|
||||
clc
|
||||
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
|
||||
lda (ZPDCBPtr),y
|
||||
|
||||
@ -916,7 +911,7 @@ SCROLL.UP ldy #S.DCB.TTY.SCROLLTOP
|
||||
|
||||
inx
|
||||
|
||||
jsr COPY.XtoL1
|
||||
jsr DRV.TERM.COPY.XtoL1
|
||||
|
||||
txa
|
||||
ldy #S.DCB.TTY.SCROLLBOT
|
||||
@ -969,7 +964,7 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
|
||||
|
||||
dex
|
||||
|
||||
jsr COPY.XtoL1
|
||||
jsr DRV.TERM.COPY.XtoL1
|
||||
|
||||
txa
|
||||
ldy #S.DCB.TTY.SCROLLTOP
|
||||
@ -979,40 +974,37 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CUROFF ldy #S.DCB.TTY.bCURON
|
||||
DRV.TERM.CUROFF ldy #S.DCB.TTY.bCURON
|
||||
lda (ZPDCBPtr),y
|
||||
|
||||
beq CUREXIT.RTS
|
||||
|
||||
CURBLNK bit bActive
|
||||
bmi CURBLNK1
|
||||
beq DRV.TERM.CURBLNK.RTS
|
||||
DRV.TERM.CURBLNK
|
||||
bit bActive
|
||||
bpl DRV.TERM.CURBLNK.RTS do not Light if screen is not active
|
||||
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
lda (ZPDCBPtr),y
|
||||
bne CURBLNK.OFF
|
||||
rts do not Light if screen is not active
|
||||
|
||||
CURBLNK1 ldy #S.DCB.TTY.bCURON
|
||||
lda (ZPDCBPtr),y
|
||||
bne CURBLNK.OFF
|
||||
bne DRV.TERM.CURBLNK.OFF
|
||||
|
||||
jsr GetCharAtCurPos
|
||||
ldy #S.DCB.TTY.CURCHAR
|
||||
sta (ZPDCBPtr),y
|
||||
and #$80
|
||||
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
|
||||
|
||||
CUREXIT jsr SetCharAtCurPos
|
||||
DRV.TERM.CURBLNK.SET
|
||||
jsr SetCharAtCurPos
|
||||
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
lda (ZPDCBPtr),y
|
||||
eor #CURSOR.BLINK.SPEED
|
||||
sta (ZPDCBPtr),y
|
||||
CUREXIT.RTS rts
|
||||
DRV.TERM.CURBLNK.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
Decimal.Out stz ZPTmpWord
|
||||
stz ZPTmpWord+1
|
||||
@ -1125,9 +1117,7 @@ DRV.TERM.GetDCB ldy #S.FD.DEV.DCBPTR
|
||||
iny
|
||||
lda (pFD),y
|
||||
sta ZPDCBPtr+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.TERM.GetActive
|
||||
|
||||
ldy #S.DCB.TTY.DEVID
|
||||
lda (ZPDCBPtr),y
|
||||
cmp A2osX.ASCREEN
|
||||
@ -1138,7 +1128,16 @@ DRV.TERM.GetActive
|
||||
rts
|
||||
*--------------------------------------
|
||||
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
|
||||
eor #$ff
|
||||
@ -1148,88 +1147,62 @@ DRV.TERM.GetIOCTLBufAndCnt
|
||||
eor #$ff
|
||||
sta ZPCount+1
|
||||
|
||||
DRV.TERM.GetIOCTLBuf
|
||||
ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr+1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.TERM.SETUP.L1X
|
||||
ldy #S.FD.DEV.BUFPTR
|
||||
lda (pFD),y
|
||||
clc
|
||||
adc BUF.BASEL,x
|
||||
sta ZPBufBaseL1
|
||||
DRV.TERM.Title.ON
|
||||
ldy #S.DCB.TTY.bTITLE
|
||||
lda (ZPDCBPtr),y
|
||||
bmi DRV.TERM.Title.RTS
|
||||
|
||||
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
|
||||
lda (pFD),y
|
||||
adc BUF.BASEH,x
|
||||
sta ZPBufBaseL1+1
|
||||
bne .1
|
||||
|
||||
bit bActive
|
||||
bpl .8
|
||||
.2 lda #C.SPACE
|
||||
|
||||
lda SCR.BASEL,x
|
||||
sta ZPScrBaseL1
|
||||
lda SCR.BASEH,x
|
||||
sta ZPScrBaseL1+1
|
||||
.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
|
||||
.3 phy
|
||||
jsr SetCharAtY.SCR
|
||||
ply
|
||||
iny
|
||||
cpy #80
|
||||
bne .3
|
||||
DRV.TERM.Title.RTS
|
||||
rts
|
||||
|
||||
DRV.TERM.Title.OFF
|
||||
ldy #S.DCB.TTY.bTITLE
|
||||
lda (ZPDCBPtr),y
|
||||
bpl DRV.TERM.Title.RTS
|
||||
|
||||
lda #$0
|
||||
sta (ZPDCBPtr),y
|
||||
jmp DRV.TERM.LINE0CPY
|
||||
*--------------------------------------
|
||||
CtrlChars .HS 05080A0C0D151B
|
||||
CtrlChars.Cnt .EQ *-CtrlChars
|
||||
|
@ -2,6 +2,80 @@ NEW
|
||||
PREFIX
|
||||
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
|
||||
sta SET80STORE
|
||||
|
||||
@ -48,21 +122,23 @@ DRV.TERM.CLRSCR ldx #23
|
||||
sta (ZPDCBPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.TERM.SCRCPY ldx #0
|
||||
DRV.TERM.LINE0CPY
|
||||
ldx #0
|
||||
.HS 2C BIT ABS
|
||||
DRV.TERM.SCRCPY ldx #23
|
||||
|
||||
sta SET80STORE
|
||||
|
||||
.1 ldy #S.FD.DEV.BUFPTR
|
||||
lda (pFD),y
|
||||
clc
|
||||
adc BUF.BASEL,x
|
||||
sta .2+1
|
||||
sta .3+1
|
||||
sta .80+1
|
||||
|
||||
iny
|
||||
lda (pFD),y
|
||||
adc BUF.BASEH,x
|
||||
sta .2+2
|
||||
sta .3+2
|
||||
sta .80+2
|
||||
|
||||
lda SCR.BASEL,x
|
||||
sta ZPScrBaseL1
|
||||
@ -74,94 +150,39 @@ DRV.TERM.SCRCPY ldx #0
|
||||
sta SETREADAUX
|
||||
|
||||
ldx #78
|
||||
ldy #39
|
||||
sta SETPAGE2
|
||||
|
||||
.2 lda $ffff,x SELF MODIFIED
|
||||
sta (ZPScrBaseL1),y
|
||||
dex
|
||||
dex
|
||||
dey
|
||||
bpl .2
|
||||
ldy #39
|
||||
|
||||
jsr .8
|
||||
|
||||
ldx #79
|
||||
ldy #39
|
||||
sta CLRPAGE2
|
||||
|
||||
.3 lda $ffff,x SELF MODIFIED
|
||||
sta (ZPScrBaseL1),y
|
||||
dex
|
||||
dex
|
||||
dey
|
||||
bpl .3
|
||||
ldy #39
|
||||
|
||||
jsr .8
|
||||
|
||||
sta CLRREADAUX
|
||||
|
||||
plx
|
||||
inx
|
||||
cpx #24
|
||||
bne .1
|
||||
dex
|
||||
|
||||
bpl .1
|
||||
rts
|
||||
*--------------------------------------
|
||||
SetCharAtCurPos pha
|
||||
ldy #S.DCB.TTY.CV
|
||||
lda (ZPDCBPtr),y
|
||||
tax
|
||||
|
||||
.8 ldy #39
|
||||
|
||||
.80 lda $ffff,x SELF MODIFIED
|
||||
sta (ZPScrBaseL1),y
|
||||
dex
|
||||
dex
|
||||
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 .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
|
||||
|
||||
bpl .80
|
||||
rts
|
||||
*--------------------------------------
|
||||
COPY.XtoL1 ldy #79
|
||||
DRV.TERM.COPY.XtoL1
|
||||
ldy #79
|
||||
|
||||
sta SETWRITEAUX
|
||||
sta SETREADAUX
|
||||
@ -196,6 +217,65 @@ COPY.XtoL1 ldy #79
|
||||
bpl .7
|
||||
.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
|
||||
SAVE USR/SRC/SYS/KERNEL.S.TERMLC
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
|
@ -21,13 +21,16 @@ AUTO 4,1
|
||||
.INB USR/SRC/SYS/KERNEL.S.INIT
|
||||
.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.DRV
|
||||
.INB USR/SRC/SYS/KERNEL.S.TERM
|
||||
Mem.MLoMem .EQ *
|
||||
.EP
|
||||
A2osX.AUX .PH $0800
|
||||
A2osX.AUX .PH $1000
|
||||
.INB USR/SRC/SYS/KERNEL.S.OSD
|
||||
.INB USR/SRC/SYS/KERNEL.S.SLIST
|
||||
Mem.XLoMem .EQ *
|
||||
.EP
|
||||
A2osX.GP .PH $BD00
|
||||
.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.IRQ
|
||||
.INB USR/SRC/SYS/KERNEL.S.MEM
|
||||
.INB USR/SRC/SYS/KERNEL.S.TERM
|
||||
.INB USR/SRC/SYS/KERNEL.S.TERMLC
|
||||
********* TMP ***** go to A2osX.D1
|
||||
.INB USR/SRC/SYS/KERNEL.S.PFT
|
||||
|
Loading…
Reference in New Issue
Block a user