diff --git a/A2OSX.BOOT.DSK b/A2OSX.BOOT.DSK new file mode 100644 index 00000000..9ef7597a Binary files /dev/null and b/A2OSX.BOOT.DSK differ diff --git a/A2OSX.BUILD.HDV b/A2OSX.BUILD.HDV new file mode 100644 index 00000000..3a06255e Binary files /dev/null and b/A2OSX.BUILD.HDV differ diff --git a/A2osX.S.GP.txt b/A2osX.S.GP.txt index 0a75ff6a..c485c421 100644 --- a/A2osX.S.GP.txt +++ b/A2osX.S.GP.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/A2osX.S.QC.txt b/A2osX.S.QC.txt index 563f5e38..f6cbb23b 100644 --- a/A2osX.S.QC.txt +++ b/A2osX.S.QC.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 @@ -11,9 +11,9 @@ AUTO 6 * setup $BE00 Global page : * Copy from $1200 to $BE00 *-------------------------------------- -MLIOPEN01.PATH .EQ $200 -MLIOPEN01.BUFF .EQ $0C00 1k Buffer for MLI open -MLIREAD01.ADDR .EQ $2000 for loading kernel.bin before moving to LC1 +MLIOPEN00.PATH .EQ $200 +MLIOPEN00.BUFF .EQ $0C00 1k Buffer for MLI open +MLIREAD00.ADDR .EQ $2000 for loading kernel.bin before moving to LC1 *-------------------------------------- A2osX.QC.B.Start .PH $1000 @@ -51,7 +51,7 @@ A2osX.QC.init bit RROMBNK1 .3 jsr MLI .DA #MLISETPREFIX - .DA MLISETPREFIX01 + .DA MLISETPREFIX00 bcc .4 >LDAXI MSG.SETPREFIXKO jsr A2osX.QC.PrintAX @@ -95,39 +95,39 @@ A2osX.QC.init bit RROMBNK1 *-------------------------------------- A2osX.QC.KLoad ldx A2osX.QC.Prefix .1 lda A2osX.QC.Prefix,x - sta MLIOPEN01.PATH,x + sta MLIOPEN00.PATH,x dex bne .1 ldx A2osX.QC.Prefix ldy #0 .2 lda SYSKERNEL+1,y - sta MLIOPEN01.PATH+1,x + sta MLIOPEN00.PATH+1,x inx iny cpy SYSKERNEL bne .2 - stx MLIOPEN01.PATH + stx MLIOPEN00.PATH - >LDAXI MLIOPEN01.PATH + >LDAXI MLIOPEN00.PATH jsr A2osX.QC.PrintAX jsr MLI .DA #MLIOPEN - .DA MLIOPEN01 + .DA MLIOPEN00 bcs .9 - lda MLIOPEN01+5 - sta MLIREAD01+1 - sta MLICLOSE01+1 + lda MLIOPEN00+5 + sta MLIREAD00+1 + sta MLICLOSE00+1 jsr MLI .DA #MLIREAD - .DA MLIREAD01 + .DA MLIREAD00 bcs .9 jsr MLI .DA #MLICLOSE - .DA MLICLOSE01 + .DA MLICLOSE00 bcs .9 php @@ -136,7 +136,7 @@ A2osX.QC.KLoad ldx A2osX.QC.Prefix lda RRAMWRAMBNK1 lda RRAMWRAMBNK1 - >LDYAI MLIREAD01.ADDR+$1F00 + >LDYAI MLIREAD00.ADDR+$1F00 >STYA TmpPtr1 >LDYAI $E000+$1F00 >STYA TmpPtr2 @@ -177,18 +177,18 @@ A2osX.QC.PrintAX .9 jsr CROUT rts *-------------------------------------- -MLISETPREFIX01 .DA #1 +MLISETPREFIX00 .DA #1 .DA A2osX.QC.Prefix -MLIOPEN01 .DA #3 - .DA MLIOPEN01.PATH - .DA MLIOPEN01.BUFF +MLIOPEN00 .DA #3 + .DA MLIOPEN00.PATH + .DA MLIOPEN00.BUFF .BS 1 -MLIREAD01 .DA #4 +MLIREAD00 .DA #4 .BS 1 - .DA MLIREAD01.ADDR + .DA MLIREAD00.ADDR .DA $1FFA .BS 2 -MLICLOSE01 .DA #1 +MLICLOSE00 .DA #1 .BS 1 *-------------------------------------- SYSKERNEL >PSTRING "SYS/KERNEL" diff --git a/A2osX.S.RW.txt b/A2osX.S.RW.txt deleted file mode 100644 index 27cba6fe..00000000 --- a/A2osX.S.RW.txt +++ /dev/null @@ -1,622 +0,0 @@ -PR#3 -PREFIX /DATA/A2OSX -NEW -INC 1 -AUTO 6 - .LIST OFF - .OP 65C02 -*-------------------------------------- -RWBankSelect .EQ $C073 -*-------------------------------------- -A2osX.RamWorks >LDAXI MSG.RW - jsr PrintCStrAX - - jsr RWDetect - bcs .10 - - >LDAXI MSG.RW.OK - jsr PrintCStrAX - - bra A2osX.Z80 - -.10 jsr RWInit - bcc .1 - - >LDAXI MSG.RW.KO1 - jsr PrintCStrAX - bra A2osX.Z80 - -.1 pha - >LDAXI MSG.RW.OK1 - jsr PrintCStrAX - - jsr RWInstall - bcc .2 - - >LDAXI MSG.RW.KO2 - jsr PrintCStrAX - bra A2osX.Z80 - -.2 >LDAXI MSG.RW.OK2 - jsr PrintCStrAX - - jsr RWFormat - bcc .3 - - >LDAXI MSG.RW.KO3 - jsr PrintCStrAX - bra A2osX.Z80 - -.3 >LDAXI MSG.RW.OK3 - jsr PrintCStrAX -*-------------------------------------- -RWDetect jsr MLI - .DA #MLIONLINE - .DA RW.ONLINE - rts -*-------------------------------------- -RW.ONLINE .DA #2 - .DA #$30 Slot 3,Drive 1 - .DA RW.ONLINEBUFFER -RW.ONLINEBUFFER .BS 16 -*-------------------------------------- -RWInit php - sei - sta SETALTZP - - ldx #0 start detection at page $00 -.1 stx RWBankSelect - lda 0 - sta RW.SAVEZP0,x save Bank 0 $0000 to prevent ALTZP trash - lda 1 - sta RW.SAVEZP1,x - inx - bne .1 - - lda #0 -.2 sta RWBankSelect - sta 0 - eor #$FF - sta 1 - eor #$FF - inc - bne .2 - - ldx #0 -.3 txa - sta RWBankSelect - cmp 0 - bne .4 - eor #$FF - cmp 1 - bne .4 - inx - bne .3 - dex we reached 0,last detected page was 255 - -.4 ldy #255 X = detected page count - -.6 sty RWBankSelect - lda RW.SAVEZP0,y - sta 0 - lda RW.SAVEZP1,y - sta 1 - dey - bne .6 - - stz RWBankSelect - lda RW.SAVEZP0 Don't forget to restore Bank 0 - sta 0 - lda RW.SAVEZP1 - sta 1 - - txa - - stx RW.PGCNT PGCNT = last detected page, as we do -1 for AuxMem - - sta CLRALTZP - plp - lda RW.PGCNT - beq .9 - - clc - rts - -.9 sec - rts -*-------------------------------------- -* -*-------------------------------------- -RWInstall lda RRAMWRAMBNK1 - lda RRAMWRAMBNK1 - - ldx #RWDRV.SIZE -.1 lda RWDRV.B.START-1,x - sta RWDRV.START-1,x - dex - bne .1 - - lda RW.PGCNT - lsr - sta RWDRV.MAXHI+1 - lda #0 - ror - sta RWDRV.MAXLO+1 - - lda RROMBNK1 - - sta SETWRITEAUX - - ldx #RWDRVX.SIZE -.2 lda RWDRVX.B.START-1,x - sta RWDRVX.START-1,x - dex - bne .2 - - sta CLRWRITEAUX - - inc DEVCNT - ldx DEVCNT - lda #$30 Slot 3,Drive 1 - sta DEVLST,x - - lda #RWDRV.START - sta DEVPTRS3D1 - lda /RWDRV.START - sta DEVPTRS3D1+1 - clc - rts -*-------------------------------------- -* -*-------------------------------------- -RWFormat jsr RW.BLOCK.SET00 - - lda RW.PGCNT - lsr - sta RW.BLOCK2.TB+1 - lda #0 - ror - sta RW.BLOCK2.TB - - jsr MLI - .DA #MLIGETTIME - .DA 0 - - ldx #3 -.1 lda DATELO,x - sta RW.BLOCK2.CT,x - dex - bpl .1 - - ldx #RW.BLOCK2.END-RW.BLOCK2 -.2 lda RW.BLOCK2-1,x - sta RW.BLOCK-1,x - dex - bne .2 - - jsr MLI Write Block 2,First VOL directory block - .DA #MLIWRITEBLOCK - .DA RW.MLIWRITEBLOCK - bcc .22 - rts -*-------------------------------------- -.22 jsr RW.BLOCK.SET00 - - lda #2 - sta RW.BLOCK LO byte of previous block pointer - - inc RW.MLIWRITEBLOCK.BLK - jsr MLI Write Block 3,Last VOL directory block - .DA #MLIWRITEBLOCK - .DA RW.MLIWRITEBLOCK - bcc .33 - rts -*-------------------------------------- -.33 lda RW.PGCNT divide RW.PGCNT by 32 to get how many bitmap - lsr blocks we need : - lsr 1 page = 128 blocks = 16 bytes - lsr 32 pages = 512 bytes = 1 Block - lsr - lsr - sta RW.FBITMAPCNT store FULL bitmap block count needed - - tax - lda RW.PGCNT - and #$1F need an extra incomplete bitmap block? - beq .3 - inx -.3 stx RW.BITMAPCNT store TOTAL bitmap block needed - -.4 lda RW.FBITMAPCNT - beq .49 - - dec RW.FBITMAPCNT - jsr RW.BLOCK.SETFF - - bra .5 - -.49 jsr RW.BLOCK.SET00 - - lda RW.PGCNT - and #$1F compute incomplete bitmap block - asl - asl - asl - asl times 16 for byte count - tay - lda #$FF - bcc .42 first half of block only - - ldx #0 -.40 sta RW.BLOCK,x - inx - bne .40 - - cpy #0 - beq .5 -.41 sta RW.BLOCK+$ff,y - dey - bne .41 - - bra .5 - -.42 sta RW.BLOCK-1,y - dey - bne .42 - -.5 inc RW.MLIWRITEBLOCK.BLK - lda RW.MLIWRITEBLOCK.BLK - cmp #4 Are we writing first volume bitmap ? - bne .63 no, regular one - - lda #$CF Mark Block 0 & 1 free, 2,3 used (vol hdr) - sta RW.BLOCK - - ldy #0 - lda #$8 Start a BLOCK 4 (%00001000) - ldx RW.BITMAPCNT - -.62 pha - eor RW.BLOCK,y Mark bitmap blocks as "used" - sta RW.BLOCK,y - pla - dex - beq .63 - lsr - bne .62 - lda #$80 - iny - bra .62 - -.63 jsr MLI Write Block 4,5... - .DA #MLIWRITEBLOCK - .DA RW.MLIWRITEBLOCK - bcs .9 - - dec RW.BITMAPCNT another bitmap block needed ? - bne .4 - - clc -.9 rts -*-------------------------------------- -RW.BLOCK.SETFF lda #$FF - bra RW.BLOCK.SET -RW.BLOCK.SET00 lda #$00 -RW.BLOCK.SET ldx #0 -.1 sta RW.BLOCK,x - sta RW.BLOCK+$100,x - inx - bne .1 - rts -*-------------------------------------- -RW.MLIWRITEBLOCK - .DA #3 - .DA #$30 Slot 3,Drive 1 - .DA RW.BLOCK -RW.MLIWRITEBLOCK.BLK - .DA 2 Start writing block at #2 -*-------------------------------------- -RW.RAM31 .DA #$30 - .DA #5 len=5 chars - .AS 'RAM31' -*-------------------------------------- -RW.PGCNT .BS 1 -RW.FBITMAPCNT .BS 1 -RW.BITMAPCNT .BS 1 -RW.SAVEZP0 .BS 256 -RW.SAVEZP1 .BS 256 -*-------------------------------------- -RW.BLOCK2 .DA 0 pointer to previous block - .DA 3 pointer to next block - .DA #$F5 $F=Vol Dir Header, 5=name len - .AS 'RAM31' - .BS 10 (RAM31 len=5, fill to 15) - .HS 0000000000000000 -RW.BLOCK2.CT .BS 4 Creation time - .HS 0100C3270D version/min version/access/EL/EPB - .DA 0 File Count - .DA 4 bitmap pointer (Block 2&3 are Volume directory) -RW.BLOCK2.TB .BS 2 Total Blocks -RW.BLOCK2.END .EQ * -*-------------------------------------- -RW.BLOCK .BS 512 -*-------------------------------------- -MSG.RW >CSTRING "Detecting Ramworks Card..." -MSG.RW.OK >CSTRING "Already Installed as /RAM31.\n" -MSG.RW.OK1 >CSTRING "%d Pages Detected.\n" -MSG.RW.OK2 >CSTRING "RamWorks Driver Installed.\n" -MSG.RW.OK3 >CSTRING "RamWorks Drive Formatted.\n" -MSG.RW.KO1 >CSTRING "Not Detected.\n" -MSG.RW.KO2 >CSTRING "RamWorks Driver Install Error.\n" -MSG.RW.KO3 >CSTRING "RamWorks Drive Format Error.\n" -*-------------------------------------- -* Driver for Ramworks in main LC -* $FF00 -> $FF9A (Inclusive) -* $FF58 MUST BE $60 (RTS) -* DO NOT trash DRV.BLKNUM as ProDOS -* reuses it after Block operation -*-------------------------------------- -DRV.COMMAND .EQ $42 -DRV.BUFF .EQ $44 -DRV.BLKNUM .EQ $46 -*-------------------------------------- -RWDRV.B.START - .PH $FF00 -RWDRV.START cld ProDOS will check that byte!!! - ldy DRV.COMMAND 0 = Status ? - beq RMDRV.CMDSTATUS - - cpy #3 - beq RWDRV.EXITOK 3 = Format : nothing to do, exit with no error - bcs RWDRV.IOERR > 3 = Invalid OP, IO error - - lda DRV.BLKNUM - sec - sbc RWDRV.MAXLO+1 - lda DRV.BLKNUM+1 - sbc RWDRV.MAXHI+1 - bcs RWDRV.IOERR DRV.BLKNUM >= RW.DRV.SIZE, IO error - - lda DRV.BLKNUM compute PAGE = blocknumLO *2 - asl - pha - lda DRV.BLKNUM+1 compute BANK = blocknumHI *2 - rol - inc +1 for skipping Aux BANK 0 - plx move page into X - beq RWDRV.GOAUX move from/to aux page0/1 - cpx #$C0 - bcs RWDRV.GOAUX move from/to aux LC -*-------------------------------------- -* X=Page($02 -> $BF),A=Bank,Y=CMD -*-------------------------------------- - php - sei Disable IRQ as no vector set in RW Banks - sta RWBankSelect Select RAMWorks Bank - sta CLR80STORE make sure SETREADAUX/SETWRITEAUX effective everywhere - - stx DRV.COMMAND+1 Reuse DRV.COMMAND for RAM PTR - stz DRV.COMMAND - - dey Y=CMD, zero if read - bne RWDRV.W CC, go write - - sta SETREADAUX - ldx #DRV.COMMAND READ:copy from RAM to BUFF - ldy #DRV.BUFF - bra RWDRV.RW - -RWDRV.W sta SETWRITEAUX - ldx #DRV.BUFF - ldy #DRV.COMMAND WRITE:copy from BUFF to RAM - -RWDRV.RW stx RWDRV.RW.SRC+1 - sty RWDRV.RW.DST+1 - - ldx #2 2 pages to copy - - ldy #0 - -RWDRV.RW.SRC lda ($FF),y -RWDRV.RW.DST sta ($FF),y - iny - bne RWDRV.RW.SRC - - .HS 24 BIT Zero Page to skip RTS -RWDRV.RTS rts $FF58 Must Be RTS - - inc DRV.BUFF+1 - inc DRV.COMMAND+1 - dex - bne RWDRV.RW.SRC - - stz RWBankSelect - sta CLRREADAUX - sta CLRWRITEAUX - plp - -RMDRV.CMDSTATUS -RWDRV.MAXLO ldx #$FF return device block count in X,Y... -RWDRV.MAXHI ldy #$FF - -RWDRV.EXITOK lda #0 make A=0 - clc - rts - -RWDRV.IOERR lda #MLI.ERR.IO Carry already set - rts -*-------------------------------------- -* X=Page(0/1 or LC),A=Bank -*-------------------------------------- -RWDRV.GOAUX pha save BANK - - sta SETWRITEAUX - - ldy #RWDRVX.XM.SIZE Backup begining of $300 to generate move code -.1 lda RWDRV.XM.RUN-1,y - sta RWDRVX.XM.SAVE-1,y - dey - bne .1 - - pla restore BANK - - sta SETREADAUX - jsr RWDRVX.START Setup Code in main mem at $300 for data move -* returns : CC=WRITE, CS=READ - sta CLRREADAUX CLRWRITEAUX already triggered by code copy - jsr RWDRV.XM.RUN Now execute generated code in main memory - - sta SETREADAUX - jsr RWDRVX.RESTORE - sta CLRREADAUX - rts A & carry setup properly by RWDRVX.RESTORE - -RWDRV.END .EP -RWDRV.B.END -RWDRV.SIZE .EQ RWDRV.B.END-RWDRV.B.START -*-------------------------------------- -* Driver for Ramworks in aux memory -* $0200 -> $02FF TMP buffer for PAGE copy -* $0300 -> $03FD (Inclusive) -* do not trash $03FE-$03FF (IRQ Vector) -* X=Page(0/1 or LC),A=Bank -*-------------------------------------- -RMDRVX.TMP .EQ $200 -RWDRV.XM.RUN .EQ $300 -*-------------------------------------- -RWDRVX.B.START - .PH $0300 -RWDRVX.START sta RWDRVX.XM.BANK+1 setup BANK - txa - beq .1 page 0/1, no need to check BANK - cmp #$D0 $C0 <= PAGE < $D0 ? - bcc .1 no, store in BNK1 - ora #$10 Remap $C0 page to $D0 BNK2 - -.1 ror RWDRVX.XM.RWLC+1 Save Carry to select proper RW bank later - - ldy DRV.BUFF - ldx DRV.BUFF+1 - - lsr DRV.COMMAND DRV.COMMAND: 1=READ,2=WRITE - bcc .2 CC=WRITE, CS=READ - stz RWDRVX.XM.SRC+1 READ from src LO = 0 - sta RWDRVX.XM.SRC+2 READ from src HI = PAGE - sty RWDRVX.XM.DST+1 WRITE to DRV.BUFF - stx RWDRVX.XM.DST+2 - bra .3 - -.2 sty RWDRVX.XM.SRC+1 READ from DRV.BUFF - stx RWDRVX.XM.SRC+2 - stz RWDRVX.XM.DST+1 WRITE to dst LO = 0 - sta RWDRVX.XM.DST+2 WRITE to dst HI = PAGE - -.3 sta CLRWRITEAUX - - ldy #RWDRVX.XM.SIZE -.4 lda RWDRVX.XM.START-1,y - sta RWDRV.XM.RUN-1,y - dey - bne .4 - rts -*-------------------------------------- -* Called form Main LC after RWDRVX.XM execution -*-------------------------------------- -RWDRVX.RESTORE ldy #RWDRVX.XM.SIZE Now, restore begining of $300 -.1 lda RWDRVX.XM.SAVE-1,y - sta RWDRV.XM.RUN-1,y - dey - bne .1 - tya setup A=0 and CC for exit with non error - clc - rts -*-------------------------------------- -* "auXMove" Code, moved from Aux to main $300 -* $0200 -> $02FF TMP buffer for 2 steps moving between LCs -* CC=WRITE : -* CS=READ : -*-------------------------------------- -RWDRVX.XM.START php - sei - - ldx #0 - ldy #2 2 pages to copy - -RWDRVX.XM.COPY jsr RWDRV.XM.RUN+RWDRVX.XM.MNLC-RWDRVX.XM.START WRITE:copy from MAIN to TMP - - bcc RWDRVX.XM.SRC CC=WRITE,CS=READ? - - jsr RWDRV.XM.RUN+RWDRVX.XM.RWLC-RWDRVX.XM.START READ:copy from BANK to TMP - sta SETALTZP - -RWDRVX.XM.SRC lda $FFFF,x - sta RMDRVX.TMP,x - inx - bne RWDRVX.XM.SRC - - sta CLRALTZP - jsr RWDRV.XM.RUN+RWDRVX.XM.MNLC-RWDRVX.XM.START READ:copy from TMP to MAIN - - bcs RWDRVX.XM.1 CC=WRITE,CS=READ? - - jsr RWDRV.XM.RUN+RWDRVX.XM.RWLC-RWDRVX.XM.START WRITE:copy from TMP to BANK - sta SETALTZP - -RWDRVX.XM.1 lda RMDRVX.TMP,x -RWDRVX.XM.DST sta $FFFF,x - inx - bne RWDRVX.XM.1 - - sta CLRALTZP - - inc RWDRV.XM.RUN+RWDRVX.XM.SRC+2-RWDRVX.XM.START - inc RWDRV.XM.RUN+RWDRVX.XM.DST+2-RWDRVX.XM.START - dey - bne RWDRVX.XM.COPY - - plp - -RWDRVX.XM.MNLC stz RWBankSelect ProDOS always uses LCBANK1 - bit RRAMWRAMBNK1 - bit RRAMWRAMBNK1 - rts - -RWDRVX.XM.RWLC lda #$FF - bpl RWDRVX.XM.BANK - bit RRAMWRAMBNK2 - bit RRAMWRAMBNK2 -RWDRVX.XM.BANK lda #$FF - sta RWBankSelect - rts - -RWDRVX.XM.END -*-------------------------------------- -RWDRVX.XM.SIZE .EQ RWDRVX.XM.END-RWDRVX.XM.START -*-------------------------------------- -RWDRVX.XM.SAVE .BS RWDRVX.XM.SIZE -*-------------------------------------- - .EP -*-------------------------------------- -RWDRVX.B.END -RWDRVX.SIZE .EQ RWDRVX.B.END-RWDRVX.B.START -*-------------------------------------- -* CONTROL SECTION : -*-------------------------------------- - .DO RWDRV.RTS=$FF58 - .ELSE - ERROR:RWDRV.RTS <> $FF58 - .FIN - .DO RWDRV.SIZE>$9B - ERROR:RWDRV.SIZE too big - .FIN - .DO RWDRVX.SIZE>$FE - ERROR:RWDRVX.SIZE too big - .FIN - .DO RWDRVX.XM.SIZE>$F0 - ERROR:RWDRVX.XM.SIZE too big - .FIN -*-------------------------------------- -MAN -SAVE A2OSX.S.RW -LOAD A2OSX.S -ASM diff --git a/A2osX.S.TOOLS.txt b/A2osX.S.TOOLS.txt new file mode 100644 index 00000000..0f601112 --- /dev/null +++ b/A2osX.S.TOOLS.txt @@ -0,0 +1,143 @@ +PR#3 +PREFIX /A2OSX.BUILD +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 +*-------------------------------------- +PrintPStrAX >STAX TmpPtr1 + lda (TmpPtr1) + tax + beq .9 + ldy #1 + +.1 lda (TmpPtr1),y + ora #$80 + jsr COUT + iny + dex + bne .1 + +.9 rts +*-------------------------------------- +PrintCStrAX >STAX TmpPtr1 + pla + sta TmpPtr2 + pla + sta TmpPtr2+1 + + ldy #0 +.1 lda (TmpPtr1),y + beq .9 + cmp #'%' + bne .4 + + iny + lda (TmpPtr1),y + beq .9 + cmp #'d' + bne .2 + pla + jsr PrintADec + bra .8 + +.2 cmp #'D' + bne .3 + pla + plx + jsr PrintAXDec + bra .8 + +.3 cmp #'h' + bne .4 + pla + jsr PRBYTE + +.4 cmp #'\' + bne .7 + iny + lda (TmpPtr1),y + beq .9 + cmp #'n' + bne .9 + lda #$0D + +.7 ora #$80 + jsr COUT +.8 iny + bne .1 + +.9 lda TmpPtr2+1 + pha + lda TmpPtr2 + pha + rts +*-------------------------------------- +PrintADec ldx #0 +PrintAXDec >STAX HEX +PrintDec stz BCD + stz BCD+1 + stz BCD+2 + + phy + + ldx #16 let's roll 16 bits + sed +.2 asl HEX + rol HEX+1 + php cpy will disturb carry while BCD adc + ldy #0 +.3 plp + lda BCD,y + adc BCD,y + sta BCD,y + php + iny + cpy #3 Last byte of BCDBUF? + bne .3 + plp + dex + bne .2 + + cld + + stz bFlag + + ldx #2 +.4 lda BCD,x + lsr + lsr + lsr + lsr + bne .5 + bit bFlag + bpl .6 +.5 sec + ror bFlag + ora #$B0 + jsr COUT +.6 lda BCD,x + and #$0F + bne .7 + bit bFlag + bpl .8 +.7 sec + ror bFlag + ora #$B0 + jsr COUT +.8 dex + bpl .4 + + bit bFlag + bmi .9 + lda #$B0 + jsr COUT + +.9 ply + rts +*-------------------------------------- +MAN +SAVE A2OSX.S.TOOLS +LOAD A2OSX.S +ASM diff --git a/A2osX.S.txt b/A2osX.S.txt index e1f0b521..ac96802c 100644 --- a/A2osX.S.txt +++ b/A2osX.S.txt @@ -1,12 +1,11 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 .LIST OFF .OP 65C02 .OR $2000 -* .TF A2osX.SYSTEM .TF A *-------------------------------------- .INB INC/MACROS.I @@ -18,25 +17,43 @@ AUTO 6 TmpPtr1 .EQ $0 main & aux ZP TmpPtr2 .EQ $2 main & aux ZP *-------------------------------------- -* A2osX LOADER +A2osX.Z80Stack .EQ $0F00 $0fff=0ffffh +A2osX.RelocAddr .EQ $1000 +A2osX.KMLOAD .EQ $2000 +A2osX.KMMAXLEN .EQ $4000 +A2osX.OpenBuff1 .EQ $6000 1024 Buffer for MLIOPEN01 +A2osX.OpenBuff2 .EQ $6400 1024 Buffer for MLIOPEN02 +A2osX.ReadBuff .EQ $6800 512 Buffer for MLIREAD01 +Boot.Prefix .EQ $6A00 MLI.MAXPATH +KM.Filename .EQ $6A80 MLI.MAXPATH *-------------------------------------- -A2osX.INIT php - pla - sei - ldx #$FF init 6502 stack to highest +A2osX.Start .EQ * + .PH A2osX.RelocAddr +A2osX.Init0 ldx #$FF init 6502 stack to highest txs stx A2osX.SaveSM - pha - plp -* php EDIT:Already Set By ProDOS -* sei -* sta SETALTZP Switch to alt ZP -* stx A2osX.SaveSX make Alt SP to highest too -* sta CLRALTZP Switch to main ZP -* plp + >LDYAI A2osX.Start + >STYA TmpPtr1 + >LDYAI A2osX.RelocAddr + >STYA TmpPtr2 + + ldx #$10 reloc $2000-$2FFF to $1000-$1FFF + ldy #0 - jsr HOME +.1 lda (TmpPtr1),y + sta (TmpPtr2),y + iny + bne .1 + + inc TmpPtr1+1 + inc TmpPtr2+1 + dex + bne .1 + + jmp A2osX.Init1 +*-------------------------------------- +A2osX.Init1 jsr HOME >LDAXI MSG.STAGE0 jsr PrintCStrAX @@ -47,8 +64,8 @@ A2osX.INIT php jsr PrintCStrAX lda MACHID - and #MACHIDRAM - cmp #MACHIDRAM128 + and #MACHID.RAM + cmp #MACHID.RAM.128 beq .1 >LDAXI MSG.SYSMEM.KO @@ -115,11 +132,15 @@ A2osX.Z80 >LDAXI MSG.Z80 >LDAXI MSG.Z80.OK jsr PrintCStrAX - bra A2osX.MLIQuit + bra A2osX.EnumKM .1 >LDAXI MSG.Z80.KO jsr PrintCStrAX *-------------------------------------- +A2osX.EnumKM >LDAXI MSG.KMENUM + jsr PrintCStrAX + jsr EnumKM +*-------------------------------------- A2osX.MLIQuit >LDAXI MSG.STAGE0OK jsr PrintCStrAX @@ -212,6 +233,176 @@ DisableRamDRV php sec rts *-------------------------------------- +InitZ80 ldx #Z80Code.Size +.1 lda Z80Code.Start-1,x + sta $1000-1,x 00000H for Z80 + dex + bne .1 + + stz TmpPtr1 + lda #$C1 + sta TmpPtr1+1 + +.2 sta (TmpPtr1) + lda $100D + bmi .8 + inc TmpPtr1+1 + lda TmpPtr1+1 + cmp #$C8 + beq .9 + clc + adc #$20 + sta $100A + bra .2 + +.8 lda TmpPtr1+1 + and #$0F + sta A2osX.Z80Slot + clc + rts + +.9 stz A2osX.Z80Slot + sec + rts +*-------------------------------------- +EnumKM.EPB .EQ $0D +EnumKM.EL .EQ $27 +*-------------------------------------- +EnumKM ldx #0 + ldy Boot.Prefix +.1 inx + lda SYS,x + sta Boot.Prefix+1,y + iny + cpx SYS + bne .1 + + sty Boot.Prefix + + jsr MLI + .DA #MLIOPEN + .DA MLIOPEN01 + bcs .99 + + lda MLIOPEN01+5 + sta MLIREAD01+1 + sta MLICLOSE01+1 + +.2 jsr MLI + .DA #MLIREAD + .DA MLIREAD01 + bcs .98 + + lda #EnumKM.EPB + sta EnumKM.EC + >LDYAI A2osX.ReadBuff+4 + >STYA EnumKM.BPTR + +.3 >LDYA EnumKM.BPTR + >STYA TmpPtr1 + lda (TmpPtr1) + and #$F0 Empty ? + beq .5 yes, skip + and #$C0 anything out of type 1,2 or 3 ? + bne .5 yes, skip + lda (TmpPtr1) + and #$0F + cmp KM.PREFIX at least enough chars for KM.*? + bcc .5 no, skip + ldy #$10 file type + lda (TmpPtr1),y + cmp #$06 'BIN'? + bne .5 skip + ldy KM.PREFIX +.4 lda (TmpPtr1),y + cmp KM.PREFIX,y + bne .5 + dey + bne .4 + + jsr LoadKM + +.5 lda EnumKM.BPTR + clc + adc #EnumKM.EL + sta EnumKM.BPTR + bcc .6 + inc EnumKM.BPTR+1 + +.6 dec EnumKM.EC + bne .3 + bra .2 + +.8 jsr MLI + .DA #MLICLOSE + .DA MLICLOSE01 + rts + +.98 cmp #MLI.ERR.EOF + beq .8 + pha + jsr .8 + pla +.99 sec + rts +EnumKM.EC .BS 1 +EnumKM.BPTR .BS 2 +*-------------------------------------- +LoadKM ldx Boot.Prefix +.1 lda Boot.Prefix,x + sta KM.Filename,x + dex + bne .1 + + ldx Boot.Prefix + lda (TmpPtr1) + and #$0F + tay + clc + adc Boot.Prefix + sta KM.Filename + tax + +.2 lda (TmpPtr1),y + sta KM.Filename,x + dex + dey + bne .2 + + >LDAXI MSG.KMLOAD + jsr PrintCStrAX + >LDAXI KM.Filename + jsr PrintPStrAX + jsr CROUT + + jsr MLI + .DA #MLIOPEN + .DA MLIOPEN02 + bcs .99 + + lda MLIOPEN02+5 + sta MLIREAD02+1 + sta MLICLOSE02+1 + + jsr MLI + .DA #MLIREAD + .DA MLIREAD02 + bcs .98 + jsr .9 + jsr A2osX.KMLOAD + jsr CROUT + +.98 pha + jsr .9 + pla + sec + rts + +.9 jsr MLI + .DA #MLICLOSE + .DA MLICLOSE02 +.99 rts +*-------------------------------------- SetupQuitCode lda RRAMWRAMBNK2 lda RRAMWRAMBNK2 @@ -228,121 +419,7 @@ SetupQuitCode lda RRAMWRAMBNK2 lda RROMBNK1 rts *-------------------------------------- -PrintCStrAX >STAX TmpPtr1 - pla - sta TmpPtr2 - pla - sta TmpPtr2+1 - - ldy #0 -.1 lda (TmpPtr1),y - beq .9 - cmp #'%' - bne .4 - - iny - lda (TmpPtr1),y - beq .9 - cmp #'d' - bne .2 - pla - jsr PrintADec - bra .8 - -.2 cmp #'D' - bne .3 - pla - plx - jsr PrintAXDec - bra .8 - -.3 cmp #'h' - bne .4 - pla - jsr PRBYTE - -.4 cmp #'\' - bne .7 - iny - lda (TmpPtr1),y - beq .9 - cmp #'n' - bne .9 - lda #$0D - -.7 ora #$80 - jsr COUT -.8 iny - bne .1 - -.9 lda TmpPtr2+1 - pha - lda TmpPtr2 - pha - rts -*-------------------------------------- -PrintADec ldx #0 -PrintAXDec >STAX HEX -PrintDec stz BCD - stz BCD+1 - stz BCD+2 - - phy - - ldx #16 let's roll 16 bits - sed -.2 asl HEX - rol HEX+1 - php cpy will disturb carry while BCD adc - ldy #0 -.3 plp - lda BCD,y - adc BCD,y - sta BCD,y - php - iny - cpy #3 Last byte of BCDBUF? - bne .3 - plp - dex - bne .2 - - cld - - stz bFlag - - ldx #2 -.4 lda BCD,x - lsr - lsr - lsr - lsr - bne .5 - bit bFlag - bpl .6 -.5 sec - ror bFlag - ora #$B0 - jsr COUT -.6 lda BCD,x - and #$0F - bne .7 - bit bFlag - bpl .8 -.7 sec - ror bFlag - ora #$B0 - jsr COUT -.8 dex - bpl .4 - - bit bFlag - bmi .9 - lda #$B0 - jsr COUT - -.9 ply - rts + .INB A2OSX.S.TOOLS *-------------------------------------- MSG.STAGE0 >CSTRING "A2osX[Stage0]:Init\n" MSG.SYSMEM >CSTRING "Checking System Memory..." @@ -358,8 +435,9 @@ MSG.RAMDRV.KO1 >CSTRING "Uninstall Failed !!!\n" MSG.Z80 >CSTRING "Detecting Z80 CPU..." MSG.Z80.OK >CSTRING "Detected In Slot %d.\n" MSG.Z80.KO >CSTRING "Not Detected.\n" +MSG.KMENUM >CSTRING "Looking For Kernel Modules...\n" +MSG.KMLOAD >CSTRING "Loading KM : " MSG.STAGE0OK >CSTRING "A2osX[Stage0]:Complete.\n" -*-------------------------------------- MSG.CPUTYPEL .DA #MSG.6502 .DA #MSG.65C02 .DA #MSG.R65C02 @@ -368,30 +446,63 @@ MSG.CPUTYPEH .DA /MSG.6502 .DA /MSG.65C02 .DA /MSG.R65C02 .DA /MSG.65C816 -*-------------------------------------- -MSG.6502 >CSTRING "NMOS 6502.\n" -MSG.65C02 >CSTRING "CMOS 65C02.\n" -MSG.R65C02 >CSTRING "Rockwell R65C02.\n" -MSG.65C816 >CSTRING "16 Bits 65C816.\n" +MSG.6502 >CSTRING "6502.\n" +MSG.65C02 >CSTRING "65C02.\n" +MSG.R65C02 >CSTRING "R65C02.\n" +MSG.65C816 >CSTRING "65C816.\n" *-------------------------------------- MLIGETPREFIX01 .DA #1 .DA Boot.Prefix +MLIOPEN01 .DA #3 For DIR listing + .DA Boot.Prefix + .DA A2osX.OpenBuff1 + .BS 1 +MLIREAD01 .DA #4 + .BS 1 + .DA A2osX.ReadBuff Load address Dir Blocks + .DA $200 Maxlen of Dir Blocks (512) + .BS 2 +MLICLOSE01 .DA #1 + .BS 1 +MLIOPEN02 .DA #3 + .DA KM.Filename + .DA A2osX.OpenBuff2 + .BS 1 +MLIREAD02 .DA #4 + .BS 1 + .DA A2osX.KMLOAD Load address for KMs + .DA A2osX.KMMAXLEN Maxlen of KM + .BS 2 +MLICLOSE02 .DA #1 + .BS 1 MLIQUIT01 .DA #4 .DA #0 .DA 0 .DA #0 .DA 0 *-------------------------------------- -Boot.Prefix .BS MLI.MAXPATH -*-------------------------------------- +SYS >PSTRING "SYS/" +KM.PREFIX >PSTRING "KM." HEX .BS 2 BCD .BS 3 bFlag .BS 1 *-------------------------------------- - .INB A2OSX.S.Z80 +Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack + .HS 3EFF LD A,0FFH Set Flag + .HS 320D00 LD (FLAG),A + .HS 3200E1 LD (0E100H),A Back to 6502 + .HS 18F3 JR START Loop + .HS 00 FLAG: .DB 0 +Z80Code.End .EQ * +Z80Code.Size .EQ Z80Code.End-Z80Code.Start + .EP .INB A2OSX.S.QC .INB A2OSX.S.GP -*-------------------------------------- +A2osX.End .EQ * +A2osX.SIZE .EQ A2osX.End-A2osX.Start + .DO A2osX.SIZE>$1000 + ERROR:A2osX.SIZE too big + .FIN MAN SAVE A2OSX.S ASM diff --git a/A2osX.STARTUP.txt b/A2osX.STARTUP.txt index 156a4275..8ff6129b 100644 --- a/A2osX.STARTUP.txt +++ b/A2osX.STARTUP.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index 8d63c4f1..42b0b187 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 32415f1b..3369950b 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index 6d4bf0f2..306edfc3 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/DNS.S.txt b/BIN/DNS.S.txt index dfb2a101..111862e2 100644 --- a/BIN/DNS.S.txt +++ b/BIN/DNS.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 67590275..f282604b 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index 6d130173..c716cc40 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/MEM.S.txt b/BIN/MEM.S.txt index 9d7fc79f..ea3af86e 100644 --- a/BIN/MEM.S.txt +++ b/BIN/MEM.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/NETCFG.S.txt b/BIN/NETCFG.S.txt index 198a32a2..eea2293c 100644 --- a/BIN/NETCFG.S.txt +++ b/BIN/NETCFG.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/PASSWD.S.txt b/BIN/PASSWD.S.txt new file mode 100644 index 00000000..e69de29b diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index 6640b2cf..d72929be 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/PS.S.txt b/BIN/PS.S.txt index 7d054192..49dce0d7 100644 --- a/BIN/PS.S.txt +++ b/BIN/PS.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/TEST.S.txt b/BIN/TEST.S.txt index 46af09de..97daaeb7 100644 --- a/BIN/TEST.S.txt +++ b/BIN/TEST.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/BIN/USERADD.S.txt b/BIN/USERADD.S.txt new file mode 100644 index 00000000..e69de29b diff --git a/BIN/USERDEL.S.txt b/BIN/USERDEL.S.txt new file mode 100644 index 00000000..e69de29b diff --git a/BIN/_TEMPLATE.S.txt b/BIN/_TEMPLATE.S.txt index 35ddcbaa..aa02877d 100644 --- a/BIN/_TEMPLATE.S.txt +++ b/BIN/_TEMPLATE.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 4a125354..e154d776 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index e472dcf5..2b0f6818 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/DRV/PPIC.DRV.S.txt b/DRV/PPIC.DRV.S.txt index 531f716a..80e8ccd0 100644 --- a/DRV/PPIC.DRV.S.txt +++ b/DRV/PPIC.DRV.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/DRV/SSC.DRV.S.txt b/DRV/SSC.DRV.S.txt index cf007a0e..072052d3 100644 --- a/DRV/SSC.DRV.S.txt +++ b/DRV/SSC.DRV.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index f9c8895b..49930e5e 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/ETC/TCPIP.CONF b/ETC/TCPIP.CONF index ec80ac68..305e8a3f 100644 --- a/ETC/TCPIP.CONF +++ b/ETC/TCPIP.CONF @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 57023e64..696c9074 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 @@ -110,9 +110,9 @@ A2osX.SaveSX .EQ $101 Aux *-------------------------------------- * Main $200 -> 2FF : (Reserved, ProDOS,Clock DRV....) * Main $300 -> 3EF : -* Main $3F0 -> 3FF : ProDOS Vectors +* Main $3F0 -> 3FF : SYS Vectors (reset,IRQ...) * Aux $200 -> 3FD : /RAM Driver -* Aux $3FE -> 3FF : RESET Vector +* Aux $3FE -> 3FF : IRQ Vector *-------------------------------------- * Console Screen .EQ $400 -> $7FF * System Screen .EQ $800 -> $BFF @@ -122,7 +122,6 @@ TmpBuffer256 .EQ $0C00 D.STACKSEG .EQ $0D00 $0DFF Down to $0D00 *-------------------------------------- MLICALL.PARAMS .EQ $0E00 size=$12 (SET_FILE_INFO +1) - *-------------------------------------- MEMMGR.LOMEM .EQ $0E30 MEMMGR.MLLIMIT .EQ $0E32 @@ -134,7 +133,6 @@ MEMMGR.TABLESIZE .EQ $0E3A Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00 Z80JMP .EQ $1000 *-------------------------------------- -MEMMGR.TABLE .EQ $1100 256 Handles DEVMGR.TABLE .EQ $1200 K.DEV.MAX*S.DEV.SIZE=20*12=240 TSKMGR.TABLE .EQ $1300 K.PS.MAX*S.PS.SIZE=32*16=512 *-------------------------------------- @@ -308,11 +306,6 @@ S.LISTDIR.hPATTERN .EQ 14 Pattern for file filtering * S.LISTDIR.SIZE .EQ 16 *-------------------------------------- -* S.FENTRY STRUCT -*-------------------------------------- -S.FENTRY.F .EQ 0 -S.FENTRY.COUNT .EQ 1 -*-------------------------------------- * S.BUFRDR STRUCT *-------------------------------------- S.BUFRDR.hMEM .EQ 0 diff --git a/INC/IO.I.txt b/INC/IO.I.txt index c051511c..0008d291 100644 --- a/INC/IO.I.txt +++ b/INC/IO.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 5184670f..7a3dbd2a 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/INC/LIBSTR.I.txt b/INC/LIBSTR.I.txt index 7fa2418c..d4bd7727 100644 --- a/INC/LIBSTR.I.txt +++ b/INC/LIBSTR.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/INC/LIBTCPIP.I.txt b/INC/LIBTCPIP.I.txt index bef04373..5f5cf76b 100644 --- a/INC/LIBTCPIP.I.txt +++ b/INC/LIBTCPIP.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index 74844b6b..c07d4605 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/INC/MONITOR.I.txt b/INC/MONITOR.I.txt index 3b2717c2..1182b59f 100644 --- a/INC/MONITOR.I.txt +++ b/INC/MONITOR.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 1000 diff --git a/INC/PRODOS.I.txt b/INC/PRODOS.I.txt index cde203f2..22850004 100644 --- a/INC/PRODOS.I.txt +++ b/INC/PRODOS.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 1000 @@ -55,6 +55,7 @@ MLI.ERR.FNOTFND .EQ $46 MLI.ERR.DUPFILE .EQ $47 MLI.ERR.OVERRUN .EQ $48 MLI.ERR.VOLFULL .EQ $49 +MLI.ERR.EOF .EQ $4C *-------------------------------------- MLI .EQ $BF00 diff --git a/INC/ZP.I.txt b/INC/ZP.I.txt index f0d971d6..8cde0ef8 100644 --- a/INC/ZP.I.txt +++ b/INC/ZP.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/LIB/LIBCRYPT.I.txt b/LIB/LIBCRYPT.I.txt index fc4c6bdc..425e1c93 100644 --- a/LIB/LIBCRYPT.I.txt +++ b/LIB/LIBCRYPT.I.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/LIB/LIBCRYPT.S.txt b/LIB/LIBCRYPT.S.txt index 2276538e..a9dfe8a8 100644 --- a/LIB/LIBCRYPT.S.txt +++ b/LIB/LIBCRYPT.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/LIB/LIBSTR.S.txt b/LIB/LIBSTR.S.txt index c773f262..f6016821 100644 --- a/LIB/LIBSTR.S.txt +++ b/LIB/LIBSTR.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/LIB/LIBTCPIP.S.ARP.txt b/LIB/LIBTCPIP.S.ARP.txt index fc30dc21..83e9df38 100644 --- a/LIB/LIBTCPIP.S.ARP.txt +++ b/LIB/LIBTCPIP.S.ARP.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 57a4f449..d18a8a01 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index dc9d281e..c532999d 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SBIN/DHCPCLNT.S.txt b/SBIN/DHCPCLNT.S.txt index 08f9521d..a1d49610 100644 --- a/SBIN/DHCPCLNT.S.txt +++ b/SBIN/DHCPCLNT.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 2ab90ac0..cb354af7 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index dcf29ab2..a20b2b15 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SBIN/TCPIP.S.txt b/SBIN/TCPIP.S.txt index eb53cc20..878eb335 100644 --- a/SBIN/TCPIP.S.txt +++ b/SBIN/TCPIP.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index a00dc8b1..d2ba3ef0 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 9043e4dc..cf142aab 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 678730f3..154e0d55 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 1630e2c9..919c2a65 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.EVT.txt b/SYS/KERNEL.S.EVT.txt index e117b4db..abde36ad 100644 --- a/SYS/KERNEL.S.EVT.txt +++ b/SYS/KERNEL.S.EVT.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.FS.txt b/SYS/KERNEL.S.FS.txt index a4161b3f..95a9a989 100644 --- a/SYS/KERNEL.S.FS.txt +++ b/SYS/KERNEL.S.FS.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 80be4712..a00abda0 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 @@ -73,6 +73,7 @@ S.GetMem >PULLB ZPMemMgrReqF store requested flags bcc .10 inc ZPMemMgrReqS+1 .10 ldx #0 init to SLOT #0 of MEMSLOT list + lda MEMMGR.TABLESIZE Check if some free slot to reuse first beq .6 .1 txa @@ -101,16 +102,19 @@ S.GetMem >PULLB ZPMemMgrReqF store requested flags .5 lda ZPMemMgrReqF get requested flags ora #S.MEM.F.INUSE mark as in use sta (ZPMemMgrSPtr) + lda #0 ldy #S.MEM.BIN sta (ZPMemMgrSPtr),y inc Mark this slot used by one task ldy #S.MEM.REFCNT sta (ZPMemMgrSPtr),y + ldy #S.PS.ID lda (TSKMGR.TSKPTR),y ldy #S.MEM.OWNERPID sta (ZPMemMgrSPtr),y + ldy #S.MEM.PTR lda (ZPMemMgrSPtr),y pha @@ -123,14 +127,17 @@ S.GetMem >PULLB ZPMemMgrReqF store requested flags .6 lda ZPMemMgrReqF and #S.MEM.F.ALIGN is request needs a page align ? beq .7 + lda MEMMGR.MHLIMIT target PTR will be page aligned ? sec sbc ZPMemMgrReqS beq .7 yes, allocate + tay no, reserve a free slot to fill gap lda #0 jsr S.AddSlot bcs .99 + .7 >LDYA ZPMemMgrReqS jsr S.AddSlot bcs .99 @@ -139,6 +146,7 @@ S.GetMem >PULLB ZPMemMgrReqF store requested flags lda ZPMemMgrReqF ora #S.MEM.F.INUSE sta (ZPMemMgrSPtr) set Flags + lda #1 ldy #S.MEM.REFCNT Mark this slot referenced sta (ZPMemMgrSPtr),y @@ -168,10 +176,9 @@ S.FreeMemA0 phy phx jsr S.GetMemByIDA lda (ZPMemMgrSPtr) - bmi .10 In use ? - bra * + bpl * In use ? -.10 ldy #S.MEM.REFCNT + ldy #S.MEM.REFCNT lda (ZPMemMgrSPtr),y Get count of those referencing this hMem dec only one left ? sta (ZPMemMgrSPtr),y diff --git a/SYS/KERNEL.S.MLI.txt b/SYS/KERNEL.S.MLI.txt index d1ff89ab..08654481 100644 --- a/SYS/KERNEL.S.MLI.txt +++ b/SYS/KERNEL.S.MLI.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.NET.txt b/SYS/KERNEL.S.NET.txt index e41bc761..1b86fc69 100644 --- a/SYS/KERNEL.S.NET.txt +++ b/SYS/KERNEL.S.NET.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.RDR.txt b/SYS/KERNEL.S.RDR.txt index f4d4f4f0..6718f3f8 100644 --- a/SYS/KERNEL.S.RDR.txt +++ b/SYS/KERNEL.S.RDR.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.SCR.txt b/SYS/KERNEL.S.SCR.txt index 5ee29c39..62f8023a 100644 --- a/SYS/KERNEL.S.SCR.txt +++ b/SYS/KERNEL.S.SCR.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.STR.txt b/SYS/KERNEL.S.STR.txt index bda7e89f..3f5cddd1 100644 --- a/SYS/KERNEL.S.STR.txt +++ b/SYS/KERNEL.S.STR.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.TSK.txt b/SYS/KERNEL.S.TSK.txt index e9c69a3c..7c15db60 100644 --- a/SYS/KERNEL.S.TSK.txt +++ b/SYS/KERNEL.S.TSK.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 79d2d676..4c5d8801 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2osX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KM.NSC.S.txt b/SYS/KM.NSC.S.txt index f279ed5d..01653d7d 100644 --- a/SYS/KM.NSC.S.txt +++ b/SYS/KM.NSC.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/SYS/KM.RAMWORKS.S.txt b/SYS/KM.RAMWORKS.S.txt index 6db2365f..84269286 100644 --- a/SYS/KM.RAMWORKS.S.txt +++ b/SYS/KM.RAMWORKS.S.txt @@ -1,5 +1,5 @@ PR#3 -PREFIX /DATA/A2OSX +PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 diff --git a/_Make_SYS.txt b/_Make_SYS.txt new file mode 100644 index 00000000..7150985d --- /dev/null +++ b/_Make_SYS.txt @@ -0,0 +1,4 @@ +PREFIX /A2OSX.BUILD +NEW +BLOAD A +BSAVE A2OSX.SYSTEM,TSYS,A$2000,L$1FFA