1 REM ------------------------------- 2 REM LIST SCROLL AND LINE RULE 3 REM SCROLL.S 4 REM ------------------------------- 10 OPEN 2,8,1,"0:SCROLL.OBJ" 12 REM OPEN 4,4 14 SYS 700 16 .OPT O2 18 ;--- 20 MSGFLG = 157 ;RUN MODE 22 LSTX = 197 ;LAST KEYPRESS 24 BLNSW = 204 ;BLINK SW 26 GDBLN = 206 28 BLNON = 207 30 TBLX = 214 ;LINE# 32 LDTB1 = 217 ;SCREEN LINE LINKS 34 TXCADR = 646 ;COL FOR TEXT 36 GDCOL = 647 38 LSTSHF = 654 ;LAST SHIFT 40 ;--- 42 *= $9D00 ;INSTALL ADDRESS 44 JMP LISTUP ;SCROLL UP 46 JMP LISTDN ;SCROLL DOWN 48 JMP LRULE ;LINE RULER 50 JMP LRKILL ;KILL LINE RULER 52 ; 54 ;VECTOR TAB FOR BACKGROUND RTNS 56 ;SET UP BY PROFILE PROGRAM 58 BRSTART *= *+3 ;START INT RTN 60 BREND *= *+3 ;END INT RTN 62 PPSTART *= *+3 ;START PARALLEL RTN 64 PPEXCL *= *+3 ;RUN EXCLUSIVE 66 PPSHARE *= *+3 ;RUN SHARED 68 PPEND *= *+3 ;END PARALLEL RTN 70 RESCUR *= *+3 ;RESET CURSOR 72 BGWORK *= *+15 ;REMAINING JMPS 74 ; 76 ;------------------------ 78 ;THE LIST SCROLL ROUTINES 80 ; 82 ;RUN TIME VARIABLES 84 SKEY = BGWORK 86 SSHF = SKEY+1 88 SAVEL = SSHF+1 90 SAVEX = SAVEL+1 92 SAVEC = SAVEX+1 94 SAVEV = SAVEC+2 96 FIRST1 = SAVEV+2 98 FIRST2 = FIRST1+1 100 ; 102 ;---ENTRY FROM INTERRUPT 104 LISTUP = * ;SCROLL UP 106 JSR LISTON 108 LUP JSR LISTIN 110 JSR LSTUP 112 JSR LISTOUT 114 BEQ LUP 116 BNE LEXIT 118 ; 120 ;---ENTRY FROM INTERRUPT 122 LISTDN = * ;SCROLL DOWN 124 JSR LISTON 126 LDN JSR LISTIN 128 LDA #24 130 STA $D6 132 JSR $E56C 134 JSR LSTDN 136 JSR LISTOUT 138 BEQ LDN 140 LEXIT JMP PPEND 142 ; 144 ;---INITIATE PARALLEL PROGRAM 146 LISTON = * ;COMMON POINT FOR UP/DN 148 STY SKEY ;SAVE ENTRY KEY 150 STX SSHF ;...AND SHIFT VALUE 152 LDA #$FF 154 STA FIRST1 156 STA FIRST2 158 PLA ;RET ADDR=START OF PARALLEL PRG 160 CLC 162 ADC #1 164 TAX ;LOW BYTE 166 PLA 168 ADC #0 170 TAY ;HIGH BYTE 172 JMP PPSTART ;START PARALLEL PROGRAM 174 ; 176 ;---LIST UP 178 LSTUP = * 180 LDX #$FF 182 LU04 INX 184 CPX #25 ;ALL LINES 186 BEQ LU12 188 LDA $D9,X 190 BPL LU04 ;LINKED 192 JSR GNUM ;GET NUM 194 BCC LU04 ;NONE 196 BCS LU16 198 ; 200 LU12 LDA #$FF ;HIGH LINE NUM 202 STA $14 204 STA $15 206 LU16 JSR $A613 ;FIND LINE 208 LDY $5F ;LO BYT 210 CPX $2C ;HI BYT 212 BNE LU20 214 CPY $2B ;WITH START 216 BNE LU20 218 RTS ;NO PREV LINES 220 ; 222 LU20 DEX ;LOWER 224 CPX $2C ;..THAN START 226 BCS LU24 228 LDX $2C ;CORRECT 230 LDY $2B 232 DEY 234 LU24 STX $40 236 STY $3F 238 LDY #0 ;SEARCH FOR 240 LU28 LDA ($3F),Y 242 BEQ LU36 ;END OF LINE 244 LU32 INY 246 BNE LU28 248 RTS ;NO MORE 250 ; 252 LU36 INY ;CHK 254 LDA ($3F),Y ;LINK LO 256 CMP $5F 258 BNE LU32 ;NO MATCH 260 INY 262 LDA ($3F),Y ;CHK 264 CMP $60 ;LINK HI 266 BNE LU32 268 DEY 270 TYA ;MAKE MATCH 272 CLC 274 ADC $3F 276 STA $5F 278 LDA $40 280 ADC #0 282 STA $60 284 LDX #24 ;CHK LAST LINE 286 LDA $D9,X 288 BMI LU40 ;NOT LINKED 290 LDX #23 ;2ND LAST 292 JSR $E9FF ;ERASE 294 LU40 LDX #0 ;TO SCRL DWN 296 JSR $E968 298 LDA $D9 300 ORA #$80 ;FIX UP LINK 302 STA $D9 304 LDA #39 ;AND LENGTH 306 STA $D5 308 LDX #1 ;SET INSRT 310 STX $292 312 DEX 314 STX $D6 ;HOME 316 JSR $E9F0 ;POSITION 318 JMP LIST 320 ; 322 ;---LIST DOWN 324 LSTDN = * 326 LDX #25 328 LD04 DEX 330 BMI LD08 ;ALL LINES 332 LDA $D9,X 334 BPL LD04 ;LINKED 336 JSR GNUM ;GET LINE NUM 338 BCC LD04 ;NONE 340 BCS LD16 342 ; 344 LD08 LDA #$FF ;SET 346 STA $14 ;..FOR 348 STA $15 ;..1ST LINE 350 LD12 PHA ;SAVE A BYTE 352 BNE LD30 354 LD16 CPX #24 ;LAST 356 BNE LD20 358 LD18 LDA #$0D ;RET CHAR 360 BNE LD12 362 LD20 CPX #23 ;2ND LAST 364 BNE LD24 366 INX 368 LDA $D9,X 370 BPL LD18 372 LD24 LDA #$FF 374 BNE LD12 376 LD30 INC $14 ;LNUM 378 BNE LD32 380 INC $15 382 LD32 JSR $A613 ;FIND LINE 384 LDA $DA ;2ND LINE 386 BMI LD36 ;NOT LINKED 388 ORA #$80 ;UNLINK IT 390 STA $DA 392 LDX #1 394 JSR $E9FF ;ERASE LINE 396 LD36 LDX #24 ;LAST LINE 398 STX $D6 ;CURS ROW 400 JSR $E9F0 ;SET CURS 402 PLA 404 BMI LIST 406 JSR $FFD2 ;PRINT RET 408 ; 410 ;--- 412 LIST = * 414 LDY #1 416 LDA ($5F),Y 418 BEQ LS24 420 STA SAVEL 422 LDA #0 424 STA ($5F),Y ;TO FOOL LIST 426 STY $F ;LIST QOTE FLG 428 LDA $5F 430 STA $3F 432 LDA $60 434 STA $40 436 LDA #$FF ;TO MAX 438 STA $14 440 STA $15 442 JMP $A6D7 ;INTO LIST 444 ; 446 ;--- 448 LSERV =* ;ERR VEC ENTRY 450 CPX #$0B ;ERR FROM 452 BEQ LS32 ;..EVAL FXD PT 454 LDA SAVEL ;RESTORE 456 LDY #1 458 STA ($3F),Y 460 LS24 LDA #$0D ;RET 462 JSR $FFD2 464 RTS ;END 466 ; 468 LS32 PLA:PLA 470 PLA:PLA ;CLR RTSS 472 JMP LS24 474 ; 476 ;--- 478 GNUM = * ;GET LINE NUM 480 JSR $E9F0 ;SET LINE START ADDR 482 LDY #$FF 484 GN10 INY 486 LDA ($D1),Y 488 CPY #39 490 BEQ GN20+1 ;END OF LINE 492 CMP #$20 494 BEQ GN10 496 CMP #$30 498 BCC GN20+1 500 CMP #$3A 502 BCS GN20+1 504 TYA 506 CLC 508 ADC $D1 510 STA $7A 512 LDA $D2 514 ADC #0 516 STA $7B 518 JSR $79 ;CHR(null)T 520 STX SAVEX 522 JSR $A96B ;EVAL NUM TO BINARY 524 LDX SAVEX 526 SEC 528 GN20 BIT $18 530 RTS 532 ; 534 ;--- 536 LISTIN = * 538 SEI 540 ; 542 SERV = * ;SET ERR VECT 544 LDA $300 546 STA SAVEV 548 LDA $301 550 STA SAVEV+1 552 LDA #LSERV 558 STA $301 560 ; 562 SCUR = * ;SAVE CURSOR 564 JSR RESCUR ;RESET CURSOR 566 LDA #255 ;SET BLINK OFF 568 STA BLNSW 570 LDA $D6 572 STA SAVEC 574 LDA $D3 576 STA SAVEC+1 578 LDA #0 580 STA $D3 ;COLUMN 582 CLI 584 JSR PPEXCL ;RUN EXCLUSIVELY 586 RTS 588 ; 590 ;--- 592 LISTOUT = * 594 SEI 596 LDA #0 598 STA $292 ;CLR SCROLL 600 ; 602 RERV = * ;RST ERR VECT 604 LDA SAVEV 606 STA $300 608 LDA SAVEV+1 610 STA $301 612 ; 614 RCUR = * ;RST CURSOR 616 LDA #0 ;SET BLINK ON 618 STA BLNSW 620 LDX SAVEC 622 STX $D6 624 LDA SAVEC+1 626 STA $D3 628 SEC 630 SBC #40 632 BCC RCU10 ;NOT ON 2ND 634 STA $D3 636 RCU10 JSR $E56C ;FIX CURS 638 ; 640 GETKEY = * 642 CLI 644 LDY SKEY 646 LDX SSHF 648 CPY LSTX 650 BNE GK40 652 CPX LSTSHF 654 GK40 RTS 656 ; 658 ;---NOT USED: SAME AS RESCUR 660 RCURS = * ;RESET CURSOR 662 LDA BLNON ;CHECK BLINK 664 BEQ RC10 666 LDA GDBLN ;ORIG CHAR 668 LDX GDCOL ;ORIG COLR 670 LDY #0 672 STY BLNON ;CLEAR BLINK 674 JSR $EA13 ;RESET BLINK 676 RC10 RTS 678 ; 680 ;************************* 682 ; 684 ;BASIC LINE RULER ROUTINE 686 ; 688 SPRT = 832 ;SPRITE DATA AREA 690 SPR = 53248 ;SPRITE REGISTER 692 SCR = 2040 ;SPRITE VARIABLES 694 LRSPYL = BGWORK+13 696 LRSPYC = BGWORK+14 698 ; 700 LRULE = * ;ENTRY FROM INTERRUPT 702 LDX #RULER 706 JSR BRSTART ;START BACKGROUND RTN 708 BNE LR30 ;RESOURCE IS USED! 710 ; 712 LDA #0;MAKE SPRITE 714 STA LRSPYL 716 STA LRSPYC 718 LDX #$3F 720 LR10 STA SPRT,X 722 DEX 724 BPL LR10 726 LDX #2 728 LDA #$FF 730 LR12 STA SPRT,X 732 DEX 734 BPL LR12 736 LDX #2 738 LR14 STA SPRT+27,X 740 DEX 742 BPL LR14 744 ; 746 LDX #6 748 LDA #13 750 LR20 STA SCR,X ;PTRS 752 DEX 754 BPL LR20 756 LDA TXCADR 758 JSR LR50 ;COLOR 760 LDA #$60 762 STA SPR+16 ;MSB X 764 SEC 766 LDA #216 768 LDX #8 770 LR24 STA SPR,X ;X POS 772 SBC #48 774 DEX 776 DEX 778 BPL LR24 780 LDA #8 782 STA SPR+10 ;S5 X 784 LDA #56 786 STA SPR+12 ;S6 X 788 LDA #$7F 790 STA SPR+29 ;EXP X 792 STA SPR+21 ;ENABLE 794 LDX #25 796 STX LRSPYL 798 LR30 RTS 800 ; 802 ;---KILL LINE RULE 804 LRKILL = * 806 LDA #0 808 STA SPR+21 ;DSABL 810 JMP BREND ;FINISH 812 ; 814 ;--- 816 RULER = * 818 BIT MSGFLG ;RUN 820 BPL LRKILL 822 ; 824 LR40 = * ;POSITION 826 JSR LRCOLR 828 LDX TBLX 830 CPX LRSPYL 832 BEQ LR30 834 STX LRSPYL 836 LDA LDTB1,X 838 BMI LR42 840 DEX 842 LR42 TXA 844 ASL A 846 ASL A 848 ASL A 850 CLC 852 ADC #49 854 LDX #12 856 LR44 STA SPR+1,X ;Y POS 858 DEX 860 DEX 862 BPL LR44 864 LDA #0 866 LDX #40 868 CPX $D5 ;MAX 870 BCS LR46 872 LDA #$7F 874 LR46 STA SPR+23 ;Y EXP 876 JMP LR30 878 ; 880 ;--- 882 LRCOLR = * 884 LDA TXCADR 886 CMP LRSPYC 888 BEQ LR58 890 LR50 STA LRSPYC 892 LDX #6 894 LR52 STA SPR+39,X ;COLOR 896 DEX 898 BPL LR52 900 LR58 RTS 902 ; 904 .END