10 ;CODEWRITER III 20 ;BY STEVE STUNTZ 30 ;(c) 1985, ANTIC PUBLISHING 40 ; 50 *= $8000 55 START 60 MEM = $B0 70 VTBASE = $E400 80 SETVBV = $E45C 90 PACTL = $D302 0100 PORTA = $D300 0110 AUDC1 = $D201 0120 CH = $02FC 0130 CDTMA1 = $0226 0140 ROWCRS = $54 0150 COLCRS = $55 0160 VDSLST = $0200 0170 NMIEN = $D40E 0180 SDLSTL = $0230 0185 ATRACT = $4D 0190 MEMINT = $B4 0200 MEMRX = $B2 0210 JSR HEAD1 0220 LDA #$38 0230 STA PACTL 0240 LDA #$01 0250 STA PORTA 0260 LDA #$3C 0270 STA PACTL 0280 LDA #$01 0290 STA PORTA 0300 LDA SDLSTL 0310 STA MEMINT 0320 LDA SDLSTL+1 0330 STA MEMINT+1 0340 LDA #$82 0350 LDY #12 0360 STA (MEMINT),Y 0370 LDY #28 0380 STA (MEMINT),Y 0390 LDA #RXLOOP&255 0400 STA VDSLST 0410 LDA #RXLOOP/256 0420 STA VDSLST+1 0430 LDA #$FF 0440 STA POINTRI 0450 STA POINTRO 0460 LDA #$20 0470 STA CWSPC 0480 LDA #$40 0490 STA CWMAX 0500 LDA #$0F 0510 STA CWAVG 0520 LDA #$00 0530 STA I23X37 0540 STA HILO 0550 STA NBITS 0560 STA RXCW 0570 STA IAMREDI 0580 STA CTAVG 0590 STA CWTOT 0600 STA CWTOT+1 0610 LDA #2 0620 STA PREVHILO 0630 LDA MRX 0640 STA MEMRX 0650 LDA MRX+1 0660 STA MEMRX+1 0670 LDA #$C0 0680 STA NMIEN 0690 ; 0700 ;SEARCH FOR KEYBOARD CHARACTER 0710 LP1 JSR RXCH 0720 JMP LP1 0730 ; 0740 ; DEVICE HANDLER 0750 GOVEC CPX #6 0760 BNE GOV1 0770 LDY ROWCRS 0780 CPY #23 0790 BNE GOV1 0800 LDY COLCRS 0810 CPY #39 0820 BNE GOV1 0830 LDY #1 0840 STY I23X37 0850 GOV1 TAY 0860 LDA VTBASE+1,X 0870 PHA 0880 LDA VTBASE,X 0890 PHA 0900 TYA 0910 RTS 0920 ; 0930 ; SCROLL 0940 SCROLL LDY I23X37 0950 CPY #1 0960 BNE SCROL1 0970 JSR HEAD3 0980 LDY #0 0990 STY I23X37 1000 SCROL1 RTS 1010 ; 1020 ; RX WORD WRAP 1030 RXWRA LDY COLCRS 1040 CPY #34 1050 BCC RXWR9 1060 CPY #39 1070 BEQ RXWR9 1080 RXWR1 LDA #$A0 1090 JSR RXPNT 1100 LDY COLCRS 1110 CPY #39 1120 BNE RXWR1 1130 RXWR9 RTS 1140 ; 1150 ;SET PIN1 AND SOUND 1160 ONOFF CMP #$02 1170 BNE OFF 1180 LDY #$00 1190 STY PORTA SET PIN1 LOW 1200 LDY #$2F 1210 STY AUDC1 TURN SOUND ON 1220 JMP ONOF1 1230 OFF LDY #$01 1240 STY PORTA SET PIN1 HIGH 1250 LDY #$00 1260 STY AUDC1 TURN SOUND OFF 1270 ONOF1 RTS 1280 ; 1290 ;HEADING 1300 HEAD LDY #$00 1310 STY COPYI 1320 CR1 LDA COPYR,Y 1330 LDX #6 1340 JSR GOVEC 1350 INC COPYI 1360 LDY COPYI 1370 CPY #38 1380 BNE CR1 1390 RTS 1400 ; 1410 ;SET CURSOR AT 0,0 1420 HEAD00 LDA ROWCRS 1430 STA ROW 1440 LDA COLCRS 1450 STA COL 1460 LDA #$00 1470 STA ROWCRS 1480 LDA #$02 1490 STA COLCRS 1500 RTS 1510 ; 1520 ;SET CURSOR AT ORIGINAL POSITION 1530 HEADORG LDA ROW 1540 STA ROWCRS 1550 LDA COL 1560 STA COLCRS 1570 LDA #$1E 1580 LDX #6 1590 JSR GOVEC 1600 LDA #$1F 1610 LDX #6 1620 JSR GOVEC 1630 RTS 1640 ; 1650 ;KEYBOARD HEADING 1660 HEAD1 JSR HEADCLR 1670 JSR HEAD 1680 RTS 1690 ; 1700 ;CHANGE SPEED HEADING 1710 HEAD3 JSR HEAD00 1720 JSR HEAD 1730 JSR HEADORG 1740 RTS 1750 ; 1760 ; 1770 HEADCLR LDA #$7D 1780 LDX #6 1790 JSR GOVEC 1800 RTS 1810 ; 1820 ; RX INTERRUPT LOOP 1830 RXLOOP = * 1840 PHA 1850 TYA 1860 PHA 1870 JSR CWCOUNT 1872 LDA #0 1874 STA ATRACT 1880 LDA PORTA 1890 AND #$02 1900 CMP PREVHILO 1910 BNE RI1 1920 JMP RI2 1930 RI1 JSR CHANGE 1940 RI2 PLA 1950 TAY 1960 PLA 1970 RTI 1980 ; 1990 ; RX CW COUNT BY 1 2000 CWCOUNT LDY POINTRI 2010 LDA (MEMRX),Y 2020 CMP CWMAX 2030 BEQ RC1 2040 CLC 2050 ADC #$01 2060 STA (MEMRX),Y 2070 RC1 RTS 2080 ; 2090 ; DETECT CW CHANGE 2100 CHANGE INC POINTRI 2110 LDA PREVHILO 2120 JSR ONOFF 2130 EOR #$02 2140 STA PREVHILO 2150 LDY POINTRI 2160 LDA #0 2170 STA (MEMRX),Y 2180 RTS 2190 ; 2200 ; 2210 ; RX CHARACTER FROM PIN 2 2220 RXCH JSR READY 2230 LDA IAMREDI 2240 CMP #1 2250 BNE RX02 2260 INC POINTRO 2270 JSR COUNTAVG 2280 LDA #1 2290 EOR HILO 2300 STA HILO 2310 CMP #1 2320 BNE RX01 2330 JSR SHIFT 2340 JMP RX02 2350 RX01 JSR FINDCH 2360 RX02 RTS 2370 ; 2380 ; SHIFT ROR BUILD NBITS 2390 SHIFT LDA NBITS 2400 CMP #7 2410 BEQ SHIFT9 2420 INC NBITS 2430 LDY POINTRO 2440 LDA (MEMRX),Y 2450 CMP CWAVG 2460 BCC SHIFT1 2470 SEC ;DASH 2480 JMP SHIFT2 2490 SHIFT1 CLC ;DOT 2500 SHIFT2 ROR RXCW 2510 SHIFT9 RTS 2520 ; 2530 ; READY TO READ COUNT 2540 READY LDX POINTRO 2550 CPX POINTRI 2560 BEQ READY1 2570 INX 2580 CPX POINTRI 2590 BNE READY2 2600 LDY POINTRI 2610 LDA (MEMRX),Y 2620 CMP CWMAX 2630 BEQ READY2 2640 READY1 LDA #0 2650 JMP READY3 2660 READY2 LDA #1 2670 READY3 STA IAMREDI 2680 RTS 2690 ; 2700 ; FIND CW CHARACTER 2710 FINDCH LDY POINTRO 2720 LDA (MEMRX),Y 2730 CMP CWAVG 2740 BCC FIND09 2750 JSR FINISHCH 2760 JSR LOOKASCI 2770 LDY POINTRO 2780 LDA (MEMRX),Y 2790 CMP CWSPC 2800 BCC FIND09 2810 JSR RXWRA 2820 LDA #$A0 2830 JSR RXPNT 2840 FIND09 RTS 2850 ; 2860 ; PRINT RECEIVED DATA 2870 RXPNT LDX #6 2880 JSR GOVEC 2890 JSR SCROLL 2900 RXPN1 RTS 2910 ; 2920 ; FINISH RXC2 CHARACTER 2930 FINISHCH SEC 2940 ROR RXCW 2950 INC NBITS 2960 FINISH1 LDA NBITS 2970 CMP #8 2980 BCS FINISH9 2990 CLC 3000 ROR RXCW 3010 INC NBITS 3020 JMP FINISH1 3030 FINISH9 LDA #0 3040 STA NBITS 3050 RTS 3060 ; 3070 ; LOOKUP AND PRINT CHARACTER 3080 LOOKASCI LDX #40 3090 LOOK1 LDA CWCHA,X 3100 CMP RXCW 3110 BEQ LOOK3 3120 INX 3130 CPX #91 3140 BEQ LOOK2 3150 JMP LOOK1 3160 LOOK2 LDA #63 3170 JMP LOOK4 3180 LOOK3 TXA 3190 LOOK4 EOR #$80 3200 JSR RXPNT 3210 RTS 3220 ; 3230 ; COUNT FOR AVERAGE 3240 COUNTAVG LDX CTAVG 3250 INX 3260 CPX #16 3270 BEQ COUNTA1 3280 INC CTAVG 3290 LDY POINTRO 3300 LDA (MEMRX),Y 3310 CLC 3320 ADC CWTOT 3330 STA CWTOT 3340 LDA #0 3350 ADC CWTOT+1 3360 STA CWTOT+1 3370 JMP COUNTA2 3380 COUNTA1 JSR CALCAVG 3390 COUNTA2 RTS 3400 ; 3410 ; CALCULATE AVERAGE 3420 CALCAVG CLC 3430 ROR CWTOT+1 3440 ROR CWTOT 3450 CLC 3460 ROR CWTOT+1 3470 ROR CWTOT 3480 LDA CWTOT 3490 STA CWMAX 3500 CLC 3510 ROR CWTOT 3520 LDA CWTOT 3530 STA CWSPC 3540 CLC 3550 ROR CWTOT 3560 LDA CWTOT 3570 STA CWAVG 3580 CLC 3590 ROR CWTOT 3600 LDA CWTOT 3610 CLC 3620 ADC CWSPC 3630 STA CWSPC 3640 LDA #0 3650 STA CWTOT 3660 STA CWTOT+1 3670 STA CTAVG 3680 RTS 3690 ; 3700 ;ROM DATA 3710 COPYR 3720 .BYTE " Codewriter III BY STEVE STUNTZ " 3730 MRX .WORD MEMRX1 3740 CWCHA 3750 .BYTE 0,0,0,0,0,0,0,0 3760 .BYTE 0,0,0,0,0,0,0,0 3770 .BYTE 0,0,0,0,0,0,0,0 3780 .BYTE 0,0,0,0,0,0,0,0 3790 .BYTE $FE,$00 3800 .BYTE $00,$00,$00,$00,$00,$00 3810 .BYTE $6D,$6D,$22,$2A,$73,$68 3820 .BYTE $6A,$29,$3F,$3E,$3C,$38 3830 .BYTE $30,$20,$21,$23,$27,$2F 3840 .BYTE $47,$55,$FF,$31,$FF,$4C 3850 .BYTE $00,$06,$11,$15,$09,$02 3860 .BYTE $14,$0B,$10,$04,$1E,$0D 3870 .BYTE $12,$07,$05,$0F,$16,$1B 3880 .BYTE $0A,$08,$03,$0C,$18,$0E 3890 .BYTE $19,$1D,$13 3900 *= CWCHA+$0100 3910 ; 3920 PND = * ; END OF BOOT FILE 3930 ;*=$1000 3940 COPYI *= *+1 3950 ROW *= *+1 3960 COL *= *+1 3970 MEMRX1 = * 3980 *= *+$0100 3990 POINTRI *= *+1 4000 POINTRO *= *+1 4010 CWMAX *= *+1 4020 CWSPC *= *+1 4030 CWAVG *= *+1 4040 PREVHILO *= *+1 4050 HILO *= *+1 4060 NBITS *= *+1 4070 RXCW *= *+1 4080 IAMREDI *= *+1 4090 CTAVG *= *+1 4100 CWTOT *= *+2 4110 I23X37 *= *+1 4120 RXINDX *= *+1 4122 *= $02E0 4124 .WORD START 4130 .END
Back to previous page