Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-08-30 19:50:57 +02:00
parent 7b61dc9118
commit 000add394a
15 changed files with 292 additions and 80 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -88,8 +88,9 @@ CS.RUN
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
ldx #OptionVars-OptionList
.2 cmp OptionList-1,x
beq .3
dex
bne .2
@ -580,12 +581,16 @@ CS.RUN.GetOutputBuf
.9 rts
*--------------------------------------
CS.RUN.WriteOutput
>LDA.G bNoHeader
bmi .1
>PUSHWI S.BM
>PUSHEA.G PIX.Header
>LDA.G hOutputFile
>SYSCALL FWrite
bcs .9
>PUSHW.G OutputDataLen
.1 >PUSHW.G OutputDataLen
>PUSHW ZPOutputBuf
>LDA.G hOutputFile
>SYSCALL FWrite
@ -694,8 +699,8 @@ CS.END
*--------------------------------------
.INB usr/src/shared/x.twist.g
*--------------------------------------
OptionList >PSTR "Vv"
OptionVars .DA #bVerbose,#bVerbose
OptionList .AS "VvHh"
OptionVars .DA #bVerbose,#bVerbose,#bNoHeader,#bNoHeader
MSG.USAGE .AS "Usage : BMP2PIX BMP-File \r\n"
.AZ " -V : Verbose Mode\r\n"
MSG.HEADER.OK .AZ "BMP Size : %D x %D pixels, %d bit(s)/pixel\r\n"
@ -769,6 +774,7 @@ PALETTE.AUX .HS 00.01.02.03.04.05.06.07
DS.START
ArgCount .BS 1
bVerbose .BS 1
bNoHeader .BS 1
hInputFile .BS 1
hInputBuf .BS 1
hOutputFile .BS 1

View File

@ -1,7 +1,7 @@
NEW
AUTO 3,1
*--------------------------------------
IO.D2.SeekTime .EQ 75
IO.D2.SeekTime .EQ 85
*--------------------------------------
IO.D2.Ph0Off .EQ $C080
IO.D2.Ph0On .EQ $C081

View File

@ -9,13 +9,8 @@ ILDR.START jsr MLI check for file 'atinit'
cmp #MLI.E.FNOTFND
beq ILDR.SYSTEM if so, continue loading interpreter
ATINIT.KO ldx #ATINIT.ERR.LEN-1
.1 lda ATINIT.ERR,x
sta vline16,x
dex
bne .1
beq *
ATINIT.KO jmp badatinit
gfi_ok lda gfi_type
cmp #$E2 is 'atinit' correct file type?
bne ATINIT.KO error - wrong file type
@ -68,113 +63,149 @@ H2453 ldy #$10 check file type.
lda #$FF must be a prodos sys file
eor (idxl),y
bne H2432 if not sys.
tay see if active
lda (idxl),y
beq H2432 if deleted file.
and #$0F strip file 'kind'.
sta pbuf save length of name.
cmp #$08 must be at least 'x.system'
bcc H2432 else, ignore it.
tay compare last 7 chars for '.system'
ldx #$06
H246C lda (idxl),y
eor iterp,x
asl
asl ignore bit 7
bne H2432 branch if something else
dey
dex
bpl H246C
ldy #$00
H247A iny
lda (idxl),y
sta pbuf,y
ora #$80 msb on so can be displayed if error
sta iomess+$11,y
cpy pbuf
bne H247A
lda #$A0 space after name
sta iomess+$12,y
tya error message length
adc #$13 (carry set)
sta ierlen
jsr MLI open interpreter file
.DA #$C8
.DA opparm
bne badlod
jsr MLI get eof (length of file)
.DA #$D1
.DA efparm
bne badlod
lda eof+2
bne toolong
lda eof+1
cmp #$9F max size = 39.75k ($2000-$BF00)
bcs toolong
sta rdlen+1
lda eof
sta rdlen (read entire file)
jsr MLI read interpreter file
.DA #$CA
.DA rdparm
beq H24C8 go close if successfully read.
cmp #$56 memory conflict?
beq toolong then too large
bne badlod else, unable to load.
H24C8 jsr MLI close interpreter file
.DA #$CC
.DA clparm
bne badlod hopefully never taken
lda RROMBNK2 enable ROM
sta CLR80DISP
sta CLR80STORE
jsr init
jsr setvid
jsr setkbd
jsr home
jmp sysentry go run interpreter
nointrp jsr MLI no interpreter found,so quit.
.DA #$65
.DA quitparm
badlod ldy ierlen center the error message
lda #$27
sec
sbc ierlen
lsr
adc ierlen
tax
H24FA lda iomess,y
sta vline16,x
dex
dey
bpl H24FA
bra *
toolong ldy #lgmess.len
badatinit ldy #6
H2508 lda lgmess,y
sta vline16+5,y
.1 lda atinitname,y
sta pbuf,y
dey
bpl H2508
bpl .1
badlod ldx #ILDR.MSG.SYSLOADERR-ILDR.MSG
.HS 2C BIT ABS
toolong ldx #ILDR.MSG.SYSTOOLARG-ILDR.MSG
jsr ILDR.PrintX
ldy #0
.1 iny
lda pbuf,y
jsr COUT
cpy pbuf
bne .1
bra *
*--------------------------------------
ATINIT.ERR .AS -"Unable to load ATInit file"
ATINIT.ERR.LEN .EQ *-ATINIT.ERR
ILDR.PrintX bit RROMBNK2
lda INVFLG
pha
jsr SETINV
.1 lda ILDR.MSG,x
pha
ora #$80
jsr COUT
inx
pla
bpl .1
lda #$A0
jsr COUT
pla
sta INVFLG
rts
*--------------------------------------
ILDR.MSG .EQ *
ILDR.MSG.SYSLOADERR .AT "Unable to load"
ILDR.MSG.SYSTOOLARG .AT "Too Large"
*--------------------------------------
gfi_list .DA #$0A
.DA atinitname
.HS 00
gfi_type .HS 00000000
.HS 0000000000000000
.HS 0000
*--------------------------------------
atopen .HS 03
.DA atinitname
.DA iobuf i/o buffer
.HS 01 ref# hard coded since no other files
atinitname .DA #06 length of name
.AS -"atinit" name of appletalk config file
*--------------------------------------
lgmess .AS -"** System program too large **"
lgmess.len .EQ *-lgmess
iomess .AS -"** Unable to load"
.AS -" X.System *********"
ierlen .HS 00
atinitname .DA #06 length of name
.AS "ATINIT" name of appletalk config file
*--------------------------------------
opparm .HS 03
.DA pbuf
.DA iobuf
@ -194,10 +225,10 @@ quitparm .HS 04
.HS 0000
.HS 00
.HS 0000
iterp .AS -".SYSTEM" interpreter suffix that is required
iterp .AS ".SYSTEM" interpreter suffix that is required
*--------------------------------------
ILDR.LEN .EQ *-ILDR.START
MAN
SAVE USR/SRC/PRODOS.FX/PRODOS.S.ILDR
LOAD USR/SRC/PRODOS.FX/PRODOS.S
SAVE usr/src/prodos.fx/prodos.s.ildr
LOAD usr/src/prodos.fx/prodos.s
ASM

