Path: csiph.com!usenet.pasdenom.info!aioe.org!eternal-september.org!feeder.eternal-september.org!news.bbs-scene.org!not-for-mail From: D Finnigan Newsgroups: comp.sys.apple2.programmer Subject: Source Code for Multitasking Mouse Draw Demo v1.1 Date: Tue, 25 Feb 2014 21:01:48 +0000 (UTC) Organization: bbs-scene usenet news Lines: 558 Message-ID: References: NNTP-Posting-Host: rigel.serv14.eiu.edu X-Trace: technocratmedia-w1.news.bbs-scene.org 1393362108 20106 139.67.14.58 (25 Feb 2014 21:01:48 GMT) X-Complaints-To: abuse@bbs-scene.org NNTP-Posting-Date: Tue, 25 Feb 2014 21:01:48 +0000 (UTC) Xref: csiph.com comp.sys.apple2.programmer:1168 For the benefit of all Apple II users, the source code is hereby surrendered into the public domain. I claim no copyright on the source code. Assembler used is Merlin. 1 KBD EQU $C000 2 KBDSTRB EQU $C010 3 SPKR EQU $C030 4 PRBYTE EQU $FDDA 5 PRNTAX EQU $F941 6 DOSWARM EQU $3D0 7 IRQLOC EQU $3FE 8 COUT EQU $FDED 9 VBLINT EQU $09 10 MOUIDLOC1 EQU $05 11 MOUIDLOC2 EQU $07 12 MOUIDLOC3 EQU $0B 13 MOUIDLOC4 EQU $0C 14 MOUIDLOC5 EQU $FB 15 MOUID1 EQU $38 16 MOUID2 EQU $18 17 MOUID3 EQU $01 18 MOUID4 EQU $20 19 MOUID5 EQU $D6 20 BASEADDR EQU $06 ; 2-BYTES FOR INDEXED ADDRESSING 21 MSLOT EQU $08 22 CTR EQU $09 ; IRQ COUNTER 23 ACT EQU $19 ; ACTIVE PROCESS 24 MAXP EQU $06 25 MOUXPOS EQU $1A ; 2 BYTES FOR MOUSE X-POSITION 26 MOUYPOS EQU $1C 27 MOUSTAT EQU $1E 28 CLRTOP EQU $F836 29 SETCOL EQU $F864 30 PLOT EQU $F800 31 SCRN EQU $F871 32 GR EQU $C050 33 MIX EQU $C053 34 RED EQU $01 35 BLUE EQU $02 36 BLACK EQU $00 37 WHITE EQU $0F 38 * 8000: A9 9B 39 LDA #$9B 8002: 20 ED FD 40 JSR COUT 8005: A9 91 41 LDA #$91 ; KILL 80-COLS FIRMWARE 8007: 20 ED FD 42 JSR COUT 800A: A9 14 43 LDA #$14 800C: 85 22 44 STA $22 ; TOP OF TEXT WINDOW 800E: 85 25 45 STA $25 46 * 8010: A9 00 47 FINDMOUSE LDA #$00 8012: 85 06 48 STA BASEADDR 8014: A9 C8 49 LDA #$C8 8016: 85 07 50 STA BASEADDR+1 8018: A2 08 51 LDX #$08 801A: CA 52 :LOOP1 DEX 801B: F0 42 53 BEQ :NOMOUSE 801D: C6 07 54 DEC BASEADDR+1 801F: A0 05 55 LDY #MOUIDLOC1 8021: B1 06 56 LDA (BASEADDR),Y 8023: C9 38 57 CMP #MOUID1 8025: D0 F3 58 BNE :LOOP1 8027: A0 07 59 LDY #MOUIDLOC2 ===== Page 2 ===== 8029: B1 06 60 LDA (BASEADDR),Y 802B: C9 18 61 CMP #MOUID2 802D: D0 EB 62 BNE :LOOP1 802F: A0 0B 63 LDY #MOUIDLOC3 8031: B1 06 64 LDA (BASEADDR),Y 8033: C9 01 65 CMP #MOUID3 8035: D0 E3 66 BNE :LOOP1 8037: A0 0C 67 LDY #MOUIDLOC4 8039: B1 06 68 LDA (BASEADDR),Y 803B: C9 20 69 CMP #MOUID4 803D: D0 DB 70 BNE :LOOP1 803F: A0 FB 71 LDY #MOUIDLOC5 8041: B1 06 72 LDA (BASEADDR),Y 8043: C9 D6 73 CMP #MOUID5 8045: D0 D3 74 BNE :LOOP1 8047: 8A 75 TXA 8048: 0A 76 ASL 8049: 0A 77 ASL 804A: 0A 78 ASL 804B: 0A 79 ASL 804C: 85 08 80 STA MSLOT 804E: A9 8D 81 LDA #$8D 8050: 20 ED FD 82 JSR COUT 8053: 8A 83 TXA 8054: 20 DA FD 84 JSR PRBYTE 8057: A9 8D 85 LDA #$8D 8059: 20 ED FD 86 JSR COUT 805C: 4C 7C 80 87 JMP CREATEALL 805F: A0 00 88 :NOMOUSE LDY #$00 8061: B9 71 80 89 :LOOP LDA NOMOUMSG,Y 8064: F0 08 90 BEQ :DONE 8066: 09 80 91 ORA #$80 8068: 20 ED FD 92 JSR COUT 806B: C8 93 INY 806C: D0 F3 94 BNE :LOOP 806E: 4C D0 03 95 :DONE JMP DOSWARM 8071: 8D CE CF 96 NOMOUMSG HEX 8DCECFA0CDCFD5D3C58D00 8074: A0 CD CF D5 D3 C5 8D 00 97 * 807C: 58 98 CREATEALL CLI 807D: 08 99 PHP 807E: 78 100 SEI 807F: A9 FF 101 LDA #$FF 8081: 8D 00 82 102 STA STKTAB 8084: 85 19 103 STA ACT 8086: A0 16 104 LDY #$16 8088: A9 83 105 LDA #PROC0 808C: 20 9A 80 107 JSR NEWPROC 808F: 20 F1 80 108 JSR VBLON 8092: A9 13 109 LDA #$13 8094: 85 09 110 STA CTR 8096: 28 111 PLP ; ENABLE IRQ 8097: 4C 97 80 112 :IDLE JMP :IDLE 113 * 809A: 08 114 NEWPROC PHP 809B: 78 115 SEI ===== Page 3 ===== 809C: 48 116 PHA 809D: 8A 117 TXA 809E: 48 118 PHA 809F: 98 119 TYA 80A0: 48 120 PHA 80A1: AC 00 82 121 LDY STKTAB 80A4: C8 122 INY ; NEXT PROCESS ID 80A5: F0 04 123 BEQ :CURR ; FIRST PROCESS? 80A7: C0 06 124 CPY #MAXP ; PROCESS LIMIT REACHED? 80A9: F0 45 125 BEQ :DONE 80AB: 8C 00 82 126 :CURR STY STKTAB 80AE: F0 0F 127 BEQ :TSX ; OFFSET FROM CURRENT SP 80B0: 88 128 DEY ; OFFSET FROM LAST PROC SP 80B1: C4 19 129 CPY ACT ; CURRENT PROCESS? 80B3: F0 0A 130 BEQ :TSX 80B5: BE 01 82 131 LDX STKTAB+1,Y 80B8: 8A 132 TXA 80B9: 38 133 SEC 80BA: E9 20 134 SBC #$20 ; NEW PROC SP 80BC: C8 135 INY 80BD: D0 08 136 BNE :STORSP 80BF: BA 137 :TSX TSX 80C0: 8A 138 TXA 80C1: 38 139 SEC 80C2: E9 20 140 SBC #$20 80C4: AC 00 82 141 LDY STKTAB ; RELOAD NEW PROCESS ID 80C7: AA 142 :STORSP TAX 80C8: 99 01 82 143 STA STKTAB+1,Y 80CB: 68 144 PLA ; PROCESS PRIORITY 80CC: 99 07 82 145 STA PRIOTAB,Y 80CF: 68 146 PLA ; HI-BYTE OF START ADDR 80D0: 9D 00 01 147 STA $0100,X 80D3: CA 148 DEX 80D4: 68 149 PLA ; LO-BYTE OF START ADDR 80D5: 9D 00 01 150 STA $0100,X 80D8: A9 00 151 LDA #$00 ; INITIAL PROCESSOR STATUS 80DA: CA 152 DEX 80DB: 9D 00 01 153 STA $0100,X 80DE: CA 154 DEX 80DF: 9D 00 01 155 STA $0100,X ; INITIAL REGISTERS 80E2: CA 156 DEX 80E3: 9D 00 01 157 STA $0100,X 80E6: CA 158 DEX 80E7: 9D 00 01 159 STA $0100,X 80EA: CA 160 DEX 80EB: 8A 161 TXA 80EC: 99 01 82 162 STA STKTAB+1,Y 80EF: 28 163 PLP 80F0: 60 164 :DONE RTS 165 * 80F1: A9 01 166 VBLON LDA #$01 80F3: 20 15 81 167 JSR SETMOUSE 80F6: 20 09 81 168 JSR INITMOUSE 80F9: A9 8B 169 LDA #IRQ 8100: 8D FF 03 172 STA IRQLOC+1 ===== Page 4 ===== 8103: A9 09 173 LDA #VBLINT 8105: 20 15 81 174 JSR SETMOUSE ; TURN ON MOUSE VBL INTERRUPTS 8108: 60 175 RTS 176 * 8109: A0 19 177 INITMOUSE LDY #$19 810B: A9 00 178 LDA #$00 810D: 85 06 179 STA BASEADDR 810F: B1 06 180 LDA (BASEADDR),Y 8111: 85 06 181 STA BASEADDR 8113: D0 3E 182 BNE MOUSEJMP 183 * 8115: A0 12 184 SETMOUSE LDY #$12 8117: AA 185 TAX 8118: A9 00 186 LDA #$00 811A: 85 06 187 STA BASEADDR 811C: B1 06 188 LDA (BASEADDR),Y 811E: 85 06 189 STA BASEADDR 8120: 8A 190 TXA 8121: 10 30 191 BPL MOUSEJMP 192 * 8123: A0 13 193 SERVEMOUSE LDY #$13 8125: A9 00 194 LDA #$00 8127: 85 06 195 STA BASEADDR 8129: B1 06 196 LDA (BASEADDR),Y 812B: 85 06 197 STA BASEADDR 812D: D0 24 198 BNE MOUSEJMP 199 * 812F: AA 200 CLAMPMOUSE TAX 8130: A0 17 201 LDY #$17 8132: A9 00 202 LDA #$00 8134: 85 06 203 STA BASEADDR 8136: B1 06 204 LDA (BASEADDR),Y 8138: 85 06 205 STA BASEADDR 813A: 8A 206 TXA 813B: 10 16 207 BPL MOUSEJMP 208 * 813D: A0 18 209 HOMEMOUSE LDY #$18 813F: A9 00 210 LDA #$00 8141: 85 06 211 STA BASEADDR 8143: B1 06 212 LDA (BASEADDR),Y 8145: 85 06 213 STA BASEADDR 8147: D0 0A 214 BNE MOUSEJMP 215 * 8149: A0 14 216 READMOUSE LDY #$14 814B: A9 00 217 LDA #$00 814D: 85 06 218 STA BASEADDR 814F: B1 06 219 LDA (BASEADDR),Y 8151: 85 06 220 STA BASEADDR 221 * 8153: A6 07 222 MOUSEJMP LDX BASEADDR+1 8155: A4 08 223 LDY MSLOT 8157: 6C 06 00 224 JMP (BASEADDR) 225 * 815A: 08 226 SLEEP PHP 815B: 78 227 SEI 815C: 29 7F 228 AND #$7F 815E: 48 229 PHA ===== Page 5 ===== 815F: 8A 230 TXA 8160: 48 231 PHA 8161: 98 232 TYA 8162: 48 233 PHA 8163: A4 19 234 LDY ACT 8165: BA 235 TSX 8166: E8 236 INX 8167: E8 237 INX 8168: E8 238 INX 8169: BD 00 01 239 LDA $0100,X 816C: 99 0D 82 240 STA SLPTAB,Y 816F: D0 09 241 BNE YIELD2 8171: F0 07 242 BEQ YIELD2 243 * 8173: 08 244 YIELD PHP 8174: 78 245 SEI 8175: 48 246 PHA 8176: 8A 247 TXA 8177: 48 248 PHA 8178: 98 249 TYA 8179: 48 250 PHA 817A: BA 251 YIELD2 TSX ; FIX JSR RETURN FOR RTI 817B: 8A 252 TXA 817C: 18 253 CLC 817D: 69 05 254 ADC #$05 817F: AA 255 TAX 8180: FE 00 01 256 INC $0100,X 8183: D0 47 257 BNE RESETCTR 8185: E8 258 INX 8186: FE 00 01 259 INC $0100,X 8189: D0 41 260 BNE RESETCTR 261 262 * 818B: A5 45 263 IRQ LDA $45 818D: 48 264 PHA 818E: 8A 265 TXA 818F: 48 266 PHA 8190: 98 267 TYA 8191: 48 268 PHA 8192: 20 23 81 269 JSR SERVEMOUSE 8195: B0 63 270 BCS IRQDONE 8197: 20 49 81 271 JSR READMOUSE 819A: A5 07 272 LDA BASEADDR+1 819C: 29 0F 273 AND #$F 819E: AA 274 TAX 819F: BD 78 04 275 LDA $478,X 81A2: 85 1A 276 STA MOUXPOS 81A4: BD F8 04 277 LDA $4F8,X 81A7: 85 1C 278 STA MOUYPOS 81A9: BD 78 05 279 LDA $578,X 81AC: 85 1B 280 STA MOUXPOS+1 81AE: BD F8 05 281 LDA $5F8,X 81B1: 85 1D 282 STA MOUYPOS+1 81B3: BD 78 07 283 LDA $778,X 81B6: 85 1E 284 STA MOUSTAT 81B8: A4 19 285 LDY ACT 81BA: 30 1B 286 BMI IRQNEXT ; BOOTSTRAP INITIAL PROCESS ===== Page 6 ===== 81BC: AD 00 82 287 LDA STKTAB 81BF: F0 39 288 BEQ IRQDONE ; ONLY 1 PROCESS 81C1: A5 09 289 :CTR LDA CTR 81C3: D9 07 82 290 CMP PRIOTAB,Y 81C6: F0 04 291 BEQ RESETCTR 81C8: E6 09 292 INC CTR 81CA: D0 2E 293 BNE IRQDONE 81CC: A9 00 294 RESETCTR LDA #$00 81CE: 85 09 295 STA CTR 81D0: A4 19 296 LDY ACT 81D2: BA 297 TSX 81D3: 8A 298 TXA 81D4: 99 01 82 299 STA STKTAB+1,Y 81D7: C8 300 IRQNEXT INY 81D8: CC 00 82 301 CPY STKTAB 81DB: 90 04 302 BCC :SLEEP 81DD: F0 02 303 BEQ :SLEEP 81DF: A0 00 304 LDY #$00 ; LOOP BACK TO PROCESS 0 81E1: B9 0D 82 305 :SLEEP LDA SLPTAB,Y 81E4: F0 08 306 BEQ :CTXSW ; PROCESS IS NOT ASLEEP 81E6: AA 307 TAX 81E7: CA 308 DEX 81E8: 8A 309 TXA 81E9: 99 0D 82 310 STA SLPTAB,Y 81EC: D0 E9 311 BNE IRQNEXT 81EE: BE 01 82 312 :CTXSW LDX STKTAB+1,Y 81F1: 9A 313 TXS 81F2: 84 19 314 STY ACT 81F4: AD 30 C0 315 LDA SPKR 81F7: AD 30 C0 316 LDA SPKR 81FA: 68 317 IRQDONE PLA 81FB: A8 318 TAY 81FC: 68 319 PLA 81FD: AA 320 TAX 81FE: 68 321 PLA 81FF: 40 322 RTI 323 * 8200: 00 00 00 324 STKTAB DS MAXP+1 8203: 00 00 00 00 8207: 00 00 00 325 PRIOTAB DS MAXP ; PROCESS PRIORITIES TABLE 820A: 00 00 00 820D: 00 00 00 326 SLPTAB DS MAXP ; SLEEPING PROCESSES TABLE 8210: 00 00 00 327 * 8213: A5 1E 328 PROC3 LDA MOUSTAT 8215: 10 17 329 BPL :NEXT 8217: A5 1A 330 LDA MOUXPOS 8219: 08 331 PHP 821A: 78 332 SEI 821B: 20 DA FD 333 JSR PRBYTE 821E: A9 A0 334 LDA #$A0 8220: 20 ED FD 335 JSR COUT 8223: A5 1C 336 LDA MOUYPOS 8225: 20 DA FD 337 JSR PRBYTE 8228: A9 8D 338 LDA #$8D 822A: 20 ED FD 339 JSR COUT 822D: 28 340 PLP ===== Page 7 ===== 822E: 20 73 81 341 :NEXT JSR YIELD 8231: 4C 13 82 342 JMP PROC3 343 * 8234: A2 27 344 PROC2 LDX #$27 8236: A0 27 345 LDY #$27 8238: A9 03 346 LDA #$03 823A: 20 5A 81 347 JSR SLEEP 823D: 08 348 :L1 PHP 823E: 78 349 SEI 823F: A9 02 350 LDA #BLUE 8241: 20 64 F8 351 JSR SETCOL 8244: 8A 352 TXA 8245: 20 00 F8 353 JSR PLOT 8248: 28 354 PLP 8249: 20 73 81 355 JSR YIELD 824C: 88 356 DEY 824D: 10 EE 357 BPL :L1 824F: A0 27 358 LDY #$27 8251: CA 359 DEX 8252: 10 E9 360 BPL :L1 8254: A2 27 361 LDX #$27 8256: D0 E5 362 BNE :L1 363 * 8258: A0 00 364 PROC1 LDY #$00 825A: A2 00 365 LDX #$00 825C: 08 366 :L1 PHP 825D: 78 367 SEI 825E: A9 01 368 LDA #RED 8260: 20 64 F8 369 JSR SETCOL 8263: 8A 370 TXA 8264: 20 00 F8 371 JSR PLOT 8267: 28 372 PLP 8268: 20 73 81 373 JSR YIELD 826B: C8 374 INY 826C: C0 28 375 CPY #$28 826E: D0 EC 376 BNE :L1 8270: A0 00 377 LDY #$00 8272: A9 07 378 LDA #$07 8274: 20 5A 81 379 JSR SLEEP 8277: E8 380 INX 8278: E0 28 381 CPX #$28 827A: D0 E0 382 BNE :L1 827C: A2 00 383 LDX #$00 827E: F0 DC 384 BEQ :L1 8280: 4C 58 82 385 JMP PROC1 386 * 8283: 08 387 PROC0 PHP 8284: 78 388 SEI 8285: A9 00 389 LDA #$00 8287: A2 27 390 LDX #$27 ; MAX X CLAMP 8289: 8D 78 04 391 STA $478 828C: 8E F8 04 392 STX $4F8 828F: 8D 78 05 393 STA $578 8292: 8D F8 05 394 STA $5F8 8295: 20 2F 81 395 JSR CLAMPMOUSE 8298: A0 00 396 LDY #$00 829A: A9 01 397 LDA #$01 ===== Page 8 ===== 829C: A2 27 398 LDX #$27 829E: 8C 78 04 399 STY $478 82A1: 8E F8 04 400 STX $4F8 82A4: 8C 78 05 401 STY $578 82A7: 8C F8 05 402 STY $5F8 82AA: 20 2F 81 403 JSR CLAMPMOUSE 82AD: 20 3D 81 404 JSR HOMEMOUSE 82B0: 28 405 PLP 82B1: AD 53 C0 406 LDA MIX 82B4: AD 50 C0 407 LDA GR 82B7: 08 408 PHP 82B8: 78 409 SEI 82B9: 20 36 F8 410 JSR CLRTOP 82BC: 28 411 PLP 82BD: A0 0B 412 LDY #$0B ; PROCESS PRIORITY 82BF: A9 58 413 LDA #PROC1 82C3: 20 9A 80 415 JSR NEWPROC 82C6: A0 06 416 LDY #$06 82C8: A9 34 417 LDA #PROC2 82CC: 20 9A 80 419 JSR NEWPROC 82CF: A0 0B 420 LDY #$0B 82D1: A9 13 421 LDA #PROC3 82D5: 20 9A 80 423 JSR NEWPROC 82D8: 2C 00 C0 424 :NEXT BIT KBD 82DB: 30 16 425 BMI :CLRIT 82DD: 08 426 PHP 82DE: 78 427 SEI 82DF: A5 1E 428 LDA MOUSTAT ; CHECK BUTTON STATUS 82E1: 10 0C 429 BPL :PULL 82E3: A9 0F 430 LDA #WHITE 82E5: 20 64 F8 431 JSR SETCOL 82E8: A5 1C 432 LDA MOUYPOS 82EA: A4 1A 433 LDY MOUXPOS 82EC: 20 00 F8 434 JSR PLOT 82EF: 28 435 :PULL PLP 82F0: 4C D8 82 436 JMP :NEXT 82F3: 2C 10 C0 437 :CLRIT BIT KBDSTRB 82F6: A0 00 438 LDY #$00 82F8: A2 00 439 LDX #$00 82FA: 8A 440 :L1 TXA 82FB: 08 441 PHP 82FC: 78 442 SEI 82FD: 20 71 F8 443 JSR SCRN 8300: 28 444 PLP 8301: 48 445 PHA 8302: 68 446 PLA 8303: C9 0F 447 CMP #WHITE 8305: D0 0C 448 BNE :L2 8307: A9 00 449 LDA #BLACK 8309: 08 450 PHP 830A: 78 451 SEI 830B: 20 64 F8 452 JSR SETCOL 830E: 8A 453 TXA ; VERTICAL POSITION IN A-REG 830F: 20 00 F8 454 JSR PLOT ===== Page 9 ===== 8312: 28 455 PLP 8313: C8 456 :L2 INY 8314: C0 28 457 CPY #$28 8316: D0 E2 458 BNE :L1 8318: A0 00 459 LDY #$00 831A: E8 460 INX 831B: E0 28 461 CPX #$28 831D: D0 DB 462 BNE :L1 831F: A0 00 463 LDY #$00 8321: B9 34 83 464 :MSGL LDA CLRMSG,Y 8324: F0 0B 465 BEQ :MSGDONE 8326: 09 80 466 ORA #$80 8328: 08 467 PHP 8329: 78 468 SEI 832A: 20 ED FD 469 JSR COUT 832D: 28 470 PLP 832E: C8 471 INY 832F: D0 F0 472 BNE :MSGL 8331: 4C D8 82 473 :MSGDONE JMP :NEXT 8334: 43 4C 45 474 CLRMSG ASC B4CLEARB4 8337: 41 52 8339: 8D 00 475 HEX 8D00 --End assembly, 827 bytes, Errors: 0 Symbol table - alphabetical order: ACT =$19 BASEADDR=$06 BLACK =$00 BLUE =$02 CLAMPMOUSE=$812F CLRMSG =$8334 CLRTOP =$F836 COUT =$FDED CREATEALL=$807C CTR =$09 DOSWARM =$03D0 ? FINDMOUSE=$8010 GR =$C050 HOMEMOUSE=$813D INITMOUSE=$8109 IRQ =$818B IRQDONE =$81FA IRQLOC =$03FE IRQNEXT =$81D7 KBD =$C000 KBDSTRB =$C010 MAXP =$06 MIX =$C053 MOUID1 =$38 MOUID2 =$18 MOUID3 =$01 MOUID4 =$20 MOUID5 =$D6 MOUIDLOC1=$05 MOUIDLOC2=$07 MOUIDLOC3=$0B MOUIDLOC4=$0C MOUIDLOC5=$FB MOUSEJMP=$8153 MOUSTAT =$1E MOUXPOS =$1A MOUYPOS =$1C MSLOT =$08 NEWPROC =$809A NOMOUMSG=$8071 PLOT =$F800 PRBYTE =$FDDA PRIOTAB =$8207 ? PRNTAX =$F941 PROC0 =$8283 PROC1 =$8258 PROC2 =$8234 PROC3 =$8213 READMOUSE=$8149 RED =$01 RESETCTR=$81CC SCRN =$F871 SERVEMOUSE=$8123 SETCOL =$F864 SETMOUSE=$8115 SLEEP =$815A SLPTAB =$820D SPKR =$C030 STKTAB =$8200 VBLINT =$09 VBLON =$80F1 WHITE =$0F YIELD =$8173 YIELD2 =$817A Symbol table - numerical order: BLACK =$00 MOUID3 =$01 RED =$01 BLUE =$02 MOUIDLOC1=$05 BASEADDR=$06 MAXP =$06 MOUIDLOC2=$07 MSLOT =$08 VBLINT =$09 CTR =$09 MOUIDLOC3=$0B MOUIDLOC4=$0C WHITE =$0F MOUID2 =$18 ACT =$19 MOUXPOS =$1A MOUYPOS =$1C MOUSTAT =$1E MOUID4 =$20 MOUID1 =$38 MOUID5 =$D6 MOUIDLOC5=$FB DOSWARM =$03D0 IRQLOC =$03FE ? FINDMOUSE=$8010 NOMOUMSG=$8071 CREATEALL=$807C ===== Page 10 ===== NEWPROC =$809A VBLON =$80F1 INITMOUSE=$8109 SETMOUSE=$8115 SERVEMOUSE=$8123 CLAMPMOUSE=$812F HOMEMOUSE=$813D READMOUSE=$8149 MOUSEJMP=$8153 SLEEP =$815A YIELD =$8173 YIELD2 =$817A IRQ =$818B RESETCTR=$81CC IRQNEXT =$81D7 IRQDONE =$81FA STKTAB =$8200 PRIOTAB =$8207 SLPTAB =$820D PROC3 =$8213 PROC2 =$8234 PROC1 =$8258 PROC0 =$8283 CLRMSG =$8334 KBD =$C000 KBDSTRB =$C010 SPKR =$C030 GR =$C050 MIX =$C053 PLOT =$F800 CLRTOP =$F836 SETCOL =$F864 SCRN =$F871 ? PRNTAX =$F941 PRBYTE =$FDDA COUT =$FDED