From 2192ead073a3c861f0e92a16872bc01bc317c2b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 23 Mar 2015 08:28:03 +0100 Subject: [PATCH] MOUSE.DRV working,DHGR.DRV color mode with bugs --- A2OSX.BUILD.HDV | Bin 864256 -> 864256 bytes A2osX.STARTUP.txt | 1 + DRV/CONSOLE.DRV.S.txt | 21 +++- DRV/DHGR.DRV.S.txt | 228 ++++++++++++++++++++++++++---------------- DRV/MOUSE.DRV.S.txt | 182 +++++++++++++++++++++++++++------ INC/A2osX.I.txt | 12 ++- INC/LIBCRYPT.I.txt | 29 ++++++ INC/LIBGFX.I.txt | 13 +++ LIB/LIBGFX.S.txt | 41 ++++++++ SBIN/GUI.S.txt | 114 +++++++++++++++++++++ SYS/KERNEL.S.DEV.txt | 28 +----- SYS/KERNEL.S.ENV.txt | 22 ++++ SYS/KERNEL.S.SCR.txt | 100 +++++++++--------- SYS/KERNEL.S.txt | 26 +---- 14 files changed, 596 insertions(+), 221 deletions(-) create mode 100644 INC/LIBCRYPT.I.txt create mode 100644 INC/LIBGFX.I.txt create mode 100644 LIB/LIBGFX.S.txt create mode 100644 SBIN/GUI.S.txt diff --git a/A2OSX.BUILD.HDV b/A2OSX.BUILD.HDV index ce9b7e05720dd69cec7a51311e2db7c1b53d3939..bc3b69b392c13f9efc921b3a66c39dd01d4c1653 100644 GIT binary patch delta 33934 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 delta 8338 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 SYS.ScreenSelectA clc rts @@ -298,7 +301,11 @@ SetCharAtXY pha .4 sta CLRPAGE2 rts *-------------------------------------- -GetCharAtXY sta SET80STORE +GetCharAtXY lda RDPAGE2 + pha + lda RD80STORE + pha + sta SET80STORE txa lsr @@ -314,7 +321,19 @@ GetCharAtXY sta SET80STORE sta ZPBASL1+1 lda (ZPBASL1) + + plx + bmi .3 + sta CLR80STORE + +.3 plx + bpl .4 + + sta SETPAGE2 rts + +.4 sta CLRPAGE2 + rts *-------------------------------------- CS.END DEVNAME >PSTRING "CON" diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 2b0f6818..86ecc845 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -46,8 +46,7 @@ L.DEVINFO .DA DEVINFO .DA CS.END-CS.START Code Length To Relocate .DA DS.END-DS.START Data Segment to Allocate *-------------------------------------- -OPEN - lda #S.DEV.F.GFX +OPEN lda #S.DEV.F.GFX sta (pDevContext) ldy #S.DEV.NAME @@ -60,10 +59,68 @@ OPEN iny bne .1 + .8 lda A2osX.SCREENS ora #A2osX.SCREENS.G sta A2osX.SCREENS + lda #A2osX.SCREENS.G + >SYSCALL SYS.ScreenSelectA + + sta SET80STORE + ldx #192 + +.81 dex + + lda BASEL,x + sta ZPBASE + lda BASEH,x + sta ZPBASE+1 + + lda #$D5 + + ldy #39 + sta SETPAGE2 +.82 sta (ZPBASE),y + dey + bpl .82 + + lda #$AA + + ldy #39 + sta CLRPAGE2 +.83 sta (ZPBASE),y + dey + bpl .83 + + dex + + lda BASEL,x + sta ZPBASE + lda BASEH,x + sta ZPBASE+1 + + lda #$2A + + ldy #39 + sta SETPAGE2 +.84 sta (ZPBASE),y + dey + bpl .84 + + lda #$55 + + ldy #39 + sta CLRPAGE2 +.85 sta (ZPBASE),y + dey + bpl .85 + + txa + bne .81 + + >DEBUG + clc rts *-------------------------------------- @@ -87,9 +144,9 @@ GETINFO >LDYA L.DEVINFO * PULLB = X.HI * PULLB = Y * PULLB = Mode -* 00000000=mono -* 00000001=xor (mono on 1 bit) -* 10000000=color +* 00000001=mono +* 00000010=16 colors +* 1000000=xor (mono on 1 bit) * PULLB = Color (if not xor) *-------------------------------------- SETPIXEL >PULLA X.LO @@ -99,18 +156,15 @@ SETPIXEL >PULLA X.LO bcs .1 lsr bcs .2 if 512 < x - lda DIV7.0,x - tay + ldy DIV7.0,x lda MOD7.0,x bra .3 -.1 lda DIV7.256,x - tay +.1 ldy DIV7.256,x lda MOD7.256,x bra .3 -.2 lda DIV7.512,x - tay +.2 ldy DIV7.512,x lda MOD7.512,x .3 pha save MOD,y=DIV @@ -123,15 +177,29 @@ SETPIXEL >PULLA X.LO sta ZPBASE+1 sta SET80STORE and prepare for page switching - + sta SETHIRES plx get back MOD in x >PULLA Pull Mode - bmi SETPIXEL.COLOR + and #$FF + bpl SETPIXEL.SOLID + +SETPIXEL.XOR tya + lsr + tay + bcs .1 odd=main ram + sta SETPAGE2 + bra .2 +.1 sta CLRPAGE2 +.2 lda (ZPBASE),y + eor Mono.Masks,x + sta (ZPBASE),y + rts *-------------------------------------- -* X=MOD,Y=DIV +* A=Mode,X=MOD,Y=DIV *-------------------------------------- -SETPIXEL.MONO pha +SETPIXEL.SOLID dec + bne SETPIXEL.COLOR tya lsr tay @@ -139,29 +207,21 @@ SETPIXEL.MONO pha sta SETPAGE2 bra .2 .1 sta CLRPAGE2 -.2 pla - lsr CS=xor - bcs SETPIXEL.MONOX - - >PULLA get COLOR + +.2 >PULLA get COLOR lsr - bcs SETPIXEL.MONOW + bcs .3 set white pixel lda (ZPBASE),y - and Mono.NMasks,x + and Mono.NMasks,x includes And $7F for mono sta (ZPBASE),y rts -SETPIXEL.MONOW lda (ZPBASE),y - and #$7F switch back ths byte to mono +.3 lda (ZPBASE),y + and #$7F switch back this byte to mono ora Mono.Masks,x sta (ZPBASE),y rts - -SETPIXEL.MONOX lda (ZPBASE),y - eor Mono.Masks,x - sta (ZPBASE),y - rts *-------------------------------------- * X=MOD,Y=DIV *-------------------------------------- @@ -245,8 +305,7 @@ FILLREC BITBLT rts *-------------------------------------- -* PRIVATE -*-------------------------------------- +CS.END DIV7.0 .HS 0000000000000001010101010101 .HS 0202020202020203030303030303 .HS 0404040404040405050505050505 @@ -383,71 +442,71 @@ BASEH .HS 20.24.28.2C.30.34.38.3C .HS 23.27.2B.2F.33.37.3B.3F .HS 23.27.2B.2F.33.37.3B.3F *-------------------------------------- -Mono.NMasks .DA %01111110 - .DA %01111101 - .DA %01111011 - .DA %01110111 - .DA %01101111 - .DA %01011111 - .DA %00111111 +Mono.NMasks .DA #%01111110 + .DA #%01111101 + .DA #%01111011 + .DA #%01110111 + .DA #%01101111 + .DA #%01011111 + .DA #%00111111 *-------------------------------------- -Mono.Masks .DA %00000001 - .DA %00000010 - .DA %00000100 - .DA %00001000 - .DA %00010000 - .DA %00100000 - .DA %01000000 +Mono.Masks .DA #%00000001 + .DA #%00000010 + .DA #%00000100 + .DA #%00001000 + .DA #%00010000 + .DA #%00100000 + .DA #%01000000 *-------------------------------------- * bits to "and" to reset color of pixel (0 means nothing to do) *-------------------------------------- -Color.NMasks .DA %01110000.00000000.00000000.00000000 - .DA %00001111.01111110.00000000.00000000 - .DA %00000000.01100001.00000000.00000000 - .DA %00000000.00011111.01111100.00000000 - .DA %00000000.00000000.01000011.00000000 - .DA %00000000.00000000.00111111.01111000 - .DA %00000000.00000000.00000000.00000111 +Color.NMasks .DA #%01110000,#%00000000,#%00000000,#%00000000 + .DA #%00001111,#%01111110,#%00000000,#%00000000 + .DA #%00000000,#%01100001,#%00000000,#%00000000 + .DA #%00000000,#%00011111,#%01111100,#%00000000 + .DA #%00000000,#%00000000,#%01000011,#%00000000 + .DA #%00000000,#%00000000,#%00111111,#%01111000 + .DA #%00000000,#%00000000,#%00000000,#%00000111 *-------------------------------------- * bits to "and" to Get color of pixel (0 means nothing to do) * 4 bytes * 7 mods *-------------------------------------- -Color.Masks .DA %00001111.00000000.00000000.00000000 (nothing to do) - .DA %01110000.00000001.00000000.00000000 asl0,asl0,rol1,asl0,rol1,asl0,rol1 - .DA %00000000.00011110.00000000.00000000 lsr1 - .DA %00000000.01100000.00000011.00000000 asl1,asl1,rol2,asl1,rol2 - .DA %00000000.00000000.00111100.00000000 lsr2,lsr2 - .DA %00000000.00000000.01000000.00000111 asl2,asl2,rol3 - .DA %00000000.00000000.00000000.01111000 lsr3,lsr3,lsr3 +Color.Masks .DA #%00001111,#%00000000,#%00000000,#%00000000 (nothing to do) + .DA #%01110000,#%00000001,#%00000000,#%00000000 asl0,asl0,rol1,asl0,rol1,asl0,rol1 + .DA #%00000000,#%00011110,#%00000000,#%00000000 lsr1 + .DA #%00000000,#%01100000,#%00000011,#%00000000 asl1,asl1,rol2,asl1,rol2 + .DA #%00000000,#%00000000,#%00111100,#%00000000 lsr2,lsr2 + .DA #%00000000,#%00000000,#%01000000,#%00000111 asl2,asl2,rol3 + .DA #%00000000,#%00000000,#%00000000,#%01111000 lsr3,lsr3,lsr3 *-------------------------------------- -Color.Enable .DA %10001111.00000000.00000000.00000000 - .DA %11110000.00000001.00000000.00000000 - .DA %00000000.10011110.00000000.00000000 - .DA %00000000.11100000.00000011.00000000 - .DA %00000000.00000000.10111100.00000000 - .DA %00000000.00000000.11000000.00000111 - .DA %00000000.00000000.00000000.11111000 +Color.Enable .DA #%10001111,#%00000000,#%00000000,#%00000000 + .DA #%11110000,#%00000001,#%00000000,#%00000000 + .DA #%00000000,#%10011110,#%00000000,#%00000000 + .DA #%00000000,#%11100000,#%00000011,#%00000000 + .DA #%00000000,#%00000000,#%10111100,#%00000000 + .DA #%00000000,#%00000000,#%11000000,#%00000111 + .DA #%00000000,#%00000000,#%00000000,#%11111000 *-------------------------------------- * bits to "ora" to set color of pixel (including "color bit set " for byte hosting bit0) * 4 bytes * 16 Colors * pixel masks c1110000.c3322221.c5444433.c6666555 *-------------------------------------- -Color.Pixels .DA %00000000.00000000.00000000.00000000 0000,Black (color bit disable) - .DA %10010001.10100010.11000100.10001000 0001,Magenta - .DA %10100010.11000100.10001000.10010001 0010,Brown - .DA %10110011.11100110.11001100.10011001 0011,Orange - .DA %11000100.10001000.10010001.10100010 0100,Dark Green - .DA %11010101.10101010.11010101.10101010 0101,Grey1 - .DA %11100110.11001100.10011001.10110011 0110,Green - .DA %11110111.11101110.11011101.10111011 0111,Yellow - .DA %10001000.10010001.10100010.11000100 1000,Dark Blue - .DA %10011001.10110011.11100110.11001100 1001,Violet - .DA %10101010.11010101.10101010.11010101 1010,Grey2 - .DA %10111011.11110111.11101111.11011101 1011,Pink - .DA %11001100.10011001.10110011.11100110 1100,Medium Blue - .DA %11011101.10111011.11110111.11101110 1101,Light Blue - .DA %11101110.11011101.10111011.11110111 1110,Aqua - .DA %01111111.01111111.01111111.01111111 1111,White (color bit disable) +Color.Pixels .DA #%00000000,#%00000000,#%00000000,#%00000000 (color bit disable) + .DA #%10010001,#%10100010,#%11000100,#%10001000 + .DA #%10100010,#%11000100,#%10001000,#%10010001 + .DA #%10110011,#%11100110,#%11001100,#%10011001 + .DA #%11000100,#%10001000,#%10010001,#%10100010 + .DA #%11010101,#%10101010,#%11010101,#%10101010 + .DA #%11100110,#%11001100,#%10011001,#%10110011 + .DA #%11110111,#%11101110,#%11011101,#%10111011 + .DA #%10001000,#%10010001,#%10100010,#%11000100 + .DA #%10011001,#%10110011,#%11100110,#%11001100 + .DA #%10101010,#%11010101,#%10101010,#%11010101 + .DA #%10111011,#%11110111,#%11101111,#%11011101 + .DA #%11001100,#%10011001,#%10110011,#%11100110 + .DA #%11011101,#%10111011,#%11110111,#%11101110 + .DA #%11101110,#%11011101,#%10111011,#%11110111 + .DA #%01111111,#%01111111,#%01111111,#%01111111 (color bit disable) *Black 00 00 00 00 0000 *Magenta 08 11 22 44 0001 @@ -465,15 +524,12 @@ Color.Pixels .DA %00000000.00000000.00000000.00000000 0000,Black (color bit disa *Light Blue 3B 77 6E 5D 1101 *Aqua 77 6E 5D 3B 1110 *White 7F 7F 7F 7F 1111 - - *-------------------------------------- -CS.END DEVNAME >PSTRING "GFX" *-------------------------------------- DS.START -*-------------------------------------- DEVINFO .DA #S.DEV.F.GFX type of DEVINFO STRUCT +DEVINFO.MODES .DA #%10000011 XOR,16 & B/W DEVINFO.W .DA 560 X.SIZE DEVINFO.H .DA 192 Y.SIZE DS.END diff --git a/DRV/MOUSE.DRV.S.txt b/DRV/MOUSE.DRV.S.txt index 9d83bbf8..11c1b508 100644 --- a/DRV/MOUSE.DRV.S.txt +++ b/DRV/MOUSE.DRV.S.txt @@ -9,11 +9,19 @@ AUTO 6 .TF DRV/MOUSE.DRV *-------------------------------------- .INB INC/MACROS.I + .INB INC/IO.I .INB INC/A2OSX.I *-------------------------------------- ZPGoMouse .EQ ZPDRV ZPTmpPtr1 .EQ ZPDRV+2 *-------------------------------------- +EVENT.MOUSEUP .EQ %00000001 +EVENT.MOUSEDOWN .EQ %00000010 +EVENT.MOUSEMOVE .EQ %00000100 +EVENT.MOUSEDRAG .EQ %00001000 +EVENT.MOUSECLK .EQ %00010000 +EVENT.MOUSEDCLK .EQ %00100000 +*-------------------------------------- SETMOUSE .EQ $12 Sets mouse mode SERVEMOUSE .EQ $13 Services mouse interrupt READMOUSE .EQ $14 Reads mouse position @@ -22,10 +30,18 @@ POSMOUSE .EQ $16 Sets mouse position to a user-defined pos CLAMPMOUSE .EQ $17 Sets mouse bounds in a window HOMEMOUSE .EQ $18 Sets mouse to upper-left corner of clamp win INITMOUSE .EQ $19 Resets mouse clamps to default values,sets mouse position to 0,0 -XCLAMPLO .EQ $0478 low byte of low clamp. -XCLAMPHI .EQ $04F8 low byte of high clamp. -YCLAMPLO .EQ $0578 high byte of low clamp. -YCLAMPHI .EQ $05F8 high byte of high clamp. +LOCLAMPLO .EQ $0478 low byte of low clamp. +HICLAMPLO .EQ $04F8 low byte of high clamp. +LOCLAMPHI .EQ $0578 high byte of low clamp. +HICLAMPHI .EQ $05F8 high byte of high clamp. +MOUSEXLOx .EQ $0478 +MOUSEYLOx .EQ $04F8 +MOUSEXHIx .EQ $0578 +MOUSEYHIx .EQ $05F8 +MOUSESTSx .EQ $0778 +MOUSESTSx.DOWN .EQ %10000000 +MOUSESTSx.LDOWN .EQ %01000000 +MOUSESTSx.MOVED .EQ %00100000 *-------------------------------------- * Main DRV entry point * input : @@ -58,19 +74,23 @@ OPEN stz ZPTmpPtr1 .2 ldy DEVSIG.Offset,x lda (ZPTmpPtr1),y cmp DEVSIG.Value,x - beq .3 + bne .3 + dex + bpl .2 + bra .10 - inc ZPTmpPtr1+1 no match, try next slot.... +.3 inc ZPTmpPtr1+1 no match, try next slot.... lda ZPTmpPtr1+1 cmp #$C8 bne .1 - beq .99 Not Found in any slot, exiting -.3 dex - bpl .2 - - lda ZPTmpPtr1+1 + lda #DEVMGR.ERRNOHW Not Found in any slot, exiting + sec + rts + +.10 lda ZPTmpPtr1+1 and #$0F + sta DEVSLOT0n pha ora #$30 sta DEVNAME+4 @@ -86,13 +106,22 @@ OPEN stz ZPTmpPtr1 ldx #0 ldy #S.DEV.NAME -.7 lda DEVNAME,x +.4 lda DEVNAME,x sta (pDevContext),y cpx DEVNAME - beq .8 + beq .5 inx iny - bne .7 + bne .4 + +.5 bit RROMBNK2 Renable ROM to allow MOUSE II firmware + + php to read IIe ROM ID bytes + sei + + lda RD80STORE + pha + sta CLR80STORE lda #1 Enable, Polling mode ldy #SETMOUSE @@ -100,41 +129,131 @@ OPEN stz ZPTmpPtr1 ldy #INITMOUSE Reset jsr GOMOUSE - -* lda #0 set X -* ldy #CLAMPMOUSE -* jsr GOMOUSE -* lda #1 set Y -* ldy #CLAMPMOUSE -* jsr GOMOUSE + stz LOCLAMPLO + stz LOCLAMPHI + lda #559 + sta HICLAMPLO + lda /559 + sta HICLAMPHI -.8 lda #S.DEV.F.MOUSE+S.DEV.F.EVENT + lda #0 set X + ldy #CLAMPMOUSE + jsr GOMOUSE + + stz LOCLAMPLO + stz LOCLAMPHI + lda #191 + sta HICLAMPLO + lda /191 + sta HICLAMPHI + + lda #1 set Y + ldy #CLAMPMOUSE + jsr GOMOUSE + + ldy #HOMEMOUSE + jsr GOMOUSE + + pla + bpl .6 + sta SET80STORE + +.6 plp + + lda #S.DEV.F.MOUSE+S.DEV.F.EVENT sta (pDevContext) clc rts - -.99 lda #DEVMGR.ERRNOHW - sec - rts *-------------------------------------- GETEVENT >PULLW pEvent - lda #0 - sec + + php + sei + + lda RD80STORE + pha + sta CLR80STORE + + ldy #READMOUSE + jsr GOMOUSE + + ldx DEVSLOT0n + ldy #S.EVT.DATALO + + lda MOUSESTSx,x + and #MOUSESTSx.DOWN+MOUSESTSx.LDOWN + beq .3 no button state change:up & previously up + cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN + beq .3 no button state change:down & previously down + + asl if CS, down & previoulsy up + bcc .1 + + lda #EVENT.MOUSEUP + bra .2 + +.1 lda #EVENT.MOUSEDOWN + +.2 sta (pEvent),y + +.3 lda MOUSESTSx,x + and #MOUSESTSx.MOVED + beq .4 + + lda (pEvent),y + ora #EVENT.MOUSEMOVE + sta (pEvent),y + + ldy #S.EVT.DATAW1 + lda MOUSEXLOx,x + sta (pEvent),y + iny + lda MOUSEXHIx,x + sta (pEvent),y + iny + lda MOUSEYLOx,x + sta (pEvent),y + iny + lda MOUSEYHIx,x + sta (pEvent),y + +.4 pla + bpl .5 + sta SET80STORE + +.5 plp + ldy #S.EVT.DATALO + lda (pEvent),y + beq .9 + + lda #S.EVT.F.MOUSE + sta (pEvent) + clc + rts + +.9 sec A=0 : no event rts *-------------------------------------- OUT clc rts *-------------------------------------- -CLOSE clc +CLOSE php + sei + lda #0 Disable + ldy #SETMOUSE + jsr GOMOUSE + plp + clc rts *-------------------------------------- GOMOUSE pha stz ZPGoMouse - lda DEVSLOTCn - sta ZPGoMouse+1 + ldx DEVSLOTCn + stx ZPGoMouse+1 lda (ZPGoMouse),y sta ZPGoMouse + ldy DEVSLOTn0 pla jmp (ZPGoMouse) *-------------------------------------- @@ -143,6 +262,7 @@ DEVSIG.Offset .HS 05070B0CFB DEVSIG.Value .HS 38180120D6 DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset DEVNAME >PSTRING "MOU0" +DEVSLOT0n .BS 1 DEVSLOTCn .BS 1 DEVSLOTn0 .BS 1 *-------------------------------------- diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index e8e2cbfa..f68eae16 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -83,6 +83,7 @@ SYS.GetDevTable .EQ $74 SYS.GetDevInfoA .EQ $76 SYS.DevOutA .EQ $78 +SYS.GetDevByNameYA .EQ $7A *-------------------------------------- SYS.GetEvent .EQ $80 SYS.DestroyEvent .EQ $82 @@ -105,6 +106,8 @@ SYS.SetNetCfg .EQ $B2 SYS.GetNetCfgA .EQ $B4 SYS.ClrNetCfgA .EQ $B6 *-------------------------------------- +SYS.ScreenSelectA .EQ $C0 +*-------------------------------------- A2osX.SaveSM .EQ $100 Main A2osX.SaveSX .EQ $101 Aux *-------------------------------------- @@ -178,8 +181,6 @@ S.MEM.F.NOMOV .EQ %00100000 S.MEM.F.ALIGN .EQ %00010000 S.MEM.F.SPARE .EQ %00001000 S.MEM.F.AUX .EQ %00000100 -S.MEM.F.LC1 .EQ %00000010 -S.MEM.F.LC2 .EQ %00000001 S.MEM.REFCNT .EQ 1 S.MEM.PTR .EQ 2 S.MEM.LEN .EQ 4 @@ -212,7 +213,7 @@ S.DEV.hOWNERPS .EQ 11 * S.DEV.SIZE .EQ 12 *-------------------------------------- -* Driver Function Indexes +* Generic Driver Functions *-------------------------------------- DEVMGR.OPEN .EQ 0 DEVMGR.GETEVENT .EQ 2 @@ -220,6 +221,11 @@ DEVMGR.OUT .EQ 4 DEVMGR.CLOSE .EQ 6 DEVMGR.GETINFO .EQ 8 *-------------------------------------- +* 'GFX' Class Driver Functions +*-------------------------------------- +DEVMGR.GFX.SETPIXEL .EQ 10 +DEVMGR.GFX.GETPIXEL .EQ 12 +*-------------------------------------- DEVMGR.ERRNICL .EQ $EB Invalid Command Line DEVMGR.ERRNOHW .EQ $EC No Hardware DEVMGR.ERRDNF .EQ $ED Device Not Found Error diff --git a/INC/LIBCRYPT.I.txt b/INC/LIBCRYPT.I.txt new file mode 100644 index 00000000..425e1c93 --- /dev/null +++ b/INC/LIBCRYPT.I.txt @@ -0,0 +1,29 @@ +PR#3 +PREFIX /A2OSX.BUILD +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 +*-------------------------------------- +LIBCRYPT.MD5PStrA .EQ 4 +LIBCRYPT.MD5Init .EQ 6 +LIBCRYPT.MD5Update .EQ 8 +LIBCRYPT.MD5FinalizeA .EQ 10 +*-------------------------------------- +* S.MD5 STRUCT +*-------------------------------------- +S.MD5.ABCD0 .EQ 0 +S.MD5.A0 .EQ 0 +S.MD5.B0 .EQ 4 +S.MD5.C0 .EQ 8 +S.MD5.D0 .EQ 12 +S.MD5.BITCOUNT .EQ 16 +S.MD5.EXTRABIT .EQ 24 +S.MD5.FINALIZED .EQ 25 +* +S.MD5.SIZE .EQ 26 +*-------------------------------------- +MAN +SAVE INC/LIBCRYPT.I + diff --git a/INC/LIBGFX.I.txt b/INC/LIBGFX.I.txt new file mode 100644 index 00000000..266dca32 --- /dev/null +++ b/INC/LIBGFX.I.txt @@ -0,0 +1,13 @@ +PR#3 +PREFIX /A2OSX.BUILD +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 +*-------------------------------------- +LIBGFX.test .EQ 4 +*-------------------------------------- +MAN +SAVE INC/LIBGFX.I + diff --git a/LIB/LIBGFX.S.txt b/LIB/LIBGFX.S.txt new file mode 100644 index 00000000..67eee76c --- /dev/null +++ b/LIB/LIBGFX.S.txt @@ -0,0 +1,41 @@ +PR#3 +PREFIX /A2OSX.BUILD +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF LIB/LIBGFX.O +*-------------------------------------- + .INB INC/MACROS.I + .INB INC/A2OSX.I + .INB INC/LIBGFX.I +*-------------------------------------- +* Main entry point +* input : +* X = Function +*-------------------------------------- +* Code signature and relocation table +*-------------------------------------- +* CLD $D8 +* JMP (*,x) $7C +* #JMPTABLE +* /JMPTABLE +*-------------------------------------- +CS.START cld + jmp (.1,x) +.1 .DA LIB.LOAD + .DA LIB.UNLOAD + +*-------------------------------------- + .DA 0 + .DA CS.END-CS.START + .DA 0 +*-------------------------------------- +LIB.LOAD +LIB.UNLOAD clc + rts +MAN +SAVE LIB/LIBGFX.S +ASM diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt new file mode 100644 index 00000000..eccb925e --- /dev/null +++ b/SBIN/GUI.S.txt @@ -0,0 +1,114 @@ +PR#3 +PREFIX /A2OSX.BUILD +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF SBIN/GUI +*-------------------------------------- + .INB INC/MACROS.I + .INB INC/A2OSX.I +*-------------------------------------- +* Main entry point +*-------------------------------------- +* Code signature and INIT table +*-------------------------------------- +* CLD $D8 +* JMP (*,x) $7C +* #JMPTABLE +* /JMPTABLE +*-------------------------------------- +CS.START cld + jmp (.1,x) +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.DEVNAME.GFX .DA DEVNAME.GFX + .DA 0 + .DA CS.END-CS.START Code Length To Relocate + .DA DS.END-DS.START Data Segment to Allocate +*-------------------------------------- +CS.INIT >LDYA L.DEVNAME.GFX + >SYSCALL SYS.GetDevByNameYA + bcc .10 + rts + +.10 sta hDevGFX + >SYSCALL SYS.GetDevByIDA + >STYA ZPQuickPtr1 + + ldy #S.DEV.hCS + lda (ZPQuickPtr1),y + >SYSCALL SYS.GetMemPtrA + + >STYA DevJMP + + stz C + stz X + stz X+1 + +.1 stz Y + >DEBUG +.2 + >PUSHBI C Color + >PUSHBI 2 Mode:1=B/W,2=16 colors,...,128=XOR + >PUSHB Y + >PUSHW X + jsr SetPixel + + inc Y + lda Y + cmp #192 + bne .2 + + inc C + lda C + cmp #16 + bne .3 + stz C + +.3 lda X + clc + adc #4 + sta X + bcc .4 + inc X+1 + +.4 lda X + sec + sbc #560 + lda X+1 + sbc /560 + bcc .1 + + clc +.9 rts +*-------------------------------------- +CS.RUN clc + rts +*-------------------------------------- +CS.DOEVENT clc + rts +*-------------------------------------- +CS.QUIT clc + rts +*-------------------------------------- +SetPixel ldx #DEVMGR.GFX.SETPIXEL + jmp (DevJMP) +*-------------------------------------- +CS.END +DEVNAME.GFX >PSTRING "GFX" +DEVNAME.MOU0 >PSTRING "MOU0" +DS.START +hDevGFX .BS 1 +DevJMP .BS 2 +X .BS 2 +Y .BS 1 +C .BS 1 +DS.END +MAN +SAVE SBIN/GUI.S +ASM diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 154e0d55..3df7e7c7 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -49,7 +49,7 @@ S.GetDevByIDA sta ZPQuickPtr1 >STYA ZPQuickPtr2 .1 lda (ZPQuickPtr2) get S.DEV.F - bpl .3 In use ? + bpl .2 In use ? ldy #S.DEV.ID lda (ZPQuickPtr2),y cmp ZPQuickPtr1 @@ -80,6 +80,7 @@ S.GetDevByIDA sta ZPQuickPtr1 * set DEVMGR.DEVPTR to devslot *-------------------------------------- S.GetDevByNameA jsr S.GetMemPtrA +S.GetDevByNameYA >STYA ZPQuickPtr1 >LDYAI DEVMGR.TABLE >STYA DEVMGR.DEVPTR @@ -126,7 +127,6 @@ S.GetDevByNameA jsr S.GetMemPtrA * X = LASTID *-------------------------------------- S.GetDevTable >LDYAI DEVMGR.TABLE - ldx DEVMGR.LASTID rts *-------------------------------------- @@ -142,28 +142,7 @@ S.DevOutA ldx #DEVMGR.OUT S.GetDevInfoA ldx #DEVMGR.GETINFO jmp S.DevCallFunc *-------------------------------------- -* PRIVATE -*-------------------------------------- -* S.DevOpenA -* IN : -* A = hDev -* OUT CC = OK, CS = ERROR -*-------------------------------------- -S.DevOpenA ldx #DEVMGR.OPEN - bra S.DevCallFunc -*-------------------------------------- -* S.DevGetEventA -* IN : -* A = hDev -* OUT CC = OK, CS = ERROR -*-------------------------------------- -S.DevGetEventA ldx #DEVMGR.GETEVENT - bra S.DevCallFunc -*-------------------------------------- -* S.DevCloseA -*-------------------------------------- -S.DevCloseA ldx #DEVMGR.CLOSE - bra S.DevCallFunc +* PRIVATE *-------------------------------------- S.DevCallFunc jsr S.GetDevByIDA bcs .9 @@ -180,7 +159,6 @@ S.DevCallFunc jsr S.GetDevByIDA * IN : none * OUT : A = DevID * set DEVMGR.DEVPTR to freeslot -* init (DEVMGR.DEVPTR),S.DEV.ID with Dev.ID *-------------------------------------- S.CreateDevice >LDYAI DEVMGR.TABLE >STYA DEVMGR.DEVPTR diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 919c2a65..69df3806 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -315,6 +315,28 @@ S.SetEnvVar plp *-------------------------------------- * PRIVATE *-------------------------------------- +S.SetSysEnvA >PUSHA Push Cmd Line + >PUSHBI $3D Push SEP='=' + >PUSHBI 0 Push Token IDX + jsr S.PStrGetTkn + bcs * + phx save X,A for discard + pha + pha + txa + >PUSHA + pla + >PUSHA + ldy #S.PS.hENV + lda TSKMGR.TABLE,y + >PUSHA + jsr S.SetEnvVarH + + pla disard NAME + jsr S.FreeMemA + pla discard VALUE + jmp S.FreeMemA +*-------------------------------------- * S.SelectEnvH * In: * PULLB = hENV diff --git a/SYS/KERNEL.S.SCR.txt b/SYS/KERNEL.S.SCR.txt index 62f8023a..19593730 100644 --- a/SYS/KERNEL.S.SCR.txt +++ b/SYS/KERNEL.S.SCR.txt @@ -47,6 +47,54 @@ S.SysScrInit stz SYSSCR.CPULOADI clc rts *-------------------------------------- +* S.ScreenSelectA +* IN : +* A = Screen to display +*-------------------------------------- +S.ScreenSelectA and A2osX.SCREENS Screen is available ? + beq .9 ...not setup up + + cmp #A2osX.SCREENS.S + bne .1 + sta SETTEXT + sta SET80DISP + sta CLR80STORE + sta SETPAGE2 + sta SETALTCHAR + lda #A2osX.SCREENS.S + bra .8 + +.1 cmp #A2osX.SCREENS.C + bne .2 + sta SETTEXT + sta SET80DISP + sta CLRPAGE2 + sta SET80STORE + sta SETALTCHAR + lda #A2osX.SCREENS.C + bra .8 + +.2 cmp #A2osX.SCREENS.G + bne .9 + + sta CLRTEXT + sta CLRMIXED + sta SETHIRES + sta CLRPAGE2 + + sta SET80DISP + sta SETIOUDIS + sta SETDHIRES + sta CLRDHIRES + sta SETDHIRES + sta CLRDHIRES + sta SETDHIRES + + lda #A2osX.SCREENS.G + +.8 sta A2osX.ACTIVESCRN +.9 rts +*-------------------------------------- S.SysScrCPULoad ldx SYSSCR.CPULOADI lda SYSSCR.CPULOADC,x sta SYSSCR.BASL0+38 @@ -268,58 +316,6 @@ S.SysScrSetCharAtYX ply rts *-------------------------------------- -* S.ScreenSelectA -* IN : -* A = Screen to display -*-------------------------------------- -S.ScreenSelectA and A2osX.SCREENS Screen is available ? - beq .9 ...not setup up - - cmp #A2osX.SCREENS.S - bne .1 - sta SETTEXT - sta SET80DISP - sta CLR80STORE - sta SETPAGE2 - sta SETALTCHAR - lda #A2osX.SCREENS.S - bra .8 - -.1 cmp #A2osX.SCREENS.C - bne .2 - sta SETTEXT - sta SET80DISP - sta SET80STORE - sta CLRPAGE2 - sta SETALTCHAR - lda #A2osX.SCREENS.C - bra .8 - -.2 cmp #A2osX.SCREENS.G - bne .9 - sta CLRTEXT - sta CLRMIXED - sta SETHIRES - sta CLRPAGE2 - - sta SETIOUDIS - - sta CLR80DISP - sta SETDHIRES - sta CLRDHIRES - sta SETDHIRES - sta CLRDHIRES - - sta SET80DISP - sta SETDHIRES - sta CLRDHIRES - sta SETDHIRES - - lda #A2osX.SCREENS.G - -.8 sta A2osX.ACTIVESCRN -.9 rts -*-------------------------------------- SYSSCR.CH .BS 1 SYSSCR.CV .BS 1 SYSSCR.CPULOADI .BS 1 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 4c5d8801..0827f794 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -94,7 +94,7 @@ KERNEL.SYSCALL jmp (.1,x) .DA S.GetDevInfoA .DA S.DevOutA - .DA 0 + .DA S.GetDevByNameYA .DA 0 .DA 0 *-------------------------------------- @@ -137,6 +137,8 @@ KERNEL.SYSCALL jmp (.1,x) .DA 0 .DA 0 .DA 0 +*-------------------------------------- + .DA S.ScreenSelectA $C0 *-------------------------------------- S.Kernel jsr S.KernelInit jsr S.KernelRun @@ -411,28 +413,6 @@ S.ExecCmdLine jmp (.1,x) .DA S.LoadDrvA VCPU!!!! .DA S.CreateProcessA VCPU!!!! *-------------------------------------- -S.SetSysEnvA >PUSHA Push Cmd Line - >PUSHBI $3D Push SEP='=' - >PUSHBI 0 Push Token IDX - jsr S.PStrGetTkn - bcs * - phx save X,A for discard - pha - pha - txa - >PUSHA - pla - >PUSHA - ldy #S.PS.hENV - lda TSKMGR.TABLE,y - >PUSHA - jsr S.SetEnvVarH - - pla disard NAME - jsr S.FreeMemA - pla discard VALUE - jmp S.FreeMemA -*-------------------------------------- S.PrintSysEnv ldy #S.PS.hENV lda TSKMGR.TABLE,y Get PS #0 ENV jsr S.GetMemPtrA