View File

@ -42,12 +42,23 @@ prostart lda unitnum
sta CLR80DISP
sta CLR80STORE
jsr init
jsr setvid
jsr setkbd
jsr home
jsr LDR.ScrInit
lda #32
ldx #39
.1 sta $400,x
dex
bpl .1
ldx #LDR.MSG.PRODOS
jsr LDR.PrintX
sec
jsr idroutine returns system info
bcs .2 taken if not a //gs
@ -130,18 +141,12 @@ LDR.UNSUPP.HW ldx #LDR.MSG.UNSUPP
*--------------------------------------
m128k sta idapple Save MACHID in temp location
lda #$8C Reset 80 col screen ($0C:HOME)
jsr $C300
sta SETALTCHAR
lda #$20 "PRODOS" -> "ProDOS"
tsb LDR.MSG.PRODOS+1
tsb LDR.MSG.PRODOS+2
jsr LDR.ScrInit
sta CLRC3ROM
sec
jsr LDR.ScrInit80
ldx #$F
@ -534,9 +539,9 @@ LDR.BlkDevScan stz idxl
bne .2 branch if 16 sector disk II.
sta devid =0 since disk ii's have null attributes
lda #RWTS
lda #XRW.START
sta LDR.driveradr
lda /RWTS
lda /XRW.START
sta LDR.driveradr+1
sec 2 devices
jsr LDR.AddBlkDevs
@ -850,12 +855,138 @@ LDR.SetDevID ldy #$FE check attributes byte.
sta devid
rts
*--------------------------------------
LDR.ScrInit jsr setnorm
LDR.ScrInit80 sta CLRC3ROM
lda #$8C Reset 80 col screen ($0C:HOME)
jsr $C300
jsr setnorm
jsr home
jsr SETINV
.DO LOGO
lda #20
sta CV
lda #LOGO.PAKED
sta ZPInBufPtr
lda /LOGO.PAKED
sta ZPInBufPtr+1
lda #$00
sta ZPOutBufPtr
lda #$A0
sta ZPOutBufPtr+1
jsr X.Unpak
sta CLRHIRES
sta SETMIXED
bit RDIOUDIS
sta SETIOUDIS
sta SETDHIRES
bmi .10
sta CLRIOUDIS
.10 sta CLRTEXT
lda #$00
sta ZPPtr1
lda #$A0
sta ZPPtr1+1
lda #0
.1 pha
jsr GBSCALC
ldy #0
.2 lda (ZPPtr1),y
pha
and #$f
tax
lda PALETTE.AUX,x
sta SETPAGE2
sta (GBASL),y
pla
lsr
lsr
lsr
lsr
tax
lda PALETTE.MAIN,x
sta CLRPAGE2
sta (GBASL),y
iny
cpy #40
bne .2
lda ZPPtr1
clc
adc #40
sta ZPPtr1
bcc .3
inc ZPPtr1+1
.3 ldy #0
.4 lda (ZPPtr1),y
pha
and #$f
tax
lda PALETTE.AUX,x
asl
asl
asl
asl
sta SETPAGE2
ora (GBASL),y
sta (GBASL),y
pla
lsr
lsr
lsr
lsr
tax
lda PALETTE.MAIN,x
asl
asl
asl
asl
sta CLRPAGE2
ora (GBASL),y
sta (GBASL),y
iny
cpy #40
bne .4
lda ZPPtr1
clc
adc #40
sta ZPPtr1
bcc .7
inc ZPPtr1+1
.7 pla
inc
cmp #20
bne .1
.FIN
jsr CLREOL
jsr setnorm
ldx #LDR.MSG.PRODOS
*--------------------------------------
LDR.PrintX bit RROMBNK2
@ -878,6 +1009,11 @@ LDR.PrintX bit RROMBNK2
sta INVFLG
rts
*--------------------------------------
PALETTE.MAIN .HS 00.02.04.06.08.0A.0C.0E
.HS 01.03.05.07.09.0B.0D.0F
PALETTE.AUX .HS 00.01.02.03.04.05.06.07
.HS 08.09.0A.0B.0C.0D.0E.0F
*--------------------------------------
* 16 bytes moved to $03F0 vectors
*--------------------------------------
LDR.3F0 .DA breakv

