diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 8e916513..cbb49f79 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index d34a4a3d..361dec3e 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -64,7 +64,14 @@ A2osX.CPUTYPE .EQ $BEE6 A2osX.CPUSPEED .EQ $BEE7 WORD, (->255.99 Mhz) A2osX.Z80SLOT .EQ $BEE9 -A2osX.Z80SPEED .EQ $BEEA WORD +A2osX.HWType .EQ $BEEA +A2osX.HWType.UNKNOWN .EQ 0 +A2osX.HWType.IIe .EQ 1 +A2osX.HWType.IIc .EQ 2 +A2osX.HWType.IIgs .EQ 3 +A2osX.HWSubT .EQ $BEEB +A2osX.HWSubT.Enh .EQ 1 +A2osX.HWSubT.LCCard .EQ 2 A2osX.TIMER16 .EQ $BEEC WORD A2osX.RANDOM16 .EQ $BEEE WORD diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 0ac4bc46..c8987618 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -10,6 +10,7 @@ Kernel.Init2 sei stx A2osX.SaveSX ldx #Kernel.ZP.S-1 + .1 lda Kernel.ZP,x sta CHARGET,x dex @@ -18,12 +19,12 @@ Kernel.Init2 sei sta CLRALTZP >LDYAI MSG.Init2 jsr PrintFYA + >LDYAI A2osX.MAIN >STYA ZPPtr1 >LDYAI CORE.Run >STYA ZPPtr2 >LDYAI A2osX.MAIN.S^$FFFF - jsr Kernel.Move >LDYAI A2osX.AUX @@ -34,13 +35,14 @@ Kernel.Init2 sei >STYA A4L Dst Address (AUX) sec Main To Aux jsr AuxMove + >LDYAI A2osX.GP >STYA ZPPtr1 >LDYAI A2osX.SYSCALL >STYA ZPPtr2 >LDYAI A2osX.GP.S^$FFFF - jsr Kernel.Move + >LDYAI A2osX.GPX >STYA A1L Src Start Address (MAIN) >LDYAI A2osX.D1 @@ -59,8 +61,8 @@ Kernel.Init2 sei >LDYAI $D000 >STYA ZPPtr2 >LDYAI A2osX.D2.S^$FFFF - jsr Kernel.Move + bit RRAMWRAMBNK1 bit RRAMWRAMBNK1 @@ -69,18 +71,19 @@ Kernel.Init2 sei >LDYAI $D000 >STYA ZPPtr2 >LDYAI A2osX.D1.S^$FFFF - jsr Kernel.Move + >LDYAI A2osX.E0 >STYA ZPPtr1 >LDYAI $E000 >STYA ZPPtr2 >LDYAI A2osX.E0.S^$FFFF - jsr Kernel.Move + bit RROMBNK1 sta CLRALTZP cli + jsr KConfigLoad lda A2osX.HZ pha @@ -139,13 +142,18 @@ Kernel.Init3 sta SETALTZP iny #S.PS.hStdErr sta (pPs),y *-------------------------------------- -Kernel.Init3C >LDYAI MSG.Init3 - >SYSCALL2 puts +Kernel.Init3C >PUSHBI 0 + >LDYAI MSG.Init3 + >SYSCALL2 printf + jsr HW.Detect + jsr CPU.Init.6502 jsr CPU.Init.Z80 + >DEBUG + jsr DevMgrInit jsr IrqMgrInit @@ -358,6 +366,64 @@ SysScrInit.TTYPtrs sta FD.TTY+S.FD.DEV.BUFPTR+1 rts *-------------------------------------- +* http://www.1000bit.it/support/manuali/apple/technotes/misc/tn.misc.02.html +* https://mirrors.apple2.org.za/apple.cabi.net/FAQs.and.INFO/A2.TECH.NOTES.ETC/A2.CLASSIC.TNTS/a2misc007(1).htm +*-------------------------------------- +HW.Detect >PUSHBI 0 + >LDYAI MSG.HW + >SYSCALL2 printf + + bit RROMBNK1 + + stz A2osX.HWType + stz A2osX.HWSubT + + sec + jsr $FE1F IIgs ? + bcs .2 + + lda #A2osX.HWType.IIgs + sta A2osX.HWType + + cpy #2 + bcs .1 + + iny +.1 sty A2osX.HWSubT + bra .8 + +.2 lda $FBC0 + beq .4 //c + + ldx #A2osX.HWType.IIe + stx A2osX.HWType + cmp #$EA + beq .8 //e OLD ROMs + + inc A2osX.HWSubT //e Enh ROMs + lda $FBDD + cmp #2 + bne .8 + + inc A2osX.HWSubT //e LC card + bra .8 + +.4 lda #A2osX.HWType.IIc + sta A2osX.HWType + lda $FBBF + sta A2osX.HWSubT + +.8 bit RRAMWRAMBNK1 + bit RRAMWRAMBNK1 + + >PUSHB A2osX.HWSubT + >PUSHB A2osX.HWType + >PUSHBI 2 + >LDYAI MSG.HW.TypeSubT + >SYSCALL2 printf + + rts +*-------------------------------------- CPU.Init.6502 >PUSHBI 0 >LDYAI MSG.CPU >SYSCALL2 printf @@ -370,20 +436,23 @@ CPU.Init.6502 >PUSHBI 0 lda MSG.CPUTYPE+1,x >SYSCALL2 puts - lda MACHID - and #MACHID.T - cmp #MACHID.T.IIc - bne .10 - - jmp CPU.Init.Z80 -.10 >PUSHBI 0 + >PUSHBI 0 >LDYAI MSG.CPU.SPEED >SYSCALL2 printf stz A2osX.RANDOM16 stz A2osX.RANDOM16+1 + php sei + + lda MACHID + and #MACHID.T + cmp #MACHID.T.IIc + bne .1 + + + .1 bit VBL bpl .2 @@ -402,12 +471,22 @@ CPU.Init.6502 >PUSHBI 0 bit VBL (4) bpl .3 (2*) bmi .6 + .5 nop (2) nop (2) nop (2) bit VBL (4) bpl .3 (2*) -.6 plp + +.6 lda MACHID + and #MACHID.T + cmp #MACHID.T.IIc + bne .60 + + + + +.60 plp stz A2osX.CPUSPEED .7 sec @@ -655,6 +734,7 @@ DevMgrInit.AddBDev.RTS *-------------------------------------- IrqMgrInit >LDYAI MSG.IRQ >SYSCALL2 puts + php sei >LDYA $FFFE @@ -671,6 +751,11 @@ IrqMgrInit >LDYAI MSG.IRQ sta IRQ.INTNUM plp + + lda A2osX.HWType + cmp #A2osX.HWType.IIgs + beq .80 + jsr IrqMgrInit.TClock bcs .1 lda #"C" @@ -697,7 +782,7 @@ IrqMgrInit >LDYAI MSG.IRQ .8 jsr IrqMgrInit.HZ2Tick lda #"P" - sta IRQ.Mode +.80 sta IRQ.Mode >LDYAI MSG.IRQ.POLL >SYSCALL2 puts clc @@ -984,7 +1069,8 @@ MSG.KCREAD.KO .AZ "\nError While Reading Kernel Config File, Using Default.\n" MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n" *-------------------------------------- SYSSCREEN.TOP .AZ "A2osX 0.93 Console" -MSG.Init3 .AZ "A2osX[Stage3]:Init *** Press Ctrl-R for ROOT Mode ***" +MSG.Init3 .AS "A2osX[Stage3]:Init" + .AZ "\r\n*** Press Ctrl-R for ROOT Mode ***\r\n" MSG.DEV .AZ "Device Manager..." MSG.BLKDEV .AZ " Adding Device: /DEV/%s, Type: %s\r\n" MSG.BLKDEV.TBL .DA MSG.BLKDEV.RAM @@ -1011,6 +1097,8 @@ MSG.ETCINIT .AZ "Executing %s..." MSG.StartupErr .AZ "Failed : [$%h]\r\n" MSG.Init3.OK .AZ "OK\r\nA2osX[Stage3]:Complete.\r\n" *-------------------------------------- +MSG.HW .AZ "Checking Hardware..." +MSG.HW.TypeSubT .AZ "Type=%h,SubT=%h\r\n" MSG.CPU .AZ "Checking CPU..." MSG.CPUTYPE .DA MSG.6502 .DA MSG.65C02 diff --git a/SYS/KM.APPLETALK.S.txt b/SYS/KM.APPLETALK.S.txt index 3a85d517..be1be7c6 100644 --- a/SYS/KM.APPLETALK.S.txt +++ b/SYS/KM.APPLETALK.S.txt @@ -4,7 +4,7 @@ AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 - .TF SYS/ATK/KM.APPLETALK + .TF SYS/KM/KM.APPLETALK *-------------------------------------- .INB INC/MACROS.I .INB INC/IO.I @@ -108,7 +108,7 @@ AT.INIT >LDYAI MSG.INIT GO.WSCARD jmp $ffff SELF MODIFIED GO.OLDMLI jmp $ffff SELF MODIFIED *-------------------------------------- - .INB USR/SRC/X.PRINTF.S + .INB USR/SRC/SHARED/X.PRINTF.S *-------------------------------------- MSG.INIT .AZ "AppleTalk Driver For A2osX\n" MSG.FAILED .AZ "AppleTalk Workstation Card Failed Power Up Diagnostics : EC=%h.\n" diff --git a/SYS/KM.RAMWORKS.S.txt b/SYS/KM.RAMWORKS.S.txt index 49299d99..7f0e8a8d 100644 --- a/SYS/KM.RAMWORKS.S.txt +++ b/SYS/KM.RAMWORKS.S.txt @@ -3,7 +3,7 @@ NEW .LIST OFF .OP 65C02 .OR $2000 - .TF SYS/KM.RAMWORKS + .TF SYS/KM/KM.RAMWORKS *-------------------------------------- .INB INC/MACROS.I .INB INC/IO.I @@ -561,10 +561,12 @@ 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 diff --git a/SYS/KM.VSDRIVE.S.txt b/SYS/KM.VSDRIVE.S.txt index bcfe33ea..d969f016 100644 --- a/SYS/KM.VSDRIVE.S.txt +++ b/SYS/KM.VSDRIVE.S.txt @@ -4,7 +4,7 @@ AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 - .TF SYS/KM.VSDRIVE + .TF SYS/KM/KM.VSDRIVE *-------------------------------------- .INB INC/MACROS.I .INB INC/IO.I @@ -265,7 +265,7 @@ VSDRIVE.Install ldx #PATCH.SIZE clc rts *-------------------------------------- - .INB USR/SRC/X.PRINTF.S + .INB USR/SRC/SHARED/X.PRINTF.S *-------------------------------------- DEVSIG.Offset .HS 05070B0C DEVSIG.Value .HS 38180131