Kernel 0.94

This commit is contained in:
Rémy GIBERT
2020-04-21 08:19:17 +02:00
parent af5d3c5af9
commit ce26640372
7 changed files with 790 additions and 604 deletions

BIN
.Floppies/A2OSX.BLANK.woz Normal file

Binary file not shown.

Binary file not shown.

BIN
.Floppies/A2OSX.BOOT.woz Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -4,6 +4,8 @@ NEW
*-------------------------------------- *--------------------------------------
LIBBLKDEV.GetProDOSCatSize .EQ 4 LIBBLKDEV.GetProDOSCatSize .EQ 4
LIBBLKDEV.BuildProDOSCat .EQ 6 LIBBLKDEV.BuildProDOSCat .EQ 6
LIBBLKDEV.D2TrkRead16s .EQ 8
LIBBLKDEV.D2TrkWrite16s .EQ 10
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE INC/LIBBLKDEV.I SAVE INC/LIBBLKDEV.I

View File

@@ -10,11 +10,21 @@ NEW
.INB INC/MLI.I .INB INC/MLI.I
.INB INC/IO.D2.I .INB INC/IO.D2.I
*-------------------------------------- *--------------------------------------
* NIBBLE track len = $1A00 (6656) bytes TRACK16.LEN .EQ $19F8 (6648) bytes
*-------------------------------------- *--------------------------------------
GAP1 .EQ 48 TRACK16.GAP1 .EQ 64+8
GAP2 .EQ 6 *Address field = D5AA96 + 4x2 + DEAAEB = 14
GAP3 .EQ 27 TRACK16.GAP2 .EQ 6
*Data field = D5AAAD + 342 + CS + DEAAEB = 349
TRACK16.GAP3 .EQ 42
*--------------------------------------
TRACK9.LEN .EQ $19F8 (6648) bytes
*--------------------------------------
TRACK9.GAP1 .EQ 51
*Address field = D5AA96 + 4x2 + DEAAEB = 14
TRACK9.GAP2 .EQ 6
*Data field = D5AAAD + 342 + 342 + CS + DEAAEB = 691
TRACK9.GAP3 .EQ 42
*-------------------------------------- *--------------------------------------
Status.PrvDrvOff .EQ $80 Waiting old drive stop spinning Status.PrvDrvOff .EQ $80 Waiting old drive stop spinning
Status.DrvOn .EQ $81 Waiting target drive spin Status.DrvOn .EQ $81 Waiting target drive spin
@@ -42,10 +52,10 @@ CS.START cld
.DA LIB.UNLOAD .DA LIB.UNLOAD
.DA GetProDOSCatSize .DA GetProDOSCatSize
.DA BuildProDOSCat .DA BuildProDOSCat
.DA D2TrkR16s .DA D2TrkRead16s
.DA D2TrkRNIB .DA D2TrkWrite16s
.DA D2TrkW16s .DA D2TrkRreadNIB
.DA D2TrkWNIB .DA D2TrkWriteNIB
L.TrkWriter .DA TrkWriter L.TrkWriter .DA TrkWriter
L.ProDOS.Boot .DA ProDOS.Boot L.ProDOS.Boot .DA ProDOS.Boot
.DA 0 .DA 0
@@ -277,30 +287,68 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
bra .7 bra .7
*/-------------------------------------- */--------------------------------------
*\-------------------------------------- *\--------------------------------------
D2TrkRNIB D2TrkRead16s
*/-------------------------------------- */--------------------------------------
*\-------------------------------------- * # D2TrkWrite16s
D2TrkR16s
*/--------------------------------------
* # D2TrkW16s
* Write a track (16 sectors) * Write a track (16 sectors)
* **In:** * **In:**
* PUSHW = Ptr to 16*256 buffer
* PUSHB = TrackNum * 4 : 0->140+
* PUSHB = DSSS0000 * PUSHB = DSSS0000
* PUSHB = TrackNum * 4 : 0->136+
* PUSHW = Ptr to 16*256 buffer
* ## RETURN VALUE * ## RETURN VALUE
* CC : success * CC : success
* CS : A = Error * CS : A = Error
* A=0, currently starting/seeking... * A=0, currently starting/seeking...
*\-------------------------------------- *\--------------------------------------
D2TrkW16s >PULLB DrvSlt D2TrkWrite16s >PULLW ZPPtr1
>PULLB TrkNum >PULLB TrkNum
>PULLW ZPPtr1 >PULLB DrvSlt
>LDYAI TRACK16LEN+1
>SYSCALL getmem
bcs .9
>STYA ZPPtr2
stx TrkBuf
lda #254
sta VolNum
stz SectNum
ldy #TRACK16.GAP1
lda #$7f
.1 jsr PutBytePtr2
dey
bne .1
lda #$D5
jsr PutBytePtr2
lda #$AA
jsr PutBytePtr2
lda #$96
jsr PutBytePtr2
jsr HeaderCheckSum
ldy #3
.2 lda Checksum,y
jsr PutByte44Ptr2
dey
bpl .2
clc clc
rts .9 rts
*/-------------------------------------- */--------------------------------------
* # D2TrkWNIB *\--------------------------------------
D2TrkReadNIB
*/--------------------------------------
* # D2TrkWriteNIB
* Write a track (NIBBLE) * Write a track (NIBBLE)
* **In:** * **In:**
* PUSHW = Ptr to NIBBLE buffer (0 ended) * PUSHW = Ptr to NIBBLE buffer (0 ended)
@@ -311,7 +359,7 @@ D2TrkW16s >PULLB DrvSlt
* CS : A = Error * CS : A = Error
* A=0, currently starting/seeking... * A=0, currently starting/seeking...
*\-------------------------------------- *\--------------------------------------
D2TrkWNIB >PULLB DrvSlt D2TrkWriteNIB >PULLB DrvSlt
>PULLB TrkNum >PULLB TrkNum
>PULLW ZPPtr1 >PULLW ZPPtr1
@@ -400,6 +448,13 @@ DrvSpinCheck jsr DrvSelect
*-------------------------------------- *--------------------------------------
* A=DSSS0000 * A=DSSS0000
*-------------------------------------- *--------------------------------------
HeaderCheckSum lda VolNum
eor TrkNum
eor SectNum
sta Checksum
rts
*--------------------------------------
DrvSelect pha DrvSelect pha
and #$70 and #$70
tax tax
@@ -413,6 +468,20 @@ DrvSelect pha
lda IO.D2.ReadMode,x Make sure readmode lda IO.D2.ReadMode,x Make sure readmode
rts rts
*-------------------------------------- *--------------------------------------
PutByte44Ptr2 pha
rol
jsr .1
pla
.1 ora #$AA
*--------------------------------------
PutBytePtr2 sta ZPPtr2
inc ZPPtr2
bne .8
inc ZPPtr2+1
.8 rts
*--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
* TrkWriter * TrkWriter
@@ -432,7 +501,8 @@ TrkWriter.Start lda IO.D2.ReadMode,x
.1 lda (ZPPtr1),y (5) as NibbleBuf is page aligned, no page crossing .1 lda (ZPPtr1),y (5) as NibbleBuf is page aligned, no page crossing
beq .8 (2)(3 if Z) END OF TRACK beq .8 (2)(3 if Z) END OF TRACK
* nobody will never try to write 00000000, right? * nobody will never try to write 00000000, right?
cmp #$80 (2) if CC, it is a sync byte cmp #$80 (2) if CC, it is a sync byte
ora #$80 (2) make sure Bit7 high ora #$80 (2) make sure Bit7 high
sta IO.D2.WriteMode,x (5) sta IO.D2.WriteMode,x (5)
@@ -535,9 +605,15 @@ VolDirHdr.CatSize .BS 1
*-------------------------------------- *--------------------------------------
DiskII.OFS .HS 010305FF DiskII.OFS .HS 010305FF
DiskII.SIG .HS 20000300 DiskII.SIG .HS 20000300
*--------------------------------------
DrvSlt .BS 1 DrvSlt .BS 1
TrkBuf .BS 1
Checksum .BS 1
SectNum .BS 1
TrkNum .BS 1 TrkNum .BS 1
VolNum .BS 1
*-------------------------------------- *--------------------------------------
Status .BS 1 Status .BS 1
DrvSltInUse .BS 1 DrvSltInUse .BS 1

File diff suppressed because it is too large Load Diff