View File

@ -0,0 +1,40 @@
NEW
AUTO 3,1
*--------------------------------------
LOGO.PAKED .HS da.40.06.20.00.22.20.ff.62.dd
.HS 11.26.02.0f.cc.f0.fb.27.66.0b.0d.77.88.b0.bf.01
.HS 08.10.5f.af.b5.d0.05.0c.0e.2b.84.21.0f.04.01.e0
.HS e0.fc.34.4f.8c.95.f2.33.fe.46.7f.c8.cf.f9.19.ff
.HS 23.3f.e4.67.fc.8c.ff.91.1e.8c.63.18.c7.0f.1a.27
.HS e2.e0.fc.1c.17.94.03.8f.92.90.db.6d.af.e4.40.3c
.HS 24.07.8f.00.c3.ca.02.7a.88.b9.46.9e.4c.03.ca.40
.HS 61.0f.0a.03.7f.11.00.ee.ee.f1.80.0e.0f.06.05.e9
.HS c2.3c.98.1f.94.00.95.36.8f.94.00.8e.1e.44.0f.ca
.HS 05.cb.c8.c0.fb.30.1b.fa.70.08.c6.91.97.94.15.bf
.HS c5.82.95.fe.70.06.10.a7.e0.01.cb.b7.c6.40.30.3c
.HS 18.17.94.06.a5.fe.c0.1f.d3.80.fc.a0.3e.1e.0b.2c
.HS b2.cb.c1.00.79.40.cf.11.4b.4f.09.43.e5.00.21.e5
.HS 01.7c.55.67.94.05.f0.90.5e.6e.0a.b5.ad.6b.5e.08
.HS 43.39.cf.78.43.49.f2.42.1c.3e.0a.07.cb.c0.c3.d6
.HS 11.52.fe.0a.03.c8.c0.f9.e8.2f.28.01.3f.05.03.3c
.HS 78.fc.14.07.99.80.fe.50.1f.ac.13.c2.00.d7.82.bd
.HS 7c.1d.7e.a4.03.3e.8e.a9.ef.a7.49.57.4e.4c.fa.21
.HS c7.8f.90.05.f2.81.15.f7.d0.59.e3.0d.31.f4.80.0a
.HS 09.e7.ee.c0.25.f2.68.7c.a0.1f.84.03.e2.e6.e2.e6
.HS f0.50.08.0e.2f.28.00.f5.c6.7d.90.28.4f.de.00.0b
.HS e2.67.f6.b4.3e.9e.0b.ca.03.78.28.0f.08.01.e5.01
.HS fe.98.07.0f.ef.24.fc.e0.5e.50.3b.de.01.71.cf.c5
.HS 80.70.eb.af.d8.a0.f6.c4.71.a7.94.01.b7.2d.bc.14
.HS 0f.3d.bf.20.1f.27.e4.01.de.1d.5d.f2.f0.d4.3e.3a
.HS 8f.ca.04.5a.d6.f1.85.86.0f.6b.49.ee.a0.3c.a0.3f
.HS 3d.ad.cb.ed.0a.34.9f.4c.b5.fe.d0.9e.ae.02.9f.2e
.HS 8f.c3.f9.eb.e7.89.fc.c2.07.9b.77.f4.f0.be.50.07
.HS d2.52.79.38.f9.79.da.3f.c6.05.ea.00.7d.3c.af.ac
.HS c5.84.bd.c3.37.a7.9a.fd.4f.92.f2.73.fe.50.0f.c1
.HS db.79.e1.ff.23.3f.e4.67.fc.8c.ff.91.9f.f2.33.fe
.HS 3c.6a.00
*--------------------------------------
MAN
SAVE usr/src/prodos.fx/prodos.s.logo
LOAD usr/src/prodos.fx/prodos.s
ASM

