*= $CED4 CED4 D8 GETBYTE CLD CED5 18 CLC CED6 A9 00 LDA #$00 CED8 8D DD CF STA YTEMP2+1 CEDB 8D DB CF STA YTEMP+1 ;INT(X/2) INT(Y/2) CEDE AD D3 CF LDA XPOS ;XPOSITION CEE1 C9 50 CMP #$50 ;TOO HIGH? >79 CEE3 90 05 BCC SAFEX ;NO - CONTINUE CEE5 A2 0E LDX #$0E ;ILLEGAL QUANTITY CEE7 4C 37 A4 JMP $A437 ;JUMP TO ERROR CEEA 4A SAFEX LSR A ;/2 CEEB 8D D9 CF STA XTEMP ;STORE TEMP CEEE 18 CLC CEEF AD D4 CF LDA YPOS ;Y POSITION CEF2 C9 32 CMP #$32 ;TOO HIGH? >49 CEF4 90 05 BCC SAFEY ;NO - CONTINUE CEF6 A2 0E LDX #$0E ;ILLEGAL QUANTITY CEF8 4C 37 A4 JMP $A437 ;JEMP TO ERROR CEFB 4A SAFEY LSR A ;/2 CEFC 8D DA CF STA YTEMP CEFF 8D DC CF STA YTEMP2 ;(INT(X/2)+INT(Y/2)*40) ;CODE INT(Y/2)32+INT(Y/2)*8 CF02 A2 05 LDX #$05 ;MULT *32 CF04 18 LOOP1 CLC CF05 2E DA CF ROL YTEMP ;*2 CF08 2E DB CF ROL YTEMP+$01 ;*2 CF0B CA DEX CF0C D0 F6 BNE LOOP1 CF0E A2 03 LDX #$03 ;MULT *8 CF10 18 LOOP2 CLC CF11 2E DC CF ROL YTEMP2 ;*2 CF14 2E DD CF ROL YTEMP2+$01 ;*2 CF17 CA DEX CF18 D0 F6 BNE LOOP2 CF1A 18 CLC CF1B AD DA CF LDA YTEMP ;ADD TWO RESULTS CF1E 6D DC CF ADC YTEMP2 ;TOGETHER CF21 8D DA CF STA YTEMP CF24 AD DB CF LDA YTEMP+$01 CF27 6D DD CF ADC YTEMP2+$01 CF2A 8D DB CF STA YTEMP+$01 CF2D 18 CLC ;GET LOOKUP LOC CF2E AD D9 CF LDA XTEMP CF31 6D DA CF ADC YTEMP CF34 8D 79 CF STA LOOKUP+$01 CF37 8D 92 CF STA PUTDOT+$01 CF3A 8D 9B CF STA PUTCOL+$01 CF3D AD DB CF LDA YTEMP+$01 CF40 69 00 ADC #$00 CF42 8D DB CF STA YTEMP+$01 ;ADD $0400 FOR SCREEN MEM CF45 18 CLC CF46 AD DB CF LDA YTEMP+$01 CF49 69 04 ADC #$04 CF4B 8D 7A CF STA LOOKUP+$02 CF4E 8D 93 CF STA PUTDOT+$02 CF51 18 CLC CF52 69 D4 ADC #$D4 ;ADD FOR COLOR CF54 8D 9C CF STA PUTCOL+$02 CF57 60 RTS CF58 18 LOGIC CLC ;GET BITS CF59 AD D3 CF LDA XPOS CF5C 29 01 AND #$01 CF5E 8D D9 CF STA XTEMP CF61 18 CLC CF62 AD D4 CF LDA YPOS CF65 29 01 AND #$01 CF67 2A ROL A CF68 18 CLC CF69 6D D9 CF ADC XTEMP ;ADD THEM UP CF6C AA TAX CF6D BD F0 CF LDA QLOOKUP,X ;LOOKUP BIT CF70 8D DE CF STA NEWNIB ;STORE BIT CF73 A2 00 LDX #$00 CF75 BD E0 CF LOOP3 LDA CHAR,X ;GET CURRENT CF78 CD 00 04 LOOKUP CMP $0400 ;FIGURE OUT CF7B F0 07 BEQ SKIP ;WHAT IT IS CF7D E8 INX CF7E E0 10 CPX #$10 CF80 D0 F3 BNE LOOP3 CF82 A2 00 LDX #$00 SKIP CF84 8A TXA ;TRANSFER TO . CF85 8D DF CF STA POINT CF88 0D DE CF ORA NEWNIB ;OR WITH NEW CF8B AA TAX CF8C 60 RTS CF8D BD E0 CF GETCHAR LDA CHAR,X CF90 60 RTS CF91 8D 00 04 PUTDOT STA $0400 ;NEW CHAR CF94 60 RTS CF95 AD D5 CF GCOLOR LDA COLOR CF98 29 0F AND #$0F CF9A 8D 00 D8 PUTCOL STA $D800 ;NEW COLOR CF9D 60 RTS CF9E 20 D4 CE SETP JSR GETBYTE CFA1 20 58 CF JSR LOGIC CFA4 20 8D CF JSR GETCHAR CFA7 20 91 CF JSR PUTDOT CFAA 4C 95 CF JMP GCOLOR CFAD 20 D4 CE RSETP JSR GETBYTE CFB0 20 58 CF JSR LOGIC CFB3 38 SEC CFB4 A9 0F LDA #$0F CFB6 ED DE CF SBC NEWNIB CFB9 2D DF CF AND POINT CFBC AA TAX CFBD 20 8D CF JSR GETCHAR CFC0 4C 91 CF JMP PUTDOT CFC3 20 D4 CE CPOINT JSR GETBYTE CFC6 20 58 CF JSR LOGIC CFC9 AD DE CF LDA NEWNIB CFCC 2D DF CF AND POINT CFCF 8D D6 CF STA RTURN CFD2 60 RTS ;WORKING MEMORY CFD3 00 XPOS .BYTE $00 CFD4 00 YPOS .BYTE $00 CFD5 00 COLOR .BYTE $00 CFD6 00 RTURN .BYTE $00 CFD7 00 00 SBYTE .BYTE $00,$00 CFD9 00 XTEMP .BYTE $00 CFDA 00 00 YTEMP .BYTE $00,$00 CFDC 00 00 YTEMP2 .BYTE $00,$00 CFDE 00 NEWNIB .BYTE $00 CFDF 00 POINT .BYTE $00 ;CHARACTER AND POSITION POSITION LOOKUP CFE0 20 7E 7C E2 CHAR .BYTE $20,$7E,$7C,$E2 CFE4 7B 61 FF EC .BYTE $7B,$61,$FF,$EC CFE8 6C 7F E1 FB .BYTE $6C,$7F,$E1,$FB CFEC 62 FC FE A0 .BYTE $62,$FC,$FE,$A0 CFF0 01 02 04 08 QLOOKUP .BYTE $01,$02,$04,$08 CFF4 4D 2E 43 41 53 53 45 52 41 .TEXT "M.CASSERA" .END