Mercurial > hg > Members > kono > nitros9-code
changeset 1740:7969f759a6a9
CO51 module by Phil Harvey-Smith
author | boisy |
---|---|
date | Fri, 07 Jan 2005 16:51:22 +0000 |
parents | fc04a0042413 |
children | 94aaf037f7ba |
files | level1/modules/co51.asm |
diffstat | 1 files changed, 818 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/modules/co51.asm Fri Jan 07 16:51:22 2005 +0000 @@ -0,0 +1,818 @@ +******************************************************************** +* drvr51 - Driver for The 51 column by 24 line video display +* +* $Id$ +* +* Edt/Rev YYYY/MM/DD Modified by +* Comment +* ------------------------------------------------------------------ +* 1 ????/??/?? +* Original Dragon distribution version +* +* 2003/09/22 Rodney Hamilton +* Recoded fcb arrays, added labels & some comments +* +* 2004/11/15 P.Harvey-Smith. +* Added code to turn off the drives on the Dragon Alpha. +* +* 2004/12/01 P.Harvey-Smith. +* Began converting drvr51 to co51, removed all keyboard +* related code, added symbolic defines for a lot of things. +* +* 2004/12/02 P.Harvey-Smith. +* Finished converting to c051 driver, moved all variable +* storage into ccio module (defined in cciodefs). +* + + + nam c051 + ttl co Driver for The 51 column by 24 line video display + +* Disassembled 02/07/06 21:17:23 by Disasm v1.6 (C) 1988 by RML + + ifp1 + use defsfile.dragon + use cciodefs + endc + +tylg set Systm+Objct +atrv set ReEnt+rev +rev set $00 +edition set 1 + + mod eom,name,tylg,atrv,start,size + +;V.51EscSeq rmb 1 +;V.51CtrlDispatch rmb 2 +;V.51ScrnA rmb 2 +;V.51XPos rmb 1 ; X position of cursor +;V.51YPos rmb 1 ; Y position of cursor +;V.5126 rmb 1 +;V.5130 rmb 1 +;V.5131 rmb 1 +;V.5132 rmb 1 +;V.5133 rmb 1 +;V.5134 rmb 1 +;V.5135 rmb 1 +;V.5136 rmb 1 + +;V.51ReverseFlag rmb 1 +;V.51UnderlineFlag rmb 1 +size equ . + + fcb UPDAT. + + +ScreenSize EQU $1800 ; Screen Size in Bytes + +name fcs /co51/ + fcb edition + +start lbra Init + lbra Write + lbra GetStat + lbra SetStat + lbra Term + +Init pshs y + ldy #$aa55 + puls y + pshs u,a + + ldd #ScreenSize+$100 ; Request a screenful of ram + $100 bytes + os9 F$SRqMem + bcs InitExit ; Error : exit + tfr u,d + ldu $01,s ; Restore saved u + tfr d,x + bita #$01 ; Check that memory block starts at even page + beq L0066 ; Yes base of screen = base of memory block + leax >$0100,x ; no Move to next page + bra L0068 +L0066 adda #$18 +L0068 stx V.51ScrnA,u + tfr d,u + ldd #$0100 + os9 F$SRtMem ; Return unneeded page to OS + ldu $01,s + lbsr DoHome + lbsr DoReverseOff + lbsr DoCLS + ldb V.COLoad,u + orb #ModCo51 ; set to CO51 found (?) +InitSaveExit + stb V.COLoad,u + clrb + +InitExit + puls pc,u,a + +InitFlag fcb $00 + +Term pshs y,x + pshs u ; save U + ldd #ScreenSize ; Graphics memory size + ldu V.51ScrnA,u ; get pointer to memory + os9 F$SRtMem ; return to system + puls u ; restore U + ldb V.COLoad,u + andb #~ModCo51 ; Set co51 unot loaded + bra InitSaveExit + +* Write +* Entry: A = char to write +* Y = path desc ptr + +Write + pshs y + ldy #$aa56 + puls y + +L012C ldb V.51EscSeq,u + bne L0165 + cmpa #$1B escape? + bne L013A + inc V.51EscSeq,u flag ESC seq + clrb +L0139 rts + +L013A cmpa #$20 + bcs DoCtrlChar ; Control charater ? + cmpa #$7F + bcc DoCtrlChar ; or upper bit set + bra DoNormalChar + +DoCtrlChar + leax >CtrlCharDispatch,pcr +L0148 tst ,x + bne L0150 +L014C clr V.51EscSeq,u + rts + +L0150 cmpa ,x+ + bne L0161 + ldd ,x + leax >CtrlCharDispatch,pcr + leax d,x + stx V.51CtrlDispatch,u + jmp ,x + +L0161 leax $02,x + bra L0148 + +L0165 inc V.51EscSeq,u + leax >EscCharDispatch,pcr + cmpb #$01 + beq L0148 + jmp [V.51CtrlDispatch,u] + +DoNormalChar + inc V.5132,u + bsr L01B3 + tst V.51UnderlineFlag,u + beq L0185 + lda #$F8 + leay <-$40,y + lbsr L0236 + +L0185 lda V.51XPos,u + inca + cmpa #$33 + bcs L01A2 + clr V.51XPos,u + lda V.51YPos,u + inca + cmpa #$18 + bcs L019D + lbsr SoScrollScreen + bra L01A5 +L019D sta V.51YPos,u + bra L01A5 + +L01A2 sta V.51XPos,u +L01A5 clr V.5133,u + ldd V.51XPos,u + std V.5130,u + dec V.5132,u + clrb + rts +L01B3 tfr a,b + subb #$20 + clra + leax >L06A0,pcr + lslb + rola + lslb + rola + leax d,x + ldb #$05 + lda V.51XPos,u + mul + pshs b + lsra + rorb + lsra + rorb + lsra + rorb + puls a + anda #$07 + pshs b + sta V.5126,u + tst V.5134,u + bne L01FF + tfr a,b + lda #$F8 + tstb + beq L01FA +L01E5 lsra + decb + bhi L01E5 + bne L01EE + rorb + bra L01FA +L01EE pshs b + ldb #$80 +L01F2 lsra + rorb + dec ,s + bne L01F2 + leas $01,s +L01FA coma + comb + std V.5135,u +L01FF ldy V.51ScrnA,u + lda V.51YPos,u + ldb ,s+ + leay d,y + lda #$04 + pshs a + inc V.5132,u +L0211 lda ,x + anda #$F0 + bsr L0236 + lda ,x+ + anda #$0F + bsr L0227 + dec ,s + bne L0211 + dec V.5132,u + clrb + puls pc,b + +L0227 ldb V.5126,u + subb #$04 + bhi L023B + beq L0250 +L0230 lsla + incb + bne L0230 + bra L0250 +L0236 ldb V.5126,u + beq L0250 +L023B lsra + decb + bhi L023B + bne L0244 + rorb + bra L0250 +L0244 pshs b + ldb #$80 +L0248 lsra + rorb + dec ,s + bne L0248 + leas $01,s +L0250 tst V.5134,u + bne L0273 + tst V.51ReverseFlag,u + beq L0262 + coma + comb + eora V.5135,u + eorb V.5136,u + +L0262 pshs b,a + ldd V.5135,u + anda ,y + andb $01,y + addd ,s++ +L026D std ,y + leay <$20,y + rts +L0273 eora ,y + eorb $01,y + bra L026D + +; +; $07 - BEL (ding!) +; + +DoBell + ldx #$FF20 + ldb #$64 +L027E lda ,x + eora #$C0 + sta ,x + lda #$19 +L0286 deca + nop + nop + bne L0286 + decb + bne L027E + lbra L014C +; +; $08 - BS (left arrow) +; +DoBackspace + dec V.51XPos,u + bpl L02A6 + lda #$32 + sta V.51XPos,u +; +; $1b44 - (cursor up) +; +DoCursorUp + dec V.51YPos,u + bpl L02A6 + clr V.51YPos,u + lbsr L035E +L02A6 lbsr L0484 + lbra L014C + +; +; $0a, $1b45 - LF, (cursor down) +; + +DoLineFeed + lda V.51YPos,u + inca + cmpa #$18 + bcs L02B9 + lbsr SoScrollScreen + bra L02BC +L02B9 sta V.51YPos,u +L02BC bra L02A6 + +; +; $0d - CR (return) +; + +DoCarrageReturn + clr V.51XPos,u + bra L02A6 + +; +; $0c - FF (clear screen) +; +DoCLS ldy V.51ScrnA,u + leay >$0080,y + lda #$18 + pshs a + inc V.5132,u +L02D2 bsr L0314 + dec ,s + bne L02D2 + leas $01,s + clra + clrb + sta V.5133,u + std V.5130,u + std V.51XPos,u + dec V.5132,u + ldx #$FF20 + lda $02,x + ora #$F0 + sta $02,x + ldx #$FFC0 + lda #$06 + ldb #$03 + bsr L0305 + lda V.51ScrnA,u + lsra + ldb #$07 + bsr L0305 + lbra L014C +L0305 lsra + bcc L030E + leax $01,x + sta ,x+ + bra L0310 +L030E sta ,x++ +L0310 decb + bne L0305 + rts +L0314 lda #$10 +L0316 pshs a + lda V.51ReverseFlag,u + tfr a,b +L031D std <-$80,y + std <-$60,y + std <-$40,y + std <-$20,y + std <$20,y + std <$40,y + std <$60,y + std ,y++ + dec ,s + bne L031D + leay >$00E0,y + puls pc,b + +SoScrollScreen + ldy V.51ScrnA,u + inc V.5132,u + pshs u + leau >$0100,y + lda #$10 + bsr L037C + puls u + dec V.5131,u + +L0354 leay >$0080,y + bsr L0314 + dec V.5132,u + rts + +L035E ldy V.51ScrnA,u + leay >$17F0,y + inc V.5132,u + pshs u + leau >-$0100,y + lda #$F0 + bsr L037C + leay ,u + puls u + inc V.5131,u + bra L0354 + +L037C ldb #$17 + pshs b +L0380 ldb #$10 + +L0382 ldx ,u + stx ,y + ldx $02,u + stx $02,y + ldx $04,u + stx $04,y + ldx $06,u + stx $06,y + ldx $08,u + stx $08,y + ldx $0A,u + stx $0A,y + ldx $0C,u + stx $0C,y + ldx $0E,u + stx $0E,y + leay a,y + leau a,u + decb + bne L0382 + dec ,s + bne L0380 + puls pc,b + +; +; $1b42 - clear to end of line +; + +DoClrEOL + inc V.5132,u + bsr L03BA + dec V.5132,u + lbra L014C +L03BA clr V.5133,u + ldb V.51XPos,u + pshs b + bitb #$07 + bne L03CB + lda #$05 + mul + bra L03F3 +L03CB lda #$01 + pshs a +L03CF lda #$20 + lbsr L01B3 + lda V.51XPos,u + inca + sta V.51XPos,u + cmpa #$33 + bcs L03E3 + leas $01,s + bra L040D +L03E3 dec ,s + bpl L03CF + lda V.51XPos,u + ldb #$05 + mul + bitb #$08 + bne L03CF + leas $01,s +L03F3 lsrb + lsrb + lsrb + ldy V.51ScrnA,u + lda V.51YPos,u + leay d,y + leay >$0080,y + lda #$20 + pshs b + suba ,s+ + lsra + lbsr L0316 +L040D puls a + sta V.51XPos,u + rts +; +; $1b4A - clear to end of screen +; +DoClearEOS + inc V.5132,u + bsr L03BA + lda #$17 + suba V.51YPos,u + bls L042A + pshs a +L0421 lbsr L0314 + dec ,s + bne L0421 + leas $01,s +L042A dec V.5132,u + lbra L014C + +; +;$0b - (cursor home) +; +DoHome + clr V.51XPos,u + clr V.51YPos,u + lbra L02A6 + +; +; $1b41xxyy - move cursor to col xx (0-50) row yy (0-23) +; +DoGotoXY + ldb V.51EscSeq,u + subb #$02 + bne L0442 + clrb + rts +L0442 decb + bne L0450 + cmpa #51 + bcs L044B + lda #50 +L044B sta V.51XPos,u +L044D clrb + rts +L0450 cmpa #24 + bcs L0456 + lda #23 +L0456 sta V.51YPos,u +L0459 lbra L02A6 + +; +; $1b43 - (cursor right) +; +DoCursorRight + inc V.51XPos,u + lda V.51XPos,u + cmpa #$33 + bcs L0459 + clr V.51XPos,u + lbra DoLineFeed +; +; $1b46 - reverse on +; +DoReverseOn + lda #$FF + coma +L046F sta V.51ReverseFlag,u + lbra L014C + +; +; $1b47 - reverse off +; +DoReverseOff + lda #$FF + bra L046F + +; +; $1b48 - underline on +; +DoUnderlineOn + lda #$FF +L047B sta V.51UnderlineFlag,u + lbra L014C + +; +; $1b49 - underline off +; +DoUnderlineOff + clra + bra L047B + +L0484 ldd V.51XPos,u + inc V.5132,u + tst V.5133,u + bne L0494 + std V.5130,u + bra L04B9 + +L0494 pshs b,a + ldd V.5130,u + inc V.5134,u + tstb + bmi L04AB + cmpb #$18 + bcc L04AB + std V.51XPos,u + lda #$7F + lbsr L01B3 + +L04AB puls b,a + std V.51XPos,u + std V.5130,u + clr V.5133,u + dec V.5134,u +L04B9 dec V.5132,u + clrb + rts + + +L04CA clrb + rts +GetStat + cmpa #$06 + beq L04CA + cmpa #$02 + bne SetStat + ldx $06,y + ldd V.51ScrnA,u + std $04,x + clrb + rts + +SetStat comb + ldb #E$UnkSvc + rts + + +* control characters dispatch table +CtrlCharDispatch + fcb $07 BEL ; (beep) + fdb DoBell-CtrlCharDispatch $FC0B + fcb $08 BS ; (left arrow) + fdb DoBackspace-CtrlCharDispatch ; $FC23 + fcb $0A LF ; (down arrow) + fdb DoLineFeed-CtrlCharDispatch ; $FC3E + fcb $0D CR ; (return) + fdb DoCarrageReturn-CtrlCharDispatch ;$FC50 + fcb $0C FF ; (clear screen) + fdb DoCLS-CtrlCharDispatch $FC55 + fcb $0B ; (cursor home) + fdb DoHome-CtrlCharDispatch $FDC2 + fcb $00 + +* escape sequences dispatch table +EscCharDispatch + fcb $41 ; cursor xy + fdb DoGotoXY-CtrlCharDispatch ; $FDCB + fcb $42 ; clear EOL + fdb DoClrEOL-CtrlCharDispatch ; $FD41 + fcb $43 ; cursor right + fdb DoCursorRight-CtrlCharDispatch ; $FDEE + fcb $44 ; cursor up + fdb DoCursorUp-CtrlCharDispatch ; $FC2D + fcb $45 ; cursor down + fdb DoLineFeed-CtrlCharDispatch ; $FC3E + fcb $46 ; reverse on + fdb DoReverseOn-CtrlCharDispatch ; $FDFE + fcb $47 ; reverse off + fdb DoReverseOff-CtrlCharDispatch ; $FE07 + fcb $48 ; underline on + fdb DoUnderlineOn-CtrlCharDispatch ; $FE0B + fcb $49 ; underline off + fdb DoUnderlineOff-CtrlCharDispatch ; $FE13 + fcb $4A ; clear EOS + fdb DoClearEOS-CtrlCharDispatch ; $FDA5 + fcb $00 + +L06A0 +* 4x8 bitmap table for characters $20-$7f +* each nibble represents a row of 4 dots +* chars 20-27 + fcb $00,$00,$00,$00 .... .@.. .@.@ .@@. ..@. @..@ .@.. .@.. + fcb $44,$40,$40,$00 .... .@.. .@.@ @@@@ .@@@ ...@ @.@. .@.. + fcb $55,$00,$00,$00 .... .@.. .... .@@. @... ..@. .@.. .... + fcb $6F,$6F,$60,$00 .... .... .... @@@@ .@@. .@.. @.@. .... + fcb $27,$86,$1E,$20 .... .@.. .... .@@. ...@ @... @@.@ .... + fcb $91,$24,$89,$00 .... .... .... .... @@@. @..@ .... .... + fcb $4A,$4A,$D0,$00 .... .... .... .... ..@. .... .... .... + fcb $44,$00,$00,$00 .... .... .... .... .... .... .... .... +* chars 29-2f + fcb $24,$44,$20,$00 ..@. .@.. @..@ .@.. .... .... .... .... + fcb $42,$22,$40,$00 .@.. ..@. .@@. .@.. .... .... .... ...@ + fcb $96,$F6,$90,$00 .@.. ..@. @@@@ @@@. .... @@@@ .... ..@. + fcb $44,$E4,$40,$00 .@.. ..@. .@@. .@.. ..@. .... .@@. .@.. + fcb $00,$02,$24,$00 ..@. .@.. @..@ .@.. ..@. .... .@@. @... + fcb $00,$F0,$00,$00 .... .... .... .... .@.. .... .... .... + fcb $00,$06,$60,$00 .... .... .... .... .... .... .... .... + fcb $01,$24,$80,$00 .... .... .... .... .... .... .... .... +* chars 30-37 + fcb $69,$BD,$60,$00 .@@. ..@. .@@. @@@. ..@. @@@@ .@@@ @@@@ + fcb $26,$22,$70,$00 @..@ .@@. @..@ ...@ .@@. @... @... ...@ + fcb $69,$2C,$F0,$00 @.@@ ..@. ..@. .@@. @.@. @@@. @@@. ..@. + fcb $E1,$61,$E0,$00 @@.@ ..@. @@.. ...@ @@@@ ...@ @..@ .@.. + fcb $26,$AF,$20,$00 .@@. .@@@ @@@@ @@@. ..@. @@@. .@@. .@.. + fcb $F8,$E1,$E0,$00 .... .... .... .... .... .... .... .... + fcb $78,$E9,$60,$00 .... .... .... .... .... .... .... .... + fcb $F1,$24,$40,$00 .... .... .... .... .... .... .... .... +* chars 38-3f + fcb $69,$69,$60,$00 .@@. .@@. .... .... ..@. .... .@.. .@@. + fcb $69,$71,$60,$00 @..@ @..@ .... .... .@.. @@@@ ..@. @..@ + fcb $00,$40,$40,$00 .@@. .@@@ .@.. ..@. @... .... ...@ ..@. + fcb $00,$20,$24,$00 @..@ ...@ .... .... .@.. @@@@ ..@. ..@. + fcb $24,$84,$20,$00 .@@. .@@. .@.. ..@. ..@. .... .@.. .... + fcb $0F,$0F,$00,$00 .... .... .... .@.. .... .... .... ..@. + fcb $42,$12,$40,$00 .... .... .... .... .... .... .... .... + fcb $69,$22,$02,$00 .... .... .... .... .... .... .... .... +* chars 40-47 + fcb $69,$BB,$87,$00 .@@. .@@. @@@. .@@@ @@@. @@@@ @@@@ .@@@ + fcb $69,$F9,$90,$00 @..@ @..@ @..@ @... @..@ @... @... @... + fcb $E9,$E9,$E0,$00 @.@@ @@@@ @@@. @... @..@ @@@. @@@. @.@@ + fcb $78,$88,$70,$00 @.@@ @..@ @..@ @... @..@ @... @... @..@ + fcb $E9,$99,$E0,$00 @... @..@ @@@. .@@@ @@@. @@@@ @... .@@@ + fcb $F8,$E8,$F0,$00 .@@@ .... .... .... .... .... .... .... + fcb $F8,$E8,$80,$00 .... .... .... .... .... .... .... .... + fcb $78,$B9,$70,$00 .... .... .... .... .... .... .... .... +* chars 48-4f + fcb $99,$F9,$90,$00 @..@ @@@. @@@@ @..@ @... @@@@ @..@ .@@. + fcb $E4,$44,$E0,$00 @..@ .@.. ..@. @.@. @... @@.@ @@.@ @..@ + fcb $F2,$2A,$40,$00 @@@@ .@.. ..@. @@.. @... @@.@ @.@@ @..@ + fcb $9A,$CA,$90,$00 @..@ .@.. @.@. @.@. @... @..@ @..@ @..@ + fcb $88,$88,$F0,$00 @..@ @@@. .@.. @..@ @@@@ @..@ @..@ .@@. + fcb $FD,$D9,$90,$00 .... .... .... .... .... .... .... .... + fcb $9D,$B9,$90,$00 .... .... .... .... .... .... .... .... + fcb $69,$99,$60,$00 .... .... .... .... .... .... .... .... +* chars 50-57 + fcb $E9,$E8,$80,$00 @@@. .@@. @@@. .@@@ @@@. @..@ @..@ @..@ + fcb $69,$9B,$70,$00 @..@ @..@ @..@ @... .@.. @..@ @..@ @..@ + fcb $E9,$EA,$90,$00 @@@. @..@ @@@. .@@. .@.. @..@ @..@ @@.@ + fcb $78,$61,$E0,$00 @... @.@@ @.@. ...@ .@.. @..@ .@@. @@.@ + fcb $E4,$44,$40,$00 @... .@@@ @..@ @@@. .@.. .@@. .@@. @@@@ + fcb $99,$99,$60,$00 .... .... .... .... .... .... .... .... + fcb $99,$96,$60,$00 .... .... .... .... .... .... .... .... + fcb $99,$DD,$F0,$00 .... .... .... .... .... .... .... .... +* chars 58-5f + fcb $99,$69,$90,$00 @..@ @..@ @@@@ @@@. .... .@@@ .@@. .... + fcb $99,$71,$E0,$00 @..@ @..@ ...@ @... @... ...@ @..@ .... + fcb $F1,$68,$F0,$00 .@@. .@@@ .@@. @... .@.. ...@ .... .... + fcb $E8,$88,$E0,$00 @..@ ...@ @... @... ..@. ...@ .... .... + fcb $08,$42,$10,$00 @..@ @@@. @@@@ @@@. ...@ .@@@ .... .... + fcb $71,$11,$70,$00 .... .... .... .... .... .... .... @@@@ + fcb $69,$00,$00,$00 .... .... .... .... .... .... .... .... + fcb $00,$00,$0F,$00 .... .... .... .... .... .... .... .... +* chars 60-67 + fcb $22,$00,$00,$00 ..@. .... @... .... ...@ .... ..@@ .... + fcb $07,$99,$70,$00 ..@. .@@@ @@@. .@@@ .@@@ .@@@ .@.. .@@. + fcb $8E,$99,$E0,$00 .... @..@ @..@ @... @..@ @.@. @@@@ @..@ + fcb $07,$88,$70,$00 .... @..@ @..@ @... @..@ @@.. .@.. @..@ + fcb $17,$99,$70,$00 .... .@@@ @@@. .@@@ .@@@ .@@@ .@.. .@@@ + fcb $07,$AC,$70,$00 .... .... .... .... .... .... .... ...@ + fcb $34,$F4,$40,$00 .... .... .... .... .... .... .... @@@. + fcb $06,$99,$71,$E0 .... .... .... .... .... .... .... .... +* chars 68-6f + fcb $8E,$99,$90,$00 @... .@.. ..@. @... .@.. .... .... .... + fcb $40,$44,$40,$00 @@@. .... .... @.@. .@.. .@@@ .@@@ .@@. + fcb $20,$22,$22,$C0 @..@ .@.. ..@. @@.. .@.. @@.@ @..@ @..@ + fcb $8A,$CA,$90,$00 @..@ .@.. ..@. @.@. .@.. @@.@ @..@ @..@ + fcb $44,$44,$40,$00 @..@ .@.. ..@. @..@ .@.. @..@ @..@ .@@. + fcb $0E,$DD,$90,$00 .... .... ..@. .... .... .... .... .... + fcb $0E,$99,$90,$00 .... .... @@.. .... .... .... .... .... + fcb $06,$99,$60,$00 .... .... .... .... .... .... .... .... +* chars 70-77 + fcb $0E,$99,$E8,$80 .... .... .... .... .@.. .... .... .... + fcb $07,$99,$71,$10 @@@. .@@@ .@@@ .@@@ @@@@ @..@ @..@ @..@ + fcb $07,$88,$80,$00 @..@ @..@ @... @@.. .@.. @..@ @..@ @@.@ + fcb $07,$C3,$E0,$00 @..@ @..@ @... ..@@ .@.. @..@ .@@. @@.@ + fcb $4F,$44,$30,$00 @@@. .@@@ @... @@@. ..@@ .@@@ .@@. .@@. + fcb $09,$99,$70,$00 @... ...@ .... .... .... .... .... .... + fcb $09,$96,$60,$00 @... ...@ .... .... .... .... .... .... + fcb $09,$DD,$60,$00 .... .... .... .... .... .... .... .... +* chars 78-7f + fcb $09,$66,$90,$00 .... .... .... ..@@ .@.. @@.. .... @@@@ + fcb $09,$99,$71,$E0 @..@ @..@ @@@@ .@.. .@.. ..@. .@.@ @@@@ + fcb $0F,$24,$F0,$00 .@@. @..@ ..@. @@.. .... ..@@ @.@. @@@@ + fcb $34,$C4,$30,$00 .@@. @..@ .@.. .@.. .@.. ..@. .... @@@@ + fcb $44,$04,$40,$00 @..@ .@@@ @@@@ ..@@ .@.. @@.. .... @@@@ + fcb $C2,$32,$C0,$00 .... ...@ .... .... .... .... .... @@@@ + fcb $05,$A0,$00,$00 .... @@@. .... .... .... .... .... @@@@ + fcb $FF,$FF,$FF,$F0 .... .... .... .... .... .... .... .... + + emod +eom equ * + end