diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b486f763..da927861 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 35fceead..56e7a375 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/DRV/DHGR.DRV.S.BLT.txt b/DRV/DHGR.DRV.S.BLT.txt index beb09eed..ad30b8b6 100644 --- a/DRV/DHGR.DRV.S.BLT.txt +++ b/DRV/DHGR.DRV.S.BLT.txt @@ -106,12 +106,78 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr adc BLT.DX+1 jsr LBUF.SetBounds2YA +.5 lda BLT.BMBitOfs + sta BLT.BMBitOfsL +.6 jsr BLT.Get7BMBits + clc rts *-------------------------------------- -BLT.Get7BMBits +* BMD/BMM bits : +* 76543210 76543210 +* ^ +* BMBitOfsL (0->7) +* LBUF DATA/MASK Bits +* c6543210 c6543210 +* ^ +* SCRBitOfsL (0->6) *-------------------------------------- +BLT.Get7BMBits ldx BLT.BMBitOfsL + + lda + + sta ZPBMShiftPtr+1 + + lda (ZPBMDataPtr) + and ShiftML,x Get only needed bits + + tay + + lda (ZPBMShiftPtr),y + sta GBYTE + + + inc ZPBMDataPtr + bne .1 + inc ZPBMDataPtr+1 + +.1 lda (ZPBMDataPtr) + and ShiftMH,x + tay + + lda (ZPBMShiftPtr),y + ora GBYTE we have the 7 0xxxxxxx DATA bits + + + ldx + tay + lda Shift.LO + + + + rts +*-------------------------------------- +ShiftML .DA #01111111 + .DA #11111110 + .DA #11111100 + .DA #11111000 + .DA #11110000 + .DA #11100000 + .DA #11000000 + .DA #10000000 + +ShiftMH .DA #00000000 + .DA #00000000 + .DA #00000001 + .DA #00000011 + .DA #00000111 + .DA #00001111 + .DA #00011111 + .DA #00111111 + +*-------------------------------------- + MAN SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.RECT LOAD /A2OSX.SRC/DRV/DHGR.DRV.S diff --git a/DRV/DHGR.DRV.S.PIX.txt b/DRV/DHGR.DRV.S.PIX.txt index d312540b..45c07923 100644 --- a/DRV/DHGR.DRV.S.PIX.txt +++ b/DRV/DHGR.DRV.S.PIX.txt @@ -51,6 +51,7 @@ SETPIXEL.MONO.BLACK SETPIXEL.MONO.WHITE lda (ZPBasePtr) + and #$7f Clear Color Bit ora Mono.Masks,x sta (ZPBasePtr) @@ -58,6 +59,7 @@ SETPIXEL.MONO.WHITE SETPIXEL.MONO.XOR lda (ZPBasePtr) + and #$7f Clear Color Bit eor Mono.Masks,x sta (ZPBasePtr) diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index b959312d..9dfa59ef 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -10,7 +10,9 @@ AUTO 6 *-------------------------------------- .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I + .INB /A2OSX.BUILD/INC/PRODOS.I .INB /A2OSX.BUILD/INC/IO.I + .INB /A2OSX.BUILD/INC/GFX.EVE.I .INB /A2OSX.BUILD/INC/LIBGUI.I *-------------------------------------- ZPCmdPtr .EQ ZPDRV @@ -19,6 +21,8 @@ ZPPalettePtr .EQ ZPDRV+4 ZPBMDataPtr .EQ ZPDRV+6 ZPBMMaskPtr .EQ ZPDRV+8 ZPBMSavePtr .EQ ZPDRV+10 +ZPBMShiftPtr .EQ ZPDRV+12 +ZPSCRShiftPtr .EQ ZPDRV+14 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -35,16 +39,78 @@ CS.START cld * Relocation Table *-------------------------------------- L.MSG.DETECT .DA MSG.DETECT +L.MSG.DETECT.IIC .DA MSG.DETECT.IIC +L.MSG.DETECT.EVE .DA MSG.DETECT.EVE +L.MSG.DETECT.80C .DA MSG.DETECT.80C .DA 0 End Of Reloc Table *-------------------------------------- Dev.Detect >LDYA L.MSG.DETECT >SYSCALL PrintF.YA + lda MACHID + and #MACHID.T + cmp #MACHID.T.IIc + bne .1 + + lda #$80 + sta DSTAT+S.DSTAT.ST $80=//c + + >LDYA L.MSG.DETECT.IIC + + bra .3 + +.1 php + sei + + sta SET80STORE + + sta SETPAGE2 + ldx $400 Save Aux $400 + + lda #$ff Make sure !=1 for comparing later + sta $400 + + sta CLRPAGE2 + ldy $400 Save Main $400 + + lda #$01 Select Foreground/BKgrnd Colors + sta TXT16.ON Activate 16 color mode + + sta $400 Store something in Main + + sta SETPAGE2 + + eor $400 read back AUX, If EVE, must be F/BG colors + bne .2 + + dec + sta DSTAT+S.DSTAT.ST 0=80C,$ff=EVE + +.2 stx $400 Set back Aux $400 + sta CLRPAGE2 + sty $400 Set back Main $400 + + sta CLR80STORE + + plp + + + >LDYA L.MSG.DETECT.EVE + + bit DSTAT+S.DSTAT.ST + bmi .3 + + >LDYA L.MSG.DETECT.80C + +.3 >SYSCALL PrintF.YA clc rts *-------------------------------------- CS.END MSG.DETECT >CSTR "Apple IIe/IIc DHGR Driver.\r\n" +MSG.DETECT.IIC >CSTR "Apple //c detected, Assuming 'Le Chat Mauve' Mode.\r\n" +MSG.DETECT.EVE >CSTR "'Le Chat Mauve EVE' Board Detected.\r\n" +MSG.DETECT.80C >CSTR "No Specific H/W Found, Assuming 80c Mode.\r\n" *-------------------------------------- * Device Header (16 Bytes) *-------------------------------------- @@ -91,23 +157,22 @@ STATUS >LDYA L.DSTAT *-------------------------------------- OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A *-------------------------------------- -CONTROL sta CLRTEXT - sta CLRMIXED - sta SETHIRES - sta CLR80STORE - sta CLRPAGE2 - sta SETIOUDIS - sta SETDHIRES +CONTROL ldy #0 -* sta CLR80DISP -* sta SETDHIRES -* sta CLRDHIRES -* sta SET80DISP -* sta SETDHIRES -* sta CLRDHIRES -* sta SETDHIRES + bit DSTAT+S.DSTAT.ST + bmi .1 //c,EVE mode + + ldy #CONTROL.LCM-CONTROL.80C + +.1 ldx CONTROL.SWTCHES,y + bmi .8 Ending $ff + + sta $C000,x - lda #3 + iny + bra .1 + +.8 lda #3 sta A2osX.ASCREEN clc @@ -208,6 +273,77 @@ DRV.CS.END *-------------------------------------- .INB /A2OSX.SRC/DRV/DHGR.DRV.T *-------------------------------------- +CONTROL.SWTCHES +* sta CLRTEXT +* sta CLRMIXED +* sta SETHIRES +* sta CLR80STORE +* sta CLRPAGE2 +* sta SETIOUDIS + +CONTROL.80C +* sta CLRMIXED STA $CO52 ;Full Screen +* sta SETHIRES STA $C057 ;HIRES +* sta CLRTEXT STA $C050 ;Graphics +* sta CLR80DISP STA $C00C ;80 Columns OFF +* sta SETDHIRES STA $C05E ;AN3 OFF +* sta CLRDHIRES STA $C05F ;AN3 ON +* sta SETDHIRES STA $C05E ;AN3 OFF +* sta CLRDHIRES STA $C05F ;AN3 ON +* sta SET80DISP STA $C00D ;80 Columns ON +* sta SETDHIRES STA $C05E ;AN3 OFF +* sta CLRDHIRES STA $C05F ;AN3 ON +* sta SETDHIRES STA $C05E ;AN3 OFF + + .DA #CLRTEXT + .DA #CLRMIXED + .DA #SETHIRES + .DA #CLR80STORE + .DA #CLRPAGE2 + .DA #SETIOUDIS + + .DA #CLR80DISP + .DA #SETDHIRES + .DA #CLRDHIRES + .DA #SETDHIRES + .DA #CLRDHIRES + .DA #SET80DISP + .DA #SETDHIRES + .DA #CLRDHIRES + .DA #SETDHIRES + .DA #$FF + +CONTROL.LCM +* sta CLRTEXT +* sta CLRPAGE2 +* sta CLRMIXED +* sta SETHIRES +* sta CLRAN2 +* sta CLR80DISP +* sta SETDHIRES +* sta CLRDHIRES +* sta SET80DISP +* sta SETDHIRES +* sta CLRDHIRES +* sta SETDHIRES + + .DA #CLRTEXT + .DA #CLRMIXED + .DA #SETHIRES + .DA #CLR80STORE + .DA #CLRPAGE2 + .DA #SETIOUDIS + + .DA #CLRAN2 + .DA #CLR80DISP + .DA #SETDHIRES + .DA #CLRDHIRES + .DA #SET80DISP + .DA #SETDHIRES + .DA #CLRDHIRES + .DA #SETDHIRES + .DA #$ff +*-------------------------------------- CB.CmdLen .DA S.CB.Y1+1 SETPIXEL .DA S.CB.Y1+1 GETPIXEL .DA S.CB.X2+1 HLINE @@ -229,7 +365,9 @@ LBUF.MASK .BS 80 LBUF.DATA .BS 80 *-------------------------------------- BLT.BMBitOfs .BS 1 +BLT.BMBitOfsL .BS 1 BLT.SCRBitOfs .BS 1 +BLT.SCRBitOfsL .BS 1 BLT.DX .BS 2 *-------------------------------------- GBYTE .BS 1 diff --git a/INC/GFX.EVE.I.txt b/INC/GFX.EVE.I.txt new file mode 100644 index 00000000..b7a88068 --- /dev/null +++ b/INC/GFX.EVE.I.txt @@ -0,0 +1,28 @@ +PR#3 +PREFIX /A2OSX.BUILD +NEW +INC 1 +AUTO 6 + .LIST OFF +*-------------------------------------- +* Le Chat Mauve : EVE +*-------------------------------------- +ENHRCPREG.OFF .EQ $C0B0 W +ENHRCPREG.ON .EQ $C0B1 W +HR1.OFF .EQ $C0B2 W +HR1.ON .EQ $C0B3 W +HR2.OFF .EQ $C0B4 W +HR2.ON .EQ $C0B5 W +HR3.OFF .EQ $C0B6 W +HR3.ON .EQ $C0B7 W +TXT16.OFF .EQ $C0B8 W +TXT16.ON .EQ $C0B9 W +TXTGREEN.OFF .EQ $C0BA W +TXTGREEN.ON .EQ $C0BB W +LOCKCPREG.OFF .EQ $C0BC W +LOCKCPREG.ON .EQ $C0BD W +LOCKRES.OFF .EQ $C0BE W +LOCKRES.ON .EQ $C0BF W +*-------------------------------------- +MAN +SAVE /A2OSX.BUILD/INC/GFX.EVE.I diff --git a/INC/IO.I.txt b/INC/IO.I.txt index 71810f40..a6c27540 100644 --- a/INC/IO.I.txt +++ b/INC/IO.I.txt @@ -59,12 +59,13 @@ SETHIRES .EQ $C057 W *CLRAN0 .EQ $C059 W, Set annunciator-0 output to 1 *SETAN1 .EQ $C05A W, Set annunciator-1 output to 0 *CLRAN1 .EQ $C05B W, Set annunciator-1 output to 1 -*ENBVBLIIC .EQ $C05B W, Enable VBL switch (IIc) *SETAN2 .EQ $C05C W, Set annunciator-2 output to 0 -*CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1 +CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1 *SETAN3 .EQ $C05E W, Set annunciator-3 output to 0 -SETDHIRES .EQ $C05E W, if IOUDIS Set, turn on double-hires *CLRAN3 .EQ $C05F W, Set annunciator-3 output to 1 + +*ENBVBLIIC .EQ $C05B W, Enable VBL switch (IIc) +SETDHIRES .EQ $C05E W, if IOUDIS Set, turn on double-hires CLRDHIRES .EQ $C05F W, if IOUDIS Set, turn off double-hires *TAPEIN .EQ $C060 R diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 01f75697..92481b3c 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -113,7 +113,8 @@ K.STACKTOP .EQ $0F20 down to $0f00 Z80STACK .EQ $0FFF (0FFFFh) Down to $0F20 Z80JMP .EQ $1000 (00000h) Up To $10FF *-------------------------------------- -* free $1100->15FF = $500 +* free $1100->$15FF = $500 Main +* free $0C00->$17FF = $C00 Aux *-------------------------------------- Dev.Table .EQ $1600 K.DEV.MAX*S.DEV=32*16=512b *-------------------------------------- diff --git a/INC/NET.8900A.I.txt b/INC/NIC.8900A.I.txt similarity index 96% rename from INC/NET.8900A.I.txt rename to INC/NIC.8900A.I.txt index 944bc69e..6baa59f8 100644 --- a/INC/NET.8900A.I.txt +++ b/INC/NIC.8900A.I.txt @@ -98,4 +98,4 @@ PP.RxFrame .EQ $0404 PP.TxFrame .EQ $0A00 *-------------------------------------- MAN -SAVE /A2OSX.BUILD/INC/NET.8900A.I +SAVE /A2OSX.BUILD/INC/NIC.8900A.I diff --git a/INC/NET.91C96.I.txt b/INC/NIC.91C96.I.txt similarity index 94% rename from INC/NET.91C96.I.txt rename to INC/NIC.91C96.I.txt index 096b11a2..efb05b13 100644 --- a/INC/NET.91C96.I.txt +++ b/INC/NIC.91C96.I.txt @@ -63,4 +63,4 @@ L91C96.3.RCV .EQ $C08C L91C96.BSR .EQ $C08E *-------------------------------------- MAN -SAVE /A2OSX.BUILD/INC/NET.91C96.I +SAVE /A2OSX.BUILD/INC/NIC.91C96.I diff --git a/INC/NET.W5100.I.txt b/INC/NIC.W5100.I.txt similarity index 94% rename from INC/NET.W5100.I.txt rename to INC/NIC.W5100.I.txt index bafd61f1..73c618c1 100644 --- a/INC/NET.W5100.I.txt +++ b/INC/NIC.W5100.I.txt @@ -77,4 +77,4 @@ RX.BASE .EQ $6000 RXTX.MASK .EQ $1FFF *-------------------------------------- MAN -SAVE /A2OSX.BUILD/INC/NET.W5100.I +SAVE /A2OSX.BUILD/INC/NIC.W5100.I