Loader & KM modules implemented

This commit is contained in:
Rémy GIBERT 2015-03-15 23:00:40 +01:00
parent c04970fa55
commit 8be8351136
65 changed files with 493 additions and 856 deletions

BIN
A2OSX.BOOT.DSK Normal file

Binary file not shown.

BIN
A2OSX.BUILD.HDV Normal file

Binary file not shown.

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -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"

View File

@ -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

143
A2osX.S.TOOLS.txt Normal file
View File

@ -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

View File

@ -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
jsr HOME
ldx #$10 reloc $2000-$2FFF to $1000-$1FFF
ldy #0
.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

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

0
BIN/PASSWD.S.txt Normal file
View File

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

0
BIN/USERADD.S.txt Normal file
View File

0
BIN/USERDEL.S.txt Normal file
View File

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -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 : <free>
* 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

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 1000

View File

@ -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

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -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

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2osX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

View File

@ -1,5 +1,5 @@
PR#3
PREFIX /DATA/A2OSX
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6

4
_Make_SYS.txt Normal file
View File

@ -0,0 +1,4 @@
PREFIX /A2OSX.BUILD
NEW
BLOAD A
BSAVE A2OSX.SYSTEM,TSYS,A$2000,L$1FFA