NEW AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 .TF bin/gtest *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i .INB inc/kernel.i .INB inc/gfx.i *-------------------------------------- .DUMMY .OR ZPBIN ZS.START hDevGFX .BS 1 hFont .BS 1 hFontB .BS 1 bVBL .BS 1 xDir .BS 1 yDir .BS 1 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA #S.PS.F.EVENT S.PS.F .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data Segment Size .DA #64 Stack Size .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT L.DEVNAME.GFX .DA DEVNAME.GFX L.FONTFILE .DA FONTFILE L.FONTFILEB .DA FONTFILEB L.MARILYNFILE .DA MARILYNFILE L.LOGOFILE .DA LOGOFILE L.PALETTEFILE .DA PALETTEFILE L.CB.RECT .DA CB.RECT L.CB.RECT2 .DA CB.RECT2 L.CB.TEXTB .DA CB.TEXTB L.CB.TEXT .DA CB.TEXT L.CB.PIX .DA CB.PIX L.CB.LOGO .DA CB.LOGO L.CB.PALETTE .DA CB.PALETTE L.CB.Apple .DA CB.Apple L.BM.Apple .DA BM.Apple L.MESSAGEB .DA MESSAGEB L.MESSAGE .DA MESSAGE .DA 0 *-------------------------------------- CS.INIT clc CS.INIT.RTS rts *-------------------------------------- CS.RUN jsr GFX.Open bcs CS.INIT.RTS jsr LoadResources bcs CS.INIT.RTS >LDYA L.CB.RECT jsr GFX.Write.YA .1 >LDYA L.CB.RECT2 jsr GFX.Write.YA inc CB.RECT2+S.CB.COLOR lda CB.RECT2+S.CB.COLOR cmp #16 beq .3 lda CB.RECT2+S.CB.X1 clc adc #28 sta CB.RECT2+S.CB.X1 bcc .2 inc CB.RECT2+S.CB.X1+1 .2 lda CB.RECT2+S.CB.X2 clc adc #28 sta CB.RECT2+S.CB.X2 bcc .1 inc CB.RECT2+S.CB.X2+1 bra .1 .3 >LDYA L.CB.PIX jsr GFX.Write.YA >LDYA L.CB.PALETTE jsr GFX.Write.YA >LDYA L.BM.Apple >STYA CB.Apple+S.CB.SrcPtr >LDYA L.CB.Apple jsr GFX.Write.YA lda hFontB sta CB.TEXTB+S.CB.hFont >LDYA L.MESSAGEB >STYA CB.TEXTB+S.CB.TxtPtr >LDYA L.CB.TEXTB jsr GFX.Write.YA bcs .9 >LDYA L.CB.TEXTB jsr GFX.Write.YA lda hFont sta CB.TEXT+S.CB.hFont >LDYA L.MESSAGE >STYA CB.TEXT+S.CB.TxtPtr >LDYA L.CB.TEXT jsr GFX.Write.YA bcs .9 >LDYA L.CB.TEXT jsr GFX.Write.YA jsr CS.RUN.LOGO.SHOW lda #0 sec .9 CS.RUN.RTS rts *-------------------------------------- CS.RUN.LOGO.SHOW * lda #S.CB.CMD.GETRECTBUFSIZE * sta CB.LOGO+S.CB.CMD >LDYA L.CB.LOGO jsr GFX.Write.YA >SYSCALL NewStkObj bcs CS.RUN.RTS stx CB.LOGO+S.CB.DstPtr lda #S.CB.CMD.BITBLT sta CB.LOGO+S.CB.CMD .1 lda #S.CB.OP.SET+S.CB.OP.COLOR+S.CB.OP.SAVE sta CB.LOGO+S.CB.OP >LDYA L.CB.LOGO jsr GFX.Write.YA ldy #S.PS.hStdIn lda (pPS),y >SYSCALL FEOF bcs CS.RUN.RTS tay beq .80 .2 >SLEEP bit bVBL bpl .2 stz bVBL lda #S.CB.OP.RESTORE sta CB.LOGO+S.CB.OP >LDYA L.CB.LOGO jsr GFX.Write.YA bit xDir bmi .4 lda CB.LOGO+S.CB.X1 clc adc #4 tay lda CB.LOGO+S.CB.X1+1 adc #0 pha cpy #244 sbc /244 pla bcc .5 .3 lda xDir eor #$ff sta xDir bra .6 .4 lda CB.LOGO+S.CB.X1 sec sbc #4 tay lda CB.LOGO+S.CB.X1+1 sbc #0 bcc .3 .5 sty CB.LOGO+S.CB.X1 sta CB.LOGO+S.CB.X1+1 .6 lda CB.LOGO+S.CB.Y1 bit yDir bmi .8 inc sta CB.LOGO+S.CB.Y1 cmp #151 bne .1 .7 lda yDir eor #$ff sta yDir jmp .1 .8 sec sbc #1 sta CB.LOGO+S.CB.Y1 beq .7 jmp .1 .80 >SYSCALL GetChar lda CB.LOGO+S.CB.DstPtr >SYSCALL FreeStkObj rts *-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 sta bVBL .9 sec never discard TIME event rts *-------------------------------------- CS.QUIT lda hFont beq .1 >SYSCALL FreeStkObj .1 lda hFontB beq .2 >SYSCALL FreeStkObj .2 lda CB.PIX+S.CB.SrcPtr beq .3 >SYSCALL FreeStkObj .3 lda CB.LOGO+S.CB.SrcPtr beq .4 >SYSCALL FreeStkObj .4 lda CB.TEXTB+S.CB.SrcPtr beq .5 >SYSCALL FreeStkObj .5 lda CB.TEXT+S.CB.SrcPtr beq .6 >SYSCALL FreeStkObj .6 lda CB.PALETTE+S.CB.SrcPtr beq .7 >SYSCALL FreeStkObj .7 lda hDevGFX beq .8 >SYSCALL close .8 clc rts *-------------------------------------- LoadResources >LDYA L.FONTFILE >SYSCALL LoadStkObj bcs .99 stx hFont >LDYA L.FONTFILEB >SYSCALL LoadStkObj bcs .99 stx hFontB >LDYA L.MARILYNFILE >SYSCALL LoadStkObj .99 bcs .9 stx CB.PIX+S.CB.SrcPtr >LDYA L.LOGOFILE >SYSCALL LoadStkObj bcs .9 stx CB.LOGO+S.CB.SrcPtr >LDYA L.PALETTEFILE >SYSCALL LoadStkObj bcs .9 stx CB.PALETTE+S.CB.SrcPtr .9 rts *-------------------------------------- GFX.Open >PUSHW L.DEVNAME.GFX >PUSHBI 0 >SYSCALL Open bcs .9 sta hDevGFX .9 rts *-------------------------------------- GFX.Write.YA pha >PUSHB hDevGFX >PUSHBI IOCTL.WRITE pla >PUSHYA >SYSCALL IOCTL rts *-------------------------------------- CS.END DEVNAME.GFX .AZ "/dev/gfx" FONTFILE .AZ "${ROOT}sbin/sysx7" FONTFILEB .AZ "${ROOT}sbin/sysx7b" MARILYNFILE .AZ "${ROOT}root/bmp/MARILYN" *LOGOFILE .AZ "${ROOT}A2osX.logo" LOGOFILE .AZ "${ROOT}root/bmp/A2OSX.LOGO" PALETTEFILE .AZ "${ROOT}root/bmp/PALETTE" MESSAGEB .AZ " DHGR Driver & OSD 'Off-Screen Driver' Test (SYSX7B Font, Inverse) " MESSAGE .AZ " 1234567890 abcdefghijklmnopqrstuvwxyz { + - * / } (SYSX7 Font, Normal) " CB.RECT .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.M.C16 .DA #11 Color .DA 28 .DA 10 .DA 532 .DA 182 CB.RECT2 .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.M.C16 .DA #0 Color .DA 60 X1 .DA 150 Y1 .DA 88 X2 .DA 180 Y2 CB.Apple .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.COLOR .DA #S.CB.M.C16 .DA #0 .DA 20 X1 .DA 172 Y1 .DA 0 .DA 0 .DA 0 SrcX .DA 0 SrcY .DA 16 SrcW .DA 7 SrcH .BS 2 SrcPtr .DA 0 DstPtr CB.PIX .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.SET+S.CB.OP.COLOR .DA #S.CB.M.MONO .DA #0 .DA 56 X1 .DA 30 Y1 .DA 0 .DA 0 .DA 0 SrcX .DA 0 SrcY .DA 120 SrcW .DA 100 SrcH .BS 2 SrcPtr .DA 0 DstPtr CB.PALETTE .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.SET+S.CB.OP.COLOR .DA #S.CB.M.C16 .DA #0 .DA 200 X1 .DA 100 Y1 .DA 0 .DA 0 .DA 0 SrcX .DA 0 SrcY .DA 320 SrcW .DA 40 SrcH .BS 2 SrcPtr .DA 0 DstPtr CB.TEXTB .DA #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD .DA #S.CB.OP.SET+S.CB.OP.INVERSE .DA #S.CB.M.MONO .BS 1 hFONT .DA 7 X1 .DA 1 Y1 .DA 0 .DA 0 .DA 0 SrcX .DA 0 SrcY .DA 0 .DA 0 .DA 0 .BS 2 DstPtr .BS 2 TXTPTR CB.TEXT .DA #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD .DA #S.CB.OP.SET .DA #S.CB.M.MONO .BS 1 hFONT .DA 50 X1 .DA 184 Y1 .DA 0 .DA 0 .DA 0 SrcX .DA 0 SrcY .DA 0 .DA 0 .DA 0 .BS 2 DstPtr .BS 2 TXTPTR *-------------------------------------- BM.Apple .DA #S.BM.F.BBP4 .DA #2 RowBytes .DA 16 W .DA 7 H .DA BM.Apple.AND-BM.Apple .HS 0006 green (8) .HS 6006 green (8) .HS EEEE yellow (15) .HS CC0C orange (14) .HS 9909 magenta (10) .HS 8888 violet (11) .HS 1001 Dark blue (4) BM.Apple.AND .HS FFF0 .HS 0FF0 .HS 0000 .HS 00F0 .HS 00F0 .HS 0000 .HS 0FF0 *-------------------------------------- CB.LOGO .DA #S.CB.CMD.GETRECTBUFSIZE .DA #S.CB.OP.SET+S.CB.OP.COLOR+S.CB.OP.SAVE .DA #S.CB.M.C16 .DA #0 .DA 200 X1 .DA 50 Y1 .DA 200+319 X2 For GETRECTBUFSIZE .DA 50+39 Y2 For GETRECTBUFSIZE .DA 0 SrcX .DA 0 SrcY .DA 320 SrcW .DA 40 SrcH .BS 2 SrcPtr .DA 0 DstPtr *-------------------------------------- .DUMMY .OR 0 DS.START DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/gtest.s ASM