1 ORG $7200 2 OBJ $800 3 ; 4 ;------>>> MOD18 5 ; 6 NLS 7 SHAPE EQU $8200 8 REGCH EQU $900 9 COMPUT EQU $1E60 10 BELL EQU $FBDD 11 CPT EPZ $06 12 CPTH EPZ $07 13 Z1E EPZ $1E 14 Z1F EPZ $1F 15 ; 16 JMP START 17 ; 18 XALPHA HEX 00 19 XCHAR HEX 00 20 SHX HEX 00 21 TEMP HEX 00000000000000000000 22 STASH HEX 0000000000000000 23 ; 24 START LDA COMPUT 25 CMP #$04 26 BNE COMTOP 27 STA $C00C 28 LDA $C029 29 ORA #$20 30 STA $C029 31 LDA $C05E 32 COMTOP LDA XALPHA 33 BMI CT2 34 BNE CT1 35 JSR BANNER 36 JMP CT2 37 CT1 JSR FDDIS 38 CT2 LDA #$8D 39 JSR PRMON 40 JSR FDEND 41 JSR CHTL0A 42 SEC 43 LDA CHTH 44 SBC /SHAPE 45 STA CHTH 46 LDA CHTH 47 JSR $FDDA 48 LDA CHTL 49 JSR $FDDA 50 LDA #$20 51 JSR PRMON 52 LDA '$ 53 JSR PRMON 54 JSR CHARIN 55 ORA #$60 56 CMP #$66 57 BEQ FIND0 58 CMP #$61 59 BEQ ALDIS0 60 CMP #$71 61 BEQ QUIT 62 CMP #$78 63 BEQ MVTS0 64 CMP #$79 65 BEQ MVST0 66 CMP #$73 67 BEQ SAVE0 68 CMP #$6C 69 BEQ LIST0 70 CMP #$68 71 BEQ HEX0 72 CMP #$72 73 BEQ ROW0 74 CMP #$64 75 BEQ DELET0 76 CMP #$69 77 BEQ INSER0 78 CMP #$6E 79 BEQ NAME0 80 ; 81 ERROR1 LDA #$00 82 STA XALPHA 83 ERROR JSR BELL 84 JMP COMTOP 85 QUIT RTS 86 FIND0 JMP FIND 87 ALDIS0 JMP ALDIS 88 SAVE0 JMP SAVE 89 LIST0 JMP LIST 90 MVTS0 JMP MVTS 91 ROW0 JMP ROW 92 DELET0 JMP DELET 93 INSER0 JMP INSER 94 NAME0 JMP NAME 95 HEX0 JMP HEX 96 MVST0 JMP MVST 97 FIND JSR INALCH 98 JSR LOCATE 99 BCC ERROR1 100 FINDX JSR FDTEMP 101 JMP COMTOP 102 INSER JSR INALCH 103 JSR LOCATE 104 BCS FINDX 105 JSR FDEND 106 LDY #$13 107 LDA #$FF 108 WT STA (CHTL),Y 109 DEY 110 BPL WT 111 LDY #$07 112 LDA #$00 113 WR STA (CHTL),Y 114 DEY 115 BPL WR 116 LDY #$08 117 LDA XALPHA 118 STA (CHTL),Y 119 INY 120 LDA XCHAR 121 STA (CHTL),Y 122 JSR FDTEMP 123 JMP COMTOP 124 FDEND JSR SETAL 125 FELP LDY #$08 126 LDA (CHTL),Y 127 CMP #$FF 128 BEQ FEFIN 129 JSR CHTL0A 130 JMP FELP 131 FEFIN RTS 132 NAME LDA XALPHA 133 BPL NAME2 134 NAME1 JMP ERROR 135 NAME2 BEQ NAME1 136 JSR INALCH 137 JSR LOCATE 138 BCS NAME1 139 LDY #$08 140 LDA XALPHA 141 STA (Z1E),Y 142 INY 143 LDA XCHAR 144 STA (Z1E),Y 145 JMP COMTOP 146 DELET LDA XALPHA 147 BPL DELET2 148 DELET1 JMP ERROR 149 DELET2 BEQ DELET1 150 LDA #$20 151 JSR PRMON 152 LDA '? 153 JSR PRMON 154 JSR CHARIN 155 CMP #$79 156 BNE DELET1 157 JSR LOCATE 158 DELLP LDY #$13 159 DELLP0 LDA (CHTL),Y 160 STA TEMP-$0A,Y 161 DEY 162 CPY #$09 163 BNE DELLP0 164 LDY #$09 165 DELLP1 LDA TEMP,Y 166 STA (CHTL),Y 167 DEY 168 BPL DELLP1 169 LDA TEMP+$8 170 CMP #$FF 171 BEQ DELFIN 172 JSR CHTL0A 173 JMP DELLP 174 DELFIN LDA #$00 175 STA XALPHA 176 STA XCHAR 177 JMP COMTOP 178 INALCH LDA #$20 179 JSR PRMON 180 LDA #$41 181 JSR PRMON 182 LDA ': 183 JSR PRMON 184 JSR CHARIN 185 STA XALPHA 186 STA WALF 187 LDA #$20 188 JSR PRMON 189 LDA 'C 190 JSR PRMON 191 LDA ': 192 JSR PRMON 193 JSR CHARIN 194 STA XCHAR 195 STA WCHAR 196 RTS 197 FDTEMP LDY #$07 198 FDT LDA (CHTL),Y 199 STA TEMP,Y 200 DEY 201 BPL FDT 202 LDA CHTL 203 STA Z1E 204 LDA CHTH 205 STA Z1F 206 RTS 207 FDDIS LDA XALPHA 208 STA ST 209 STA ST+5 210 LDA #$20 211 STA ST+1 212 STA ST+3 213 STA ST+7 214 STA ST+9 215 LDA XCHAR 216 STA ST+2 217 STA ST+6 218 LDA #$60 219 STA ST+4 220 LDA #$14 221 STA ST+8 222 LDA #$13 223 STA ST+10 224 LDA #$0D 225 STA ST+11 226 JSR DOTS 227 JSR DISPLY 228 RTS 229 ALDIS LDA #$20 230 JSR PRMON 231 LDA 'A 232 JSR PRMON 233 LDA ': 234 JSR PRMON 235 JSR CHARIN 236 STA WALF 237 LDX #$00 238 JSR SETAL 239 ALDLP LDY #$08 240 LDA (CHTL),Y 241 CMP #$FF 242 BEQ ALDFIN 243 CMP WALF 244 BNE ALDON 245 INY 246 LDA (CHTL),Y 247 STA ST,X 248 INX 249 TXA 250 AND #$1F 251 BNE ALDON 252 LDA #$0D 253 STA ST,X 254 INX 255 ALDON JSR CHTL0A 256 JMP ALDLP 257 ALDFIN STA ST,X 258 JSR DISPLY 259 LDA #$FF 260 STA XALPHA 261 JMP COMTOP 262 ; 263 BANNER LDY #$00 264 BN1 LDA BNLIT,Y 265 BEQ BN00 266 STA ST,Y 267 INY 268 BNE BN1 269 BN00 JSR DISPLY 270 RTS 271 BNLIT ASC 'Legal commands are:' 272 HEX 0D0D 273 ASC 'a d f h i l n q r s x y' 274 HEX FF00 275 MVST LDY #$07 276 MV1 LDA STASH,Y 277 STA TEMP,Y 278 DEY 279 BPL MV1 280 JMP COMTOP 281 MVTS LDY #$07 282 MV2 LDA TEMP,Y 283 STA STASH,Y 284 DEY 285 BPL MV2 286 JMP COMTOP 287 SAVE LDA XALPHA 288 BPL SAVE11 289 SAVE1 JMP ERROR 290 SAVE11 BEQ SAVE1 291 LDY #$07 292 MV3 LDA TEMP,Y 293 STA (Z1E),Y 294 DEY 295 BPL MV3 296 JMP COMTOP 297 LIST LDX #$00 298 STX SHX 299 LDA #$FF 300 STA ST 301 JSR SETAL 302 LISTLP LDY #$08 303 LDA (CHTL),Y 304 CMP #$FF 305 BEQ LISTFN 306 LDX SHX 307 LPIN CMP ST,X 308 BEQ LISTON 309 DEX 310 BPL LPIN 311 LDX SHX 312 STA ST,X 313 INX 314 LDA #$FF 315 STA ST,X 316 STX SHX 317 LISTON JSR CHTL0A 318 JMP LISTLP 319 LISTFN JSR DISPLY 320 LDA #$FF 321 STA XALPHA 322 JMP COMTOP 323 DOTS LDX #$0C 324 LDY #$00 325 STY SHX 326 DOT1 LDY SHX 327 CPY #$08 328 BEQ DOTFIN 329 LDA #$0D 330 STA ST,X 331 INX 332 LDA TEMP,Y 333 LDY #$06 334 DOT3 LSR 335 PHA 336 LDA '0 337 BCC DOT2 338 LDA '1 339 DOT2 STA ST,X 340 INX 341 PLA 342 DEY 343 BPL DOT3 344 LSR 345 LDA 'N 346 BCC DOT4 347 LDA 'T 348 DOT4 STA ST,X 349 INX 350 INC SHX 351 JMP DOT1 352 DOTFIN LDA #$FF 353 STA ST,X 354 RTS 355 HEX LDA #$00 356 STA LPCH 357 HEX1 LDA #$0D 358 JSR PRMON 359 LDA LPCH 360 JSR $FDDA 361 LDA ': 362 JSR PRMON 363 JSR EROW 364 BCC HEX1 365 LDY LPCH 366 STA TEMP,Y 367 INC LPCH 368 LDA LPCH 369 CMP #$08 370 BNE HEX1 371 JMP COMTOP 372 ROW LDA #$20 373 JSR PRMON 374 LDA ': 375 JSR PRMON 376 JSR CHARIN 377 CMP #$30 378 BCC ROWER 379 CMP #$38 380 BCS ROWER 381 AND #$07 382 STA LPCH 383 LDA #$20 384 JSR PRMON 385 LDA ': 386 JSR PRMON 387 JSR EROW 388 BCC ROWER 389 LDY LPCH 390 STA TEMP,Y 391 JMP COMTOP 392 ROWER JSR BELL 393 JMP COMTOP 394 EROW LDA #$00 395 STA SHX 396 STA QZ 397 SHLP JSR CHARIN 398 CMP '0 399 CLC 400 BEQ SHIN 401 CMP '1 402 SEC 403 BEQ SHIN 404 SHIN2 JSR BELL 405 CLC 406 RTS 407 SHIN ROR QZ 408 INC SHX 409 LDX SHX 410 CPX #$07 411 BNE SHLP 412 JSR CHARIN 413 CMP #$6E 414 CLC 415 BEQ SHIN1 416 CMP #$74 417 SEC 418 BNE SHIN2 419 SHIN1 ROR QZ 420 LDA QZ 421 SEC 422 RTS 423 ; 424 ; 425 ; 426 LLEN HEX 28 427 HBASL EPZ $08 428 HBASH EPZ $09 429 CHTL EPZ $1A 430 CHTH EPZ $1B 431 WALF HEX 00 432 WCHAR HEX 00 433 LEVL HEX 00 434 LSPBF HEX 0000 435 PSX HEX 00 436 QZ HEX 00 437 PSY HEX 00 438 FLAG HEX 00 439 LPCH HEX 00 440 BUF1 HEX 0000000000000000 441 ; 442 PRMON ORA #$80 443 JMP $FDED 444 DISPLY JSR CLEAR 445 DISPL0 JSR SETUP 446 LDA #$00 447 STA FLAG 448 STA LEVL 449 JSR DOIT 450 LDA #$80 451 STA FLAG 452 JSR SETUP 453 JSR DOIT 454 RTS 455 SETUP LDA #ST 456 STA CPT 457 LDA /ST 458 STA CPTH 459 LDA #$00 460 STA PSX 461 LDA #$08 462 STA PSY 463 RTS 464 DOIT LDY #$00 465 LDA (CPT),Y 466 CMP #$FF 467 BEQ FINXX 468 JSR DOCHAR 469 JMP DOIT 470 FINXX RTS 471 DOCHAR LDX FLAG 472 BEQ DOCK 473 JSR PRINT 474 JSR HDPSXY 475 JSR INCPT 476 RTS 477 DOCK JSR HDPSXY 478 JSR FINDBR 479 JSR INCPT 480 RTS 481 CLEAR LDY #$00 482 STY HBASL 483 LDA #$20 484 STA HBASH 485 PXZ LDA #$00 486 STA (HBASL),Y 487 INY 488 BNE PXZ 489 INC HBASH 490 LDA HBASH 491 AND #$1F 492 BNE PXZ 493 RTS 494 YADD PHA 495 AND #$C0 496 STA HBASL 497 LSR 498 LSR 499 ORA HBASL 500 STA HBASL 501 PLA 502 STA HBASH 503 ASL 504 ASL 505 ASL 506 ROL HBASH 507 ASL 508 ROL HBASH 509 ASL 510 ROR HBASL 511 LDA HBASH 512 AND #$1F 513 ORA #$20 ;HR PAGE 1 514 STA HBASH 515 RTS 516 PRINT JSR FDCHAR 517 JMP CHPLOT 518 FDCS LDA #STASH 519 STA CHTL 520 LDA /STASH 521 STA CHTH 522 SEC 523 RTS 524 FDCT LDA #TEMP 525 STA CHTL 526 LDA /TEMP 527 STA CHTH 528 RTS 529 ; 530 FDCHAR CMP #$60 531 BEQ FDSPCH 532 CMP #$13 533 BEQ FDCS 534 CMP #$14 535 BEQ FDCT 536 LDY #REGCH 537 STY CHTH 538 SEC 539 SBC #$20 540 BPL FD2 541 LDA #$00 542 FD2 ASL 543 ASL 544 ROL CHTH 545 ASL 546 ROL CHTH 547 STA CHTL 548 CLC 549 LDA CHTH 550 ADC /REGCH 551 STA CHTH 552 RTS 553 FDSPCH LDY #$01 554 LDA (CPT),Y 555 STA WALF 556 INY 557 LDA (CPT),Y 558 STA WCHAR 559 LDA WALF 560 CMP #$6C 561 BEQ PLEVEL 562 CMP #$71 563 BEQ BACK 564 LOCATE JSR SETAL 565 LDA WALF 566 CMP '* 567 BNE SPLP 568 LDA WCHAR 569 JSR FDCHAR 570 SEC 571 RTS 572 SPLP LDY #$08 573 LDA (CHTL),Y 574 CMP #$FF 575 BEQ FD0 576 CMP WALF 577 BNE QS2 578 INY 579 LDA (CHTL),Y 580 CMP WCHAR 581 BNE QS2 582 SEC 583 RTS 584 FD0 CLC 585 RTS 586 QS2 JSR CHTL0A 587 JMP SPLP 588 PLEVEL SEC 589 LDA WCHAR 590 SBC #$6D 591 STA WCHAR 592 CLC 593 LDA PSY 594 ADC LEVL 595 SEC 596 SBC WCHAR 597 STA PSY 598 LDA WCHAR 599 STA LEVL 600 PLA 601 PLA 602 RTS 603 BACK PLA 604 PLA 605 RTS 606 HRG LDA #$00 607 STA $C054 608 STA $C057 609 STA $C050 610 STA $C052 611 RTS 612 CHPLOT LDY #$00 613 STY LPCH 614 TOP LDA (CHTL),Y 615 PHA 616 CLC 617 LDA PSY 618 ADC LPCH 619 JSR YADD 620 LDY PSX 621 PLA 622 STA (HBASL),Y 623 INC LPCH 624 LDY LPCH 625 CPY #$08 626 BNE TOP 627 RTS 628 INCPT LDY #$00 629 LDA (CPT),Y 630 INY 631 CMP #$60 632 BNE IC1 633 LDY #$03 634 IC1 TYA 635 CLC 636 ADC CPT 637 STA CPT 638 BCC IC2 639 INC CPTH 640 IC2 RTS 641 FINDBR LDY #$00 642 LDA (CPT),Y 643 CMP #$20 644 BNE FS0 645 LDA LEVL 646 BNE FS0 647 LDA CPT 648 STA LSPBF 649 LDA CPTH 650 STA LSPBF+1 651 FS0 LDA LLEN 652 CMP PSX 653 BCS CH0 654 LDA LSPBF 655 STA CPT 656 LDA LSPBF+1 657 STA CPTH 658 LDY #$00 659 LDA #$0D 660 STA (CPT),Y 661 JSR HDPSXY 662 CH0 RTS 663 HDPSXY LDY #$00 664 LDA (CPT),Y 665 CMP #$0D 666 BEQ CR 667 CMP #$60 668 BEQ HDSPCH 669 INC PSX 670 RTS 671 CR LDA #$00 672 STA PSX 673 CLC 674 LDA PSY 675 ADC #$08 676 STA PSY 677 RTS 678 HDSPCH INY 679 LDA (CPT),Y 680 CMP #$71 681 BEQ HDBACK 682 CMP #$6C 683 BEQ HDLEV 684 INC PSX 685 RTS 686 HDBACK DEC PSX 687 HDLEV RTS 688 LASTCH HEX 00 689 CHARIN LDA $C000 690 BPL CHARIN 691 AND #$7F 692 LDX $C010 693 STA LASTCH 694 DISP CMP #$20 695 BCC DISP0 696 ORA #$80 697 DS9 JSR $FDF0 698 DISP0 LDA LASTCH 699 RTS 700 ; 701 CHTL0A CLC 702 LDA CHTL 703 ADC #$0A 704 STA CHTL 705 BCC CH1 706 INC CHTH 707 CH1 RTS 708 SETAL LDA #SHAPE+$100 709 STA CHTL 710 LDA /SHAPE+$100 711 STA CHTH 712 RTS 713 ; 714 XX HEX 00 715 ; 716 ST DFS $100 717 ; 718 END