CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 1 00100 ** CURSOR/MOOSE DRIVER 00110 ** FOR CoCoCad 00120 ** $1DA=MODE (0=NO RESTRICTION) 00130 ** $1DB=CURSOR TYPE (0-3) 00140 ** 1E0-1E1 LOWER X POSITION 00150 ** 1E2-1E3 UPPER X POSITION 00160 ** 1E4 LOWER Y POSITION 00170 ** 1E5 LOWER Y POSITION 00180 ** 1E6 HPRINT START (0-79) COLUMN 00190 ** 1E7 HPRINT START (0-23) ROW 00200 TITLE CoCoCad 1.1 Mouse driver 0400 00210 ORG $400 0400 03A0 00220 FDB CURBFR-$E00 0E00 00230 ORG $0E00 0E00 BD B3ED 00240 JSR $B3ED 0E03 58 00250 LSLB 0E04 8E 0E09 00260 LDX #FCTAB 0E07 6E 95 00270 JMP [B,X] 0E09 106B 00280 FCTAB FDB CUROFF 0E0B 0ED2 00290 FDB CURON 0E0D 0EB0 00300 FDB HIRES 0E0F 1024 00310 FDB HCLS 0E11 1095 00320 FDB BWAIT 0E13 10A1 00330 FDB RWAIT 0E15 10AD 00340 FDB HPRVEC 0E17 1123 00350 FDB RTXP 0E19 112A 00360 FDB RTYP 0E1B 1132 00370 FDB RTXC 0E1D 113F 00380 FDB RTYC 0E1F 114A 00390 FDB COPY01 0E21 1175 00400 FDB COPY10 00410 0E23 8E FF00 00420 HMOUSE LDX #$FF00 0E26 A6 88 23 00430 LDA 35,X 0E29 E6 88 20 00440 LDB 32,X 0E2C 34 06 00450 PSHS A,B 0E2E 84 F7 00460 ANDA #$F7 0E30 A7 88 23 00470 STA 35,X 0E33 A6 01 00480 LDA 1,X 0E35 E6 03 00490 LDB 3,X 0E37 34 06 00500 PSHS A,B 0E39 C4 F7 00510 ANDB #$F7 0E3B E7 03 00520 STB 3,X 0E3D 8A 08 00530 ORA #$08 0E3F A7 01 00540 STA 1,X 0E41 8D 26 00550 BSR JOY1 0E43 44 00560 LSRA 0E44 56 00570 RORB 0E45 1083 00C8 00580 CMPD #200 0E49 23 03 00590 BLS JOY001 0E4B CC 00C8 00600 LDD #200 0E4E F7 0FED 00610 JOY001 STB YPOS 0E51 A6 01 00620 LDA 1,X 0E53 84 F7 00630 ANDA #$F7 0E55 8D 12 00640 BSR JOY1 CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 2 0E57 FD 0FEB 00650 STD XPOS 0E5A 35 06 00660 PULS A,B 0E5C A7 01 00670 STA 1,X 0E5E E7 03 00680 STB 3,X 0E60 35 06 00690 PULS A,B 0E62 E7 88 20 00700 STB 32,X 0E65 A7 88 23 00710 STA 35,X 0E68 39 00720 RTS 0E69 34 01 00730 JOY1 PSHS CC 0E6B A7 01 00740 STA 1,X 0E6D 86 FF 00750 LDA #$FF 0E6F A7 88 20 00760 STA 32,X 0E72 86 5A 00770 LDA #$5A 0E74 4A 00780 JOY2 DECA 0E75 26 FD 00790 BNE JOY2 0E77 CC 0329 00800 LDD #$0329 0E7A 34 02 00810 PSHS A 0E7C 86 02 00820 LDA #$02 0E7E 1A 50 00830 ORCC #$50 0E80 A7 88 20 00840 STA 32,X 0E83 A6 84 00850 JOY3 LDA ,X 0E85 2B 0E 00860 BMI JOY4 0E87 5A 00870 DECB 0E88 26 F9 00880 BNE JOY3 0E8A 6A E4 00890 DEC ,S 0E8C 2A F5 00900 BPL JOY3 0E8E 35 02 00910 PULS A 0E90 CC 0277 00920 LDD #$0277 0E93 35 81 00930 PULS CC,PC 0E95 35 02 00940 JOY4 PULS A 0E97 5A 00950 DECB 0E98 34 06 00960 PSHS A,B 0E9A CC 0280 00970 LDD #$0280 0E9D A3 E1 00980 SUBD ,S++ 0E9F 24 04 00990 BCC JOY5 0EA1 4F 01000 CLRA 0EA2 5F 01010 CLRB 0EA3 35 81 01020 PULS CC,PC 0EA5 1083 0277 01030 JOY5 CMPD #$0277 0EA9 25 03 01040 BCS JOY6 0EAB CC 0277 01050 LDD #$0277 0EAE 35 81 01060 JOY6 PULS CC,PC 01070 01080 * MOVABLE CURSOR DRIVER 01090 ** 01100 01110 0EB0 1A 50 01120 HIRES ORCC #$50 0EB2 B7 FFD9 01130 STA $FFD9 0EB5 86 08 01140 LDA #08 0EB7 B7 FF93 01150 STA $FF93 0EBA 34 76 01160 PSHS D,X,U,Y 0EBC BD 0E23 01170 JSR HMOUSE 0EBF FC 0FEE 01180 LDD OLDX 0EC2 10B3 0FEB 01190 CMPD XPOS CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 3 0EC6 26 27 01200 BNE REST 0EC8 B6 0FF0 01210 LDA OLDY 0ECB B1 0FED 01220 CMPA YPOS 0ECE 26 1F 01230 BNE REST 0ED0 35 F6 01240 PULS Y,D,X,U,PC 01250 0ED2 1A 50 01260 CURON ORCC #$50 0ED4 B7 FFD9 01270 STA $FFD9 0ED7 86 08 01280 LDA #8 0ED9 B7 FF93 01290 STA $FF93 0EDC 34 76 01300 PSHS D,X,Y,U 0EDE BD 0E23 01310 JSR HMOUSE 0EE1 CC 3031 01320 LDD #$3031 0EE4 FD FFA1 01330 STD $FFA1 0EE7 CC 3233 01340 LDD #$3233 0EEA FD FFA3 01350 STD $FFA3 0EED 20 2C 01360 BRA CALC 01370 01380 * RESTORE THE OLD BACKGROUND 01390 0EEF CC 3031 01400 REST LDD #$3031 0EF2 FD FFA1 01410 STD $FFA1 0EF5 CC 3233 01420 LDD #$3233 0EF8 FD FFA3 01430 STD $FFA3 01440 01450 * RESORE WHAT WAS THERE 01460 0EFB 108E 0FF2 01470 LDY #SCNBFR 0EFF BE 1022 01480 LDX SCNPOS 0F02 C6 10 01490 LDB #16 0F04 B6 FF93 01500 SYNK LDA $FF93 0F07 27 FB 01510 BEQ SYNK 0F09 A6 A0 01520 RES100 LDA ,Y+ 0F0B A7 80 01530 STA ,X+ 0F0D A6 A0 01540 LDA ,Y+ 0F0F A7 80 01550 STA ,X+ 0F11 A6 A0 01560 LDA ,Y+ 0F13 A7 80 01570 STA ,X+ 0F15 30 88 4D 01580 LEAX 77,X 0F18 5A 01590 DECB 0F19 26 EE 01600 BNE RES100 01610 01620 * CALCULATE NEW SCREEN POSITION 01630 0F1B 1021 00BE 01640 CALC LBRN DRAW99 0F1F FC 0FEB 01650 LDD XPOS 0F22 FD 0FEE 01660 STD OLDX 0F25 B6 0FED 01670 LDA YPOS 0F28 B7 0FF0 01680 STA OLDY 0F2B FC 0FEB 01690 LDD XPOS 0F2E 44 01700 LSRA 0F2F 56 01710 RORB 0F30 44 01720 LSRA 0F31 56 01730 RORB 0F32 44 01740 LSRA CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 4 0F33 56 01750 RORB 0F34 F7 0FF1 01760 STB XBYTE 01770 0F37 CE 2000 01780 LDU #$2000 0F3A F6 0FED 01790 LDB YPOS 0F3D 86 50 01800 LDA #80 0F3F 3D 01810 MUL 0F40 33 CB 01820 LEAU D,U 0F42 B6 0FF1 01830 LDA XBYTE 0F45 33 C6 01840 LEAU A,U 0F47 FF 1022 01850 STU SCNPOS SAVE IT! 01860 01870 * NOW SAVE THE SCREEN UNDER THE CURSOR 01880 0F4A 8E 0FF2 01890 LDX #SCNBFR 0F4D C6 10 01900 LDB #16 0F4F A6 C0 01910 SAVE1 LDA ,U+ 0F51 A7 80 01920 STA ,X+ 0F53 A6 C0 01930 LDA ,U+ 0F55 A7 80 01940 STA ,X+ 0F57 A6 C0 01950 LDA ,U+ 0F59 A7 80 01960 STA ,X+ 0F5B 33 C8 4D 01970 LEAU 77,U 0F5E 5A 01980 DECB 0F5F 26 EE 01990 BNE SAVE1 02000 0F61 FE 1022 02010 LDU SCNPOS 0F64 8E 11A0 02020 LDX #CURBFR 0F67 B6 0FEC 02030 LDA XPOS+1 0F6A 84 07 02040 ANDA #7 0F6C C6 30 02050 LDB #48 0F6E 3D 02060 MUL 0F6F 30 8B 02070 LEAX D,X 0F71 31 89 0180 02080 LEAY 8*48,X 02090 02100 * NOW DRAW THE APPROPRIATE CURSOR! 0F75 7D 01DA 02110 TST $1DA 0F78 27 2A 02120 BEQ HERE NO RESTRICTIONS 0F7A FC 0FEB 02130 LDD XPOS 0F7D 10B3 01E0 02140 CMPD $1E0 0F81 25 1C 02150 BLO ZERO 0F83 10B3 01E2 02160 CMPD $1E2 0F87 22 16 02170 BHI ZERO 0F89 B6 0FED 02180 LDA YPOS 0F8C 10B3 01E4 02190 CMPD $1E4 0F90 25 0D 02200 BLO ZERO 0F92 10B3 01E5 02210 CMPD $1E5 0F96 22 07 02220 BHI ZERO 0F98 86 01 02230 ONE LDA #1 0F9A B7 01DB 02240 STA $1DB 0F9D 20 05 02250 BRA HERE 0F9F 86 00 02260 ZERO LDA #0 0FA1 B7 01DB 02270 STA $1DB 0FA4 B6 01DB 02280 HERE LDA $1DB 0FA7 27 08 02290 BEQ HERE2 CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 5 0FA9 30 89 0300 02300 LEAX 768,X 0FAD 31 A9 0300 02310 LEAY 768,Y 0FB1 C6 10 02320 HERE2 LDB #16 0FB3 A6 80 02330 DRAW1 LDA ,X+ 0FB5 A4 C4 02340 ANDA ,U 0FB7 A7 C4 02350 STA ,U 0FB9 A6 A0 02360 LDA ,Y+ 0FBB AA C4 02370 ORA ,U 0FBD A7 C0 02380 STA ,U+ 0FBF A6 80 02390 LDA ,X+ 0FC1 A4 C4 02400 ANDA ,U 0FC3 A7 C4 02410 STA ,U 0FC5 A6 A0 02420 LDA ,Y+ 0FC7 AA C4 02430 ORA ,U 0FC9 A7 C0 02440 STA ,U+ 0FCB A6 80 02450 LDA ,X+ 0FCD A4 C4 02460 ANDA ,U 0FCF A7 C4 02470 STA ,U 0FD1 A6 A0 02480 LDA ,Y+ 0FD3 AA C4 02490 ORA ,U 0FD5 A7 C0 02500 STA ,U+ 0FD7 33 C8 4D 02510 LEAU 77,U 0FDA 5A 02520 DECB 0FDB 26 D6 02530 BNE DRAW1 0FDD CC 393A 02540 DRAW99 LDD #$393A 0FE0 FD FFA1 02550 STD $FFA1 0FE3 CC 3B3C 02560 LDD #$3B3C 0FE6 FD FFA3 02570 STD $FFA3 0FE9 35 F6 02580 PULS A,B,X,Y,U,PC 02590 02600 0FEB 0000 02610 XPOS FDB 0 0FED 00 02620 YPOS FCB 0 0FEE 0000 02630 OLDX FDB 0 0FF0 00 02640 OLDY FCB 0 0FF1 00 02650 XBYTE FCB 0 02660 0FF2 02670 SCNBFR RMB 48 1022 2000 02680 SCNPOS FDB $2000 02690 1024 1A 50 02700 HCLS ORCC #$50 1026 8E 3031 02710 LDX #$3031 1029 108E 3233 02720 LDY #$3233 102D BF FFA1 02730 STX $FFA1 1030 10BF FFA3 02740 STY $FFA3 1034 8E 2000 02750 LDX #$2000 1037 CC 5555 02760 HCL100 LDD #$5555 103A 8D 1A 02770 BSR LINSTR 103C 27 09 02780 BEQ HCL300 103E CC AAAA 02790 LDD #$AAAA 1041 8D 13 02800 BSR LINSTR 1043 27 02 02810 BEQ HCL300 1045 20 F0 02820 BRA HCL100 02830 1047 8E 393A 02840 HCL300 LDX #$393A CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 6 104A 108E 3B3C 02850 LDY #$3B3C 104E BF FFA1 02860 STX $FFA1 1051 10BF FFA3 02870 STY $FFA3 1055 39 02880 RTS 02890 1056 108E 0028 02900 LINSTR LDY #40 105A ED 81 02910 LIN100 STD ,X++ 105C 31 3F 02920 LEAY -1,Y 105E 26 FA 02930 BNE LIN100 1060 8C 5E80 02940 CMPX #$2000+(200*80) 1063 24 03 02950 BHS OVER 1065 86 01 02960 LDA #1 1067 39 02970 RTS 1068 86 00 02980 OVER LDA #0 106A 39 02990 RTS 03000 03010 106B 1A 50 03020 CUROFF ORCC #$50 106D CC 3031 03030 LDD #$3031 1070 FD FFA1 03040 STD $FFA1 1073 108E 0FF2 03050 LDY #SCNBFR 1077 BE 1022 03060 LDX SCNPOS 107A C6 10 03070 LDB #16 107C A6 A0 03080 OFF100 LDA ,Y+ 107E A7 80 03090 STA ,X+ 1080 A6 A0 03100 LDA ,Y+ 1082 A7 80 03110 STA ,X+ 1084 A6 A0 03120 LDA ,Y+ 1086 A7 80 03130 STA ,X+ 1088 30 88 4D 03140 LEAX 77,X 108B 5A 03150 DECB 108C 26 EE 03160 BNE OFF100 108E CC 393A 03170 LDD #$393A 1091 FD FFA1 03180 STD $FFA1 1094 39 03190 RTS 03200 03210 ** WAIT UNTILL BUTTON IS DEPRESSED ** 03220 1095 12 03230 BWAIT NOP 1096 BD 0EB0 03240 B100 JSR HIRES 1099 B6 FF00 03250 LDA $FF00 109C 84 01 03260 ANDA #1 109E 26 F6 03270 BNE B100 10A0 39 03280 B106 RTS 03290 10A1 12 03300 RWAIT NOP 10A2 BD 0EB0 03310 R100 JSR HIRES 10A5 B6 FF00 03320 LDA $FF00 10A8 84 01 03330 ANDA #1 10AA 27 F6 03340 BEQ R100 10AC 39 03350 R106 RTS 03360 03370 03380 *** IMPROVED HPRINT ROUTINE *** 03390 CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 7 10AD CC 10B4 03400 HPRVEC LDD #HPRINT 10B0 BD B4F4 03410 JSR $B4F4 10B3 39 03420 RTS 03430 10B4 1A 50 03440 HPRINT ORCC #$50 10B6 BD B3ED 03450 JSR $B3ED GET VARPTR 10B9 1F 01 03460 TFR D,X 10BB 10AE 02 03470 LDY 2,X 10BE A6 84 03480 LDA ,X 10C0 B7 01E9 03490 STA $1E9 03500 10C3 7D 01E9 03510 HP100 TST $1E9 10C6 27 0C 03520 BEQ HP900 10C8 A6 A0 03530 LDA ,Y+ 10CA 8D 09 03540 BSR HP500 10CC 7A 01E9 03550 DEC $1E9 10CF 7C 01E6 03560 INC $1E6 10D2 20 EF 03570 BRA HP100 03580 10D4 39 03590 HP900 RTS 03600 10D5 34 20 03610 HP500 PSHS Y 10D7 81 80 03620 CMPA #128 10D9 24 07 03630 BHS SECOND 10DB 80 20 03640 SUBA #32 10DD 8E F09D 03650 LDX #$F09D 10E0 20 05 03660 BRA HP600 10E2 84 1F 03670 SECOND ANDA #$1F 10E4 8E 0400 03680 LDX #$0400 03690 10E7 C6 08 03700 HP600 LDB #8 10E9 3D 03710 MUL 10EA 30 8B 03720 LEAX D,X 10EC F6 01E7 03730 LDB $1E7 10EF 86 A0 03740 LDA #160 10F1 3D 03750 MUL 10F2 108E 2000 03760 LDY #$2000 10F6 31 AB 03770 LEAY D,Y 10F8 31 AB 03780 LEAY D,Y 10FA 31 AB 03790 LEAY D,Y 10FC 31 AB 03800 LEAY D,Y 10FE F6 01E6 03810 LDB $1E6 1101 31 A5 03820 LEAY B,Y 03830 1103 CC 3031 03840 LDD #$3031 1106 FD FFA1 03850 STD $FFA1 1109 C6 08 03860 LDB #8 110B A6 80 03870 HP700 LDA ,X+ 110D 7D 01E8 03880 TST $1E8 1110 26 01 03890 BNE HP710 1112 43 03900 COMA 1113 A7 A4 03910 HP710 STA ,Y 1115 31 A8 50 03920 LEAY 80,Y 1118 5A 03930 DECB 1119 26 F0 03940 BNE HP700 CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 8 03950 111B CC 393A 03960 LDD #$393A 111E FD FFA1 03970 STD $FFA1 1121 35 A0 03980 PULS Y,PC 03990 04000 04010 ** RETURN X POSITION (PIXELS) ** 1123 FC 0FEB 04020 RTXP LDD XPOS 1126 BD B4F4 04030 JSR $B4F4 1129 39 04040 RTS 04050 04060 ** RETURN Y POSITION (PIXELS) ** 112A F6 0FED 04070 RTYP LDB YPOS 112D 4F 04080 CLRA 112E BD B4F4 04090 JSR $B4F4 1131 39 04100 RTS 04110 04120 ** RETURN X POS (CHARS) ** 1132 FC 0FEB 04130 RTXC LDD XPOS 1135 44 04140 LSRA 1136 56 04150 RORB 1137 44 04160 LSRA 1138 56 04170 RORB 1139 44 04180 LSRA 113A 56 04190 RORB 113B BD B4F4 04200 JSR $B4F4 113E 39 04210 RTS 04220 04230 ** RETURN Y POS (CHARS) ** 113F F6 0FED 04240 RTYC LDB YPOS 1142 54 04250 LSRB 1143 54 04260 LSRB 1144 54 04270 LSRB 1145 4F 04280 CLRA 1146 BD B4F4 04290 JSR $B4F4 1149 39 04300 RTS 04310 04320 04330 *COPY PAGE 0 TO PAGE 1* 04340 114A 1A 50 04350 COPY01 ORCC #$50 114C CC 3031 04360 LDD #$3031 114F FD FFA1 04370 STD $FFA1 1152 CC 3233 04380 LDD #$3233 1155 FD FFA3 04390 STD $FFA3 1158 8E 2000 04400 LDX #$2000 115B 108E 6000 04410 LDY #$6000 115F EC 81 04420 COPY02 LDD ,X++ 1161 ED A1 04430 STD ,Y++ 1163 8C 6000 04440 CMPX #$6000 1166 26 F7 04450 BNE COPY02 1168 CC 393A 04460 LDD #$393A 116B FD FFA1 04470 STD $FFA1 116E CC 3B3C 04480 LDD #$3B3C 1171 FD FFA3 04490 STD $FFA3 CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 9 1174 39 04500 RTS 04510 04520 *COPY PAGE 1 TO PAGE 0* 1175 1A 50 04530 COPY10 ORCC #$50 1177 CC 3031 04540 LDD #$3031 117A FD FFA1 04550 STD $FFA1 117D CC 3233 04560 LDD #$3233 1180 FD FFA3 04570 STD $FFA3 1183 8E 2000 04580 LDX #$2000 1186 108E 6000 04590 LDY #$6000 118A EC A1 04600 COPY12 LDD ,Y++ 118C ED 81 04610 STD ,X++ 118E 8C 6000 04620 CMPX #$6000 1191 26 F7 04630 BNE COPY12 1193 CC 393A 04640 LDD #$393A 1196 FD FFA1 04650 STD $FFA1 1199 CC 3B3C 04660 LDD #$3B3C 119C FD FFA3 04670 STD $FFA3 119F 39 04680 RTS 04690 11A0 12 04700 CURBFR NOP MISSING END STATEMENT 00001 TOTAL ERRORS CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 10 B100 1096 B106 10A0 BWAIT 1095 CALC 0F1B COPY01 114A COPY02 115F COPY10 1175 COPY12 118A CURBFR 11A0 CUROFF 106B CURON 0ED2 DRAW1 0FB3 DRAW99 0FDD FCTAB 0E09 HCL100 1037 HCL300 1047 HCLS 1024 HERE 0FA4 HERE2 0FB1 HIRES 0EB0 HMOUSE 0E23 HP100 10C3 HP500 10D5 HP600 10E7 HP700 110B HP710 1113 HP900 10D4 HPRINT 10B4 HPRVEC 10AD JOY001 0E4E JOY1 0E69 JOY2 0E74 JOY3 0E83 JOY4 0E95 JOY5 0EA5 JOY6 0EAE LIN100 105A LINSTR 1056 OFF100 107C OLDX 0FEE OLDY 0FF0 ONE 0F98 OVER 1068 R100 10A2 R106 10AC RES100 0F09 REST 0EEF RTXC 1132 RTXP 1123 RTYC 113F RTYP 112A RWAIT 10A1 SAVE1 0F4F SCNBFR 0FF2 SCNPOS 1022 CoCoCad 1.1 Mouse driver EDTASM+/01.01.00 PAGE 11 SECOND 10E2 SYNK 0F04 XBYTE 0FF1 XPOS 0FEB YPOS 0FED ZERO 0F9F