View File

@ -86,6 +86,6 @@ DS1216E.DATA .BS 8 Reverted YY MM DD Day HH mm SS CS
NCLK.LEN .EQ *-NCLK.START
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.FX/PRODOS.S.NCLK
LOAD USR/SRC/PRODOS.FX/PRODOS.S
SAVE usr/src/prodos.fx/prodos.s.nclk
LOAD usr/src/prodos.fx/prodos.s
ASM

View File

@ -212,7 +212,7 @@ L5E61 sta gp_cnt
sta wndlft
lda #$16
sta wndwdth
sta wndbtm
sta wndbot
L5E6F jsr nameprnt output filename to screen
inc valcnt
dec gp_cnt file counter.
@ -451,6 +451,6 @@ dhdr_len .BS 1 directory header length (actually uses 2 bytes)
*--------------------------------------
SEL1.LEN .EQ *-SEL1.START
MAN
SAVE USR/SRC/PRODOS.FX/PRODOS.S.SEL1
LOAD USR/SRC/PRODOS.FX/PRODOS.S
SAVE usr/src/prodos.fx/prodos.s.sel1
LOAD usr/src/prodos.fx/prodos.s
ASM

View File

@ -1,7 +1,7 @@
NEW
AUTO 3,1
*--------------------------------------
XRWDBG .EQ 0
XRWDBG .EQ 1
*--------------------------------------
XRW.START cld $D8 to flag language card bank 1 (main)
@ -205,7 +205,7 @@ regrwts ldy #1
sta XRW.D2VolNum-1,y
jsr XRW.Seek
bra .1
bra .2
.4 cmp XRW.ReqTrack
beq .5
@ -222,7 +222,7 @@ regrwts ldy #1
.41 lda XRW.ReqTrack
jsr XRW.Seek
bra .1
bra .2
.5 lda XRW.AddrField.S is this the right sector ?
cmp XRW.ReqSector

View File

@ -9,6 +9,7 @@ READCAT .EQ 0 Boot Block read Catalog at $C00
ENHFILENAME .EQ 1
LOWERCASE .EQ 1
ACL .EQ 1
LOGO .EQ 1
*--------------------------------------
.INB inc/zp.i
.INB inc/io.i
@ -65,9 +66,7 @@ dst .EQ $14
cnt .EQ $16
cde .EQ $18
ecde .EQ $1A
wndbtm .EQ $23
*--------------------------------------
pcl .EQ $3A
pch .EQ $3B
A1L .EQ $3C
@ -115,10 +114,9 @@ pbuf .EQ $0280 prefix buffer
softev .EQ $03F2 RESET vector
pwredup .EQ $03F4 power up byte
nmivect .EQ $03FB nmi handler
vmode .EQ $04FB video firmware operating mode
vmode .EQ $04FB video firmware operating mode
ch80col .EQ $057B 80 column ch position
vline16 .EQ $07A8 line 16 of display
dbuf .EQ $0C00 8 page directory buffer
vblock1 .EQ $0E00 ramdisk directory block
@ -130,8 +128,6 @@ sysentry .EQ $2000 .SYS file load address
xfer .EQ $C314
rwts .EQ $D000 disk ii driver in bank 1
pathbuf .EQ $D700
XDOS.ClockDrv .EQ $D742
prefixbuf .EQ $D742+125
@ -198,6 +194,9 @@ X.Unpak.XatYA sty ZPOutBufPtr
lda PAKME.Table+1,x
sta ZPInBufPtr+1
.INB usr/src/shared/x.unpak.s
.DO LOGO
.INB usr/src/prodos.fx/prodos.s.logo
.FIN
*--------------------------------------
PAKME.Table
PAKME.ILDR .DA ILDR.PAK

View File

@ -5,7 +5,7 @@ NEW
.OR $2000
.TF sbin/initd
*---------------------------------------
INITDDBG .EQ 1
INITDDBG .EQ 0
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i

BIN
_Pics/ProDOS.logo.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB