1 **************************** 2 * * 3 * MUSYS: * 4 * A MULTIUSER/MULTITASKING * 5 * ELKSYSTEM * 6 * * 7 * (C) COPYRIGHT 1983 BY * 8 * RICHARD SKRENTA * 9 * ALL RIGHTS RESERVED * 10 * * 11 **************************** 12 JOBNO EQU $00 13 PCOUNT EQU $01 14 JOBPTR EQU $02 15 INBUF EQU $04 16 OUTBUF EQU $06 17 PRSEBUF EQU $08 18 SYSMEM EQU $0A 19 JOBMEM EQU $0C 20 LOMEM EQU $0E 21 TEMP EQU $10 22 * 23 REGS EQU $45 24 X1 EQU $D0 25 X2 EQU $D2 26 X3 EQU $D4 27 X4 EQU $D6 28 X5 EQU $D8 29 X6 EQU $DA 30 X7 EQU $DC 31 X8 EQU $DE 32 PTR0 EQU $E0 33 PTR1 EQU $E2 34 PTR2 EQU $E4 35 PTR3 EQU $E6 36 PTR4 EQU $E8 37 T1 EQU $F0 38 T2 EQU $F2 39 T3 EQU $F4 40 T4 EQU $F6 41 T5 EQU $F8 42 T6 EQU $FA 43 T7 EQU $FC 44 T8 EQU $FE 45 * 46 JSTATUS EQU 0 47 JPRIORTY EQU 1 48 JPCOUNT EQU 2 49 JECHO EQU 3 50 JINDEV EQU 4 51 JOUTDEV EQU 5 52 JPROG EQU 6 53 JREGS EQU 8 54 JCCOUNT EQU 13 55 JCTRLC EQU 14 56 JINP1 EQU 16 57 JINP2 EQU 17 58 JOUTP1 EQU 18 59 JOUTP2 EQU 19 60 JPRSEP1 EQU 20 61 JPRSEP2 EQU 21 62 JNAME EQU 22 63 JUSERID EQU 30 64 JACCOUNT EQU 38 65 JPROMPT EQU 42 66 JPAUSE EQU 54 67 JSUSP EQU 55 68 JVAR EQU 56 69 JINTX EQU 105 70 JINTZ EQU 107 71 JCOLUMN EQU 109 72 JTIME EQU 110 73 JPRMPT EQU 116 74 JRUNSTAT EQU 128 75 * 76 HOME EQU $FC58 77 * 78 SYSRUN EQU $300 79 SUBJOB EQU SYSRUN+1 80 Q1 EQU SYSRUN+2 81 Q2 EQU SYSRUN+3 82 QS EQU SYSRUN+4 83 QM EQU SYSRUN+5 84 QH EQU SYSRUN+6 85 QD EQU SYSRUN+7 86 QMN EQU SYSRUN+8 87 QY EQU SYSRUN+9 88 K1 EQU SYSRUN+10 89 K2 EQU SYSRUN+11 90 MAXJOBS EQU SYSRUN+18 91 SUBPROG EQU SYSRUN+19 92 SYSLOG EQU SYSRUN+20 93 * 94 DEVICE EQU $900 95 DEVIN EQU DEVICE+3 96 DEVOUT EQU DEVICE+6 97 OPEN EQU DEVICE+9 98 CLOSE EQU DEVICE+12 99 EXEC EQU DEVICE+15 100 DEVSTAT EQU DEVICE+18 101 BUFP1 EQU DEVICE+82 102 BUFP2 EQU DEVICE+99 103 * 104 ORG $8000 105 MUSYS JMP INIT 106 JMP SETJOB 107 JMP CYCLE 108 JMP DOCYCLE 109 JMP PRTINC 110 JMP TIME 111 JMP IN 112 JMP OUT 113 JMP RESUME 114 JMP INTER 115 JMP PROMPT 116 JMP NAME 117 JMP READLN 118 JMP LEADIN 119 JMP DELIM 120 JMP PARNUM 121 JMP LISTCMD 122 JMP PARSE 123 JMP CMD 124 JMP PROGRAM 125 JMP SLEEP 126 JMP TAB 127 JMP PRINT 128 JMP PUSH 129 JMP RESET 130 JMP PULL 131 JMP DECPRT 132 JMP DEC 133 JMP ZERO 134 JMP TIMPRT 135 JMP CREATE 136 JMP ATTACH 137 JMP SYSIO 138 JMP EXEC0 139 JMP DAYPRT 140 JMP BEGIN 141 JMP KILL 142 * 143 COUT ORA #$80 144 JSR $FDED 145 RTS 146 * 147 SETJOB LDA JOBNO 148 ASL 149 ASL 150 ASL 151 CLC 152 ADC LOMEM+1 153 TAY 154 STY JOBPTR+1 155 INY 156 STY INBUF+1 157 INY 158 STY OUTBUF+1 159 INY 160 STY PRSEBUF+1 161 INY 162 STY SYSMEM+1 163 INY 164 STY JOBMEM+1 165 LDY #0 166 STY JOBPTR 167 STY INBUF 168 STY OUTBUF 169 STY PRSEBUF 170 STY SYSMEM 171 STY JOBMEM 172 RTS 173 * 174 CYCLE INC JOBNO 175 LDA JOBNO 176 CMP MAXJOBS 177 BNE CYCLE2 178 LDA #$FF 179 STA JOBNO 180 BNE CYCLE 181 CYCLE2 JSR SETJOB 182 RTS 183 * 184 DOCYCLE JSR CYCLE 185 LDY #JSTATUS 186 LDA (JOBPTR),Y 187 BEQ DOCYC2 188 LDY #JPAUSE 189 LDA (JOBPTR),Y 190 BEQ DOCYC4 191 JSR RESUME 192 BCS DOCYC2 193 LDY #JPCOUNT 194 LDA PCOUNT 195 STA (JOBPTR),Y 196 LDY #JPAUSE 197 LDA #0 198 STA (JOBPTR),Y 199 DOCYC4 LDY #JPCOUNT 200 LDA (JOBPTR),Y 201 CMP PCOUNT 202 BNE DOCYC2 203 DOCYC3 CLC 204 RTS 205 DOCYC2 SEC 206 RTS 207 * 208 PRTINC LDY #JPCOUNT 209 LDA (JOBPTR),Y 210 LDY #JPRIORTY 211 CLC 212 ADC (JOBPTR),Y 213 LDY #JPCOUNT 214 STA (JOBPTR),Y 215 RTS 216 * 217 TIME LDY #0 218 TIME3 LDA Q1,Y 219 CLC 220 ADC #1 221 STA Q1,Y 222 CMP K1,Y 223 BCS TIME2 224 RTS 225 TIME2 LDA #0 226 STA Q1,Y 227 INY 228 CPY #7 229 BNE TIME3 230 RTS 231 * 232 * IN ROUTINE CHECKS FOR INPUT 233 * DATA AT INPUT DEVICE OF CURRENT 234 * JOB AND PUSHES IT ONTO THE FIFO 235 * IF VALID 236 * 237 IN LDY #JINDEV 238 LDA (JOBPTR),Y 239 TAY 240 JSR DEVIN 241 BCS IN2 242 PHA 243 LDY #JINP1 244 LDA (JOBPTR),Y 245 TAY 246 PLA 247 STA (INBUF),Y 248 TYA 249 LDY #JINP2 250 CLC 251 ADC #1 252 CMP (JOBPTR),Y 253 BEQ IN2 254 LDY #JINP1 255 STA (JOBPTR),Y 256 IN2 RTS 257 * 258 * OUT ROUTINE CHECKS FOR DATA 259 * IN FIFO OUTPUT BUFFER AND 260 * SENDS IT TO OUTPUT DEVICE 261 * 262 OUT LDY #JOUTP2 263 LDA (JOBPTR),Y 264 LDY #JOUTP1 265 CMP (JOBPTR),Y 266 BEQ OUT2 267 LDY #JOUTP2 268 CLC 269 ADC #1 270 STA (JOBPTR),Y 271 LDY #JSUSP 272 LDA (JOBPTR),Y 273 BNE OUT2 274 LDY #JOUTP2 275 LDA (JOBPTR),Y 276 TAY 277 DEY 278 LDA (OUTBUF),Y 279 PHA 280 LDY #JOUTDEV 281 LDA (JOBPTR),Y 282 TAY 283 PLA 284 JSR DEVOUT 285 BCC OUT2 286 LDY #JOUTP2 287 LDA (JOBPTR),Y 288 SEC 289 SBC #1 290 STA (JOBPTR),Y 291 OUT2 RTS 292 * 293 RESUME LDY #JINDEV 294 LDA (JOBPTR),Y 295 TAY 296 JSR DEVIN 297 BCS RESUME2 298 CMP #17 299 BEQ RESUME3 300 CMP #3 301 BEQ RESUME4 302 SEC 303 RESUME2 RTS 304 RESUME3 CLC 305 RTS 306 RESUME4 JSR INTC 307 SEC 308 RTS 309 * 310 INTER LDY #JINP1 311 LDA (JOBPTR),Y 312 LDY #JINP2 313 CMP (JOBPTR),Y 314 BEQ INTER3 315 TAY 316 DEY 317 LDA (INBUF),Y 318 LDY #7 319 INTER1 CMP INTTBL-1,Y 320 BEQ INTER2 321 DEY 322 BNE INTER1 323 RTS 324 INTER2 DEY 325 TYA 326 ASL 327 TAY 328 LDA INTJMP,Y 329 STA PTR1 330 INY 331 LDA INTJMP,Y 332 STA PTR1+1 333 JMP (PTR1) 334 INTTBL DFB 3,20,15 335 DFB 19,17,24 336 DFB 26,0 337 INTJMP DFB #INTC 338 DFB #INTT 339 DFB #INTO 340 DFB #INTS 341 DFB #INTQ 342 DFB #INTX 343 DFB #INTZ 344 INTER3 RTS 345 INTC LDY #JCCOUNT 346 LDA (JOBPTR),Y 347 CLC 348 ADC #1 349 STA (JOBPTR),Y 350 CMP #2 351 BCS INTC2 352 JSR PULL 353 RTS 354 INTC2 LDA #0 355 STA (JOBPTR),Y 356 LDY #JCTRLC 357 LDA (JOBPTR),Y 358 PHA 359 INY 360 LDA (JOBPTR),Y 361 BNE INTC3 362 PLA 363 JSR PULL 364 JSR PRINT 365 ASC '?NO CTRL-C VECTOR' 366 DFB $8D,0 367 RTS 368 INTC3 LDY #JPROG+1 369 STA (JOBPTR),Y 370 DEY 371 PLA 372 STA (JOBPTR),Y 373 JSR RESET 374 LDA #0 375 LDY #JSUSP 376 STA (JOBPTR),Y 377 LDY #JPAUSE 378 STA (JOBPTR),Y 379 LDY #JCTRLC 380 LDA (JOBPTR),Y 381 PHA 382 INY 383 LDA (JOBPTR),Y 384 LDY #JPROG+1 385 STA (JOBPTR),Y 386 DEY 387 PLA 388 STA (JOBPTR),Y 389 LDY #JPCOUNT 390 LDA PCOUNT 391 CLC 392 ADC #1 393 STA (JOBPTR),Y 394 JSR PRINT 395 ASC '^C' 396 DFB $8D,0 397 RTS 398 INTO JSR PULL 399 LDY #JSUSP 400 LDA (JOBPTR),Y 401 EOR #1 402 STA (JOBPTR),Y 403 LDA #0 404 LDY #JOUTP1 405 STA (JOBPTR),Y 406 LDY #JOUTP2 407 STA (JOBPTR),Y 408 RTS 409 INTT JSR PULL 410 JSR PRINT 411 DFB 91,0 412 LDA #QD 414 JSR DAYPRT 415 LDA #QS 417 JSR TIMPRT 418 JSR PRINT 419 ASC ' JOB ' 420 DFB 0 421 LDA #0 422 STA T1+1 423 LDA JOBNO 424 STA T1 425 JSR DECPRT 426 JSR PRINT 427 ASC ' ON DEV (' 428 DFB 0 429 LDY #JINDEV 430 LDA (JOBPTR),Y 431 STA T1 432 JSR DECPRT 433 LDA #'/' 434 JSR PUSH 435 LDY #JOUTDEV 436 LDA (JOBPTR),Y 437 STA T1 438 JSR DECPRT 439 JSR PRINT 440 ASC ') S' 441 DFB 0 442 LDY #JSTATUS 443 LDA (JOBPTR),Y 444 STA T1 445 JSR DECPRT 446 JSR PRINT 447 ASC ' P' 448 DFB 0 449 LDY #JPRIORTY 450 LDA (JOBPTR),Y 451 STA T1 452 JSR DECPRT 453 JSR PRINT 454 ASC ' R' 455 DFB 0 456 LDY #JRUNSTAT 457 LDA (JOBPTR),Y 458 STA T1 459 JSR DECPRT 460 JSR PRINT 461 ASC '; RUNNING IN ' 462 DFB 0 463 LDY #JNAME 464 STY T1 465 INTT3 LDY T1 466 LDA (JOBPTR),Y 467 BEQ INTT2 468 JSR PUSH 469 INC T1 470 JMP INTT3 471 INTT2 JSR PRINT 472 ASC ' AT ' 473 DFB 0 474 LDY #JPROG 475 LDA (JOBPTR),Y 476 STA T1 477 INY 478 LDA (JOBPTR),Y 479 STA T1+1 480 JSR DECPRT 481 LDA #93 482 JSR PUSH 483 LDA #13 484 JSR PUSH 485 RTS 486 INTS JSR PULL 487 LDY #JPAUSE 488 LDA #1 489 STA (JOBPTR),Y 490 RTS 491 INTQ JSR PULL 492 LDY #JPAUSE 493 LDA #0 494 STA (JOBPTR),Y 495 RTS 496 INTX LDY #JINTX 497 LDA (JOBPTR),Y 498 PHA 499 INY 500 LDA (JOBPTR),Y 501 BNE INTX2 502 PLA 503 RTS 504 INTX2 LDY #JPROG+1 505 STA (JOBPTR),Y 506 DEY 507 PLA 508 STA (JOBPTR),Y 509 JSR PULL 510 RTS 511 INTZ LDY #JINTZ 512 LDA (JOBPTR),Y 513 PHA 514 INY 515 LDA (JOBPTR),Y 516 BNE INTZ2 517 PLA 518 RTS 519 INTZ2 LDY #JPROG+1 520 STA (JOBPTR),Y 521 DEY 522 PLA 523 STA (JOBPTR),Y 524 JSR PULL 525 RTS 526 * 527 PROMPT PLA 528 STA PTR1 529 PLA 530 STA PTR1+1 531 LDX #0 532 LDY #JPROMPT 533 PROMPT3 INC PTR1 534 BNE PROMPT2 535 INC PTR1+1 536 PROMPT2 LDA (PTR1,X) 537 STA (JOBPTR),Y 538 INY 539 CMP #0 540 BNE PROMPT3 541 LDA PTR1+1 542 PHA 543 LDA PTR1 544 PHA 545 RTS 546 * 547 NAME PLA 548 STA PTR1 549 PLA 550 STA PTR1+1 551 LDX #0 552 LDY #JNAME 553 NAME3 INC PTR1 554 BNE NAME2 555 INC PTR1+1 556 NAME2 LDA (PTR1,X) 557 STA (JOBPTR),Y 558 INY 559 CMP #0 560 BNE NAME3 561 LDA PTR1+1 562 PHA 563 LDA PTR1 564 PHA 565 RTS 566 * 567 READLN LDA #0 568 LDY #JPRSEP1 569 STA (JOBPTR),Y 570 LDY #JPRSEP2 571 STA (JOBPTR),Y 572 LDY #JSUSP 573 STA (JOBPTR),Y 574 READLN0 LDY #JPROMPT 575 STY T1 576 READ3 LDY T1 577 LDA (JOBPTR),Y 578 BEQ READ10 579 INY 580 STY T1 581 JSR PUSH 582 JMP READ3 583 READ10 LDY #0 584 STY T2 585 LDY #JPRSEP1 586 LDA (JOBPTR),Y 587 STA T1 588 READ11 LDY T2 589 CPY T1 590 BEQ READ2 591 LDA (PRSEBUF),Y 592 JSR PUSH 593 INC T2 594 JMP READ11 595 READ2 JSR SLEEP 596 LDY #JCCOUNT 597 LDA (JOBPTR),Y 598 BEQ READ8 599 JMP READC 600 READ8 JSR PULL 601 BCS READ2 602 PHA 603 LDY #JSUSP 604 LDA #0 605 STA (JOBPTR),Y 606 PLA 607 LDY #8 608 READ5 CMP READTBL-1,Y 609 BEQ READ4 610 DEY 611 BNE READ5 612 READ7 PHA 613 LDY #JPRSEP1 614 LDA (JOBPTR),Y 615 CLC 616 ADC #5 617 LDY #JPRSEP2 618 CMP (JOBPTR),Y 619 BEQ READ9 620 LDY #JPRSEP1 621 LDA (JOBPTR),Y 622 CLC 623 ADC #1 624 STA (JOBPTR),Y 625 TAY 626 DEY 627 PLA 628 STA (PRSEBUF),Y 629 PHA 630 LDY #JECHO 631 LDA (JOBPTR),Y 632 BEQ READ12 633 PLA 634 JMP READ2 635 READ12 PLA 636 CMP #32 637 BCS READ6 638 PHA 639 LDA #'^' 640 JSR PUSH 641 PLA 642 ORA #%01000000 643 READ6 JSR PUSH 644 JMP READ2 645 READ9 PLA 646 LDA #7 647 JSR PUSH 648 JMP READ2 649 READ4 DEY 650 TYA 651 ASL 652 TAY 653 LDA RDTBL,Y 654 STA PTR1 655 INY 656 LDA RDTBL,Y 657 STA PTR1+1 658 JMP (PTR1) 659 READM LDA #13 660 JSR PUSH 661 RTS 662 READC LDY #JOUTP1 663 LDA (JOBPTR),Y 664 LDY #JOUTP2 665 CMP (JOBPTR),Y 666 BEQ READC2 667 JMP READ2 668 READC2 JSR RESET 669 JSR PRINT 670 ASC '^C' 671 DFB $8D,0 672 LDY #JCCOUNT 673 LDA #0 674 STA (JOBPTR),Y 675 LDY #JCTRLC 676 LDA (JOBPTR),Y 677 STA PTR1 678 INY 679 LDA (JOBPTR),Y 680 STA PTR1+1 681 JMP (PTR1) 682 READH LDY #JPRSEP1 683 LDA (JOBPTR),Y 684 BNE READH2 685 LDA #13 686 JSR PUSH 687 JMP READLN 688 READH2 SEC 689 SBC #1 690 STA (JOBPTR),Y 691 TAY 692 LDA (PRSEBUF),Y 693 CMP #32 694 BCS READH3 695 LDA #8 696 JSR PUSH 697 READH3 JSR PRINT 698 DFB 8,32,8,0 699 JMP READ2 700 READE LDA #'$' 701 JMP READ7 702 READL LDA #12 703 JSR PUSH 704 JMP READLN0 705 READU LDA #' ' 706 JMP READ7 707 READR LDA #13 708 JSR PUSH 709 JMP READLN0 710 READTBL DFB 13,3,8 711 DFB 27,127,12 712 DFB 21,18 713 * 714 * M,C,H,ESC, 715 * 716 RDTBL DFB #READM 717 DFB #READC 718 DFB #READH 719 DFB #READE 720 DFB #READH 721 DFB #READL 722 DFB #READU 723 DFB #READR 724 * 725 LEADIN LDY #JPRSEP1 726 LDA (JOBPTR),Y 727 STA T1 728 LDY #JPRSEP2 729 LDA (JOBPTR),Y 730 TAY 731 LEADIN3 LDA (PRSEBUF),Y 732 CPY T1 733 BEQ LEADIN2 734 JSR DELIM 735 BCS LEADIN2 736 INY 737 JMP LEADIN3 738 LEADIN2 TYA 739 LDY #JPRSEP2 740 STA (JOBPTR),Y 741 RTS 742 * 743 DELIM LDX #0 744 STA T7 745 DELIM4 LDA DELTBL,X 746 BEQ DELIM2 747 CMP T7 748 BEQ DELIM3 749 INX 750 JMP DELIM4 751 DELIM2 SEC 752 LDA T7 753 RTS 754 DELIM3 CLC 755 LDA T7 756 RTS 757 DELTBL ASC ' "(),./:;=<>' 758 DFB 0 759 * 760 PARNUM JSR LEADIN 761 LDY #JPRSEP2 762 LDA (JOBPTR),Y 763 STA T1 764 LDY #JPRSEP1 765 LDA (JOBPTR),Y 766 STA T2 767 LDA #0 768 STA T5 769 STA T3 770 STA T3+1 771 LDA T1 772 CMP T2 773 BNE PARNUM3 774 SEC 775 RTS 776 PARNUM3 LDY T1 777 CPY T2 778 BEQ PARNUM2 779 LDA (PRSEBUF),Y 780 JSR DELIM 781 BCC PARNUM2 782 CMP #'?' 783 BNE PARNUM5 784 JSR PRINT 785 ASC '(NUMERICAL ARGUMENT EXPECTED)' 786 DFB $8D,0 787 RTS 788 PARNUM5 CMP #'0' 789 BCC PARNUM2 790 CMP #':' 791 BCS PARNUM2 792 SEC 793 SBC #'0' 794 PHA 795 LDA T3 796 STA T4 797 LDA T3+1 798 STA T4+1 799 ASL T3 800 ROL T3+1 801 ASL T3 802 ROL T3+1 803 ASL T3 804 ROL T3+1 805 ASL T4 806 ROL T4+1 807 LDA T3 808 CLC 809 ADC T4 810 STA T3 811 LDA T3+1 812 ADC T4+1 813 STA T3+1 814 PLA 815 CLC 816 ADC T3 817 STA T3 818 LDA #0 819 ADC T3+1 820 STA T3+1 821 LDA #1 822 STA T5 823 INC T1 824 JMP PARNUM3 825 PARNUM2 LDY #JPRSEP2 826 LDA T1 827 STA (JOBPTR),Y 828 LDA T5 829 BNE PARNUM4 830 SEC 831 RTS 832 PARNUM4 CLC 833 RTS 834 * 835 LISTCMD JSR PRINT 836 ASC 'OPTION, ONE OF THE FOLLOWING:' 837 DFB $8D,$8D,0 838 LDA #0 839 STA T2 840 LDX #0 841 LISTCMD3 LDA (PTR3,X) 842 BEQ LISTCMD2 843 JSR PUSH 844 INC PTR3 845 BNE LISTCMD5 846 INC PTR3+1 847 LISTCMD5 JMP LISTCMD3 848 LISTCMD2 JSR SLEEP 849 INC T2 850 LDA T2 851 CMP #3 852 BNE LISTCMD6 853 LDA #0 854 STA T2 855 LDA #13 856 JSR PUSH 857 JMP LISTCMD7 858 LISTCMD6 TAY 859 LDA LISTTAB,Y 860 JSR TAB 861 LISTCMD7 LDA (PTR3,X) 862 BNE LISTCMD3 863 INC PTR3 864 BNE LISTCMD4 865 INC PTR3+1 866 LISTCMD4 LDA (PTR3,X) 867 BNE LISTCMD3 868 LDA #13 869 JSR PUSH 870 LDA T2 871 BEQ LISTCMD8 872 LDA #13 873 JSR PUSH 874 LISTCMD8 SEC 875 RTS 876 LISTTAB DFB 0,13,26 877 * 878 PARSE JSR LEADIN 879 LDY #JPRSEP1 880 LDA (JOBPTR),Y 881 LDY #JPRSEP2 882 CMP (JOBPTR),Y 883 BNE PARSE0 884 CLC 885 RTS 886 PARSE0 LDX #0 887 STX T1 888 STX T2 889 LDA PTR3 890 STA PTR4 891 LDA PTR3+1 892 STA PTR4+1 893 PARSE3 LDY #JPRSEP2 894 LDA (JOBPTR),Y 895 STA T3 896 LDY #JPRSEP1 897 LDA (JOBPTR),Y 898 STA T4 899 PARSE5 LDY T3 900 LDA (PRSEBUF),Y 901 JSR SLEEP 902 CPY T4 903 BEQ PARSE1 904 CMP #'!' 905 BEQ PARSE19 906 CMP #'?' 907 BNE PARSE14 908 JMP LISTCMD 909 PARSE14 JSR DELIM 910 LDX #0 911 BCC PARSE1 912 STA T5 913 LDA (PTR4,X) 914 BEQ PARSE2 915 CMP T5 916 BNE PARSE2 917 INC T3 918 INC PTR4 919 BNE PARSE4 920 INC PTR4+1 921 PARSE4 JMP PARSE5 922 PARSE1 INC T1 923 LDA T2 924 STA T6 925 LDA T3 926 STA T8 927 LDA (PTR4,X) 928 BEQ PARSE11 929 PARSE2 INC T2 930 PARSE8 LDA (PTR4,X) 931 BEQ PARSE6 932 INC PTR4 933 BNE PARSE7 934 INC PTR4+1 935 PARSE7 JMP PARSE8 936 PARSE6 INC PTR4 937 BNE PARSE9 938 INC PTR4+1 939 PARSE9 LDA (PTR4,X) 940 BEQ PARSE12 941 JMP PARSE3 942 PARSE12 LDA T1 943 BNE PARSE10 944 JSR PRINT 945 ASC '?UNRECOGNIZED COMMAND-KEYWORD NOT FOUND' 946 DFB $8D,0 947 SEC 948 PARSE19 RTS 949 PARSE10 CMP #2 950 BCC PARSE11 951 JSR PRINT 952 ASC '?UNRECOGINIZED COMMAND-AMBIGUOUS' 953 DFB $8D,0 954 SEC 955 RTS 956 PARSE11 LDA T6 957 ASL 958 ASL 959 TAY 960 LDA (PTR2),Y 961 STA PTR1 962 INY 963 LDA (PTR2),Y 964 STA PTR1+1 965 INY 966 LDA (PTR2),Y 967 LDY #JSTATUS 968 CMP (JOBPTR),Y 969 BCC PARSE18 970 JMP PARSE13 971 PARSE18 CMP #50 972 BCC PARSE15 973 JSR PRINT 974 ASC '?LOGIN PLEASE' 975 DFB $8D,0 976 SEC 977 RTS 978 PARSE15 CMP #10 979 BCC PARSE16 980 JSR PRINT 981 ASC '?PRIVILEGED STATUS REQUIRED' 982 DFB $8D,0 983 SEC 984 RTS 985 PARSE16 CMP #1 986 BEQ PARSE17 987 JSR PRINT 988 ASC '?WHEEL OR OPERATOR CAPABILITY REQUIRED' 989 DFB $8D,0 990 SEC 991 RTS 992 PARSE17 JSR PRINT 993 ASC '?OPERATOR CAPABILITY REQUIRED' 994 DFB $8D,0 995 SEC 996 RTS 997 PARSE13 LDY #JPRSEP2 998 LDA T8 999 STA (JOBPTR),Y 1000 JMP (PTR1) 1001 * 1002 CMD PLA 1003 STA PTR1 1004 PLA 1005 STA PTR1+1 1006 LDY #1 1007 LDA (PTR1),Y 1008 STA PTR3 1009 INY 1010 LDA (PTR1),Y 1011 STA PTR3+1 1012 INY 1013 LDA (PTR1),Y 1014 STA PTR2 1015 INY 1016 LDA (PTR1),Y 1017 STA PTR2+1 1018 TYA 1019 CLC 1020 ADC PTR1 1021 STA PTR1 1022 LDA #0 1023 ADC PTR1+1 1024 PHA 1025 LDA PTR1 1026 PHA 1027 RTS 1028 * 1029 PROGRAM LDX #0 1030 LDY #JREGS 1031 PROG2 LDA (JOBPTR),Y 1032 STA REGS,X 1033 INY 1034 INX 1035 CPX #5 1036 BNE PROG2 1037 LDX #0 1038 LDY #JVAR 1039 PROG4 LDA (JOBPTR),Y 1040 STA X1,X 1041 INY 1042 INX 1043 CPX #$30 1044 BNE PROG4 1045 LDY #JPROG 1046 LDA (JOBPTR),Y 1047 STA TEMP 1048 INY 1049 LDA (JOBPTR),Y 1050 STA TEMP+1 1051 LDY #0 1052 PROG3 LDA (SYSMEM),Y 1053 STA $100,Y 1054 DEY 1055 BNE PROG3 1056 LDY $47 1057 LDX $49 1058 TXS 1059 LDX $46 1060 LDA $48 1061 PHA 1062 LDA $45 1063 PLP 1064 JMP (TEMP) 1065 * 1066 SLEEP STA REGS 1067 PLA 1068 STA TEMP 1069 PLA 1070 STA TEMP+1 1071 LDA REGS 1072 STA $45 1073 STX $46 1074 STY $47 1075 PHP 1076 PLA 1077 STA $48 1078 TSX 1079 STX $49 1080 INC TEMP 1081 BNE SLEEP4 1082 INC TEMP+1 1083 SLEEP4 LDY #JPROG 1084 LDA TEMP 1085 STA (JOBPTR),Y 1086 INY 1087 LDA TEMP+1 1088 STA (JOBPTR),Y 1089 LDX #0 1090 LDY #JREGS 1091 SLEEP3 LDA REGS,X 1092 STA (JOBPTR),Y 1093 INY 1094 INX 1095 CPX #5 1096 BNE SLEEP3 1097 LDX #0 1098 LDY #JVAR 1099 SLEEP5 LDA X1,X 1100 STA (JOBPTR),Y 1101 INY 1102 INX 1103 CPX #$30 1104 BNE SLEEP5 1105 LDY #0 1106 SLEEP2 LDA $100,Y 1107 STA (SYSMEM),Y 1108 DEY 1109 BNE SLEEP2 1110 PLA 1111 PLA 1112 JMP LOOP3 1113 * 1114 TAB STA T1 1115 LDY #JCOLUMN 1116 LDA (JOBPTR),Y 1117 CMP T1 1118 BCS TAB3 1119 LDA T1 1120 SEC 1121 SBC (JOBPTR),Y 1122 STA T1 1123 INC T1 1124 TAB2 LDA #' ' 1125 JSR PUSH 1126 DEC T1 1127 BNE TAB2 1128 TAB3 RTS 1129 * 1130 PRINT PLA 1131 STA PTR0 1132 PLA 1133 STA PTR0+1 1134 PRINT1 INC PTR0 1135 BNE PRINT2 1136 INC PTR0+1 1137 PRINT2 LDY #0 1138 LDA (PTR0),Y 1139 CMP #0 1140 BEQ PRINT3 1141 JSR PUSH 1142 JMP PRINT1 1143 PRINT3 LDA PTR0+1 1144 PHA 1145 LDA PTR0 1146 PHA 1147 RTS 1148 * 1149 PUSH AND #$7F 1150 CMP #10 1151 BEQ PUSH6 1152 PUSH0 PHA 1153 LDY #JCOLUMN 1154 CMP #13 1155 BNE PUSH3 1156 LDA #0 1157 STA (JOBPTR),Y 1158 JMP PUSH1 1159 PUSH3 LDA (JOBPTR),Y 1160 CLC 1161 ADC #1 1162 STA (JOBPTR),Y 1163 PUSH1 LDY #JOUTP1 1164 LDA (JOBPTR),Y 1165 LDY #JOUTP2 1166 CLC 1167 ADC #1 1168 CMP (JOBPTR),Y 1169 BNE PUSH2 1170 LDA SUBJOB 1171 CMP SUBPROG 1172 BNE PUSH5 1173 JSR SLEEP 1174 JMP PUSH1 1175 PUSH5 PLA 1176 RTS 1177 PUSH2 LDY #JOUTP1 1178 STA (JOBPTR),Y 1179 TAY 1180 DEY 1181 PLA 1182 STA (OUTBUF),Y 1183 CMP #13 1184 BNE PUSH6 1185 LDA #10 1186 JMP PUSH0 1187 PUSH6 RTS 1188 * 1189 RESET LDA #0 1190 LDY #JINP1 1191 STA (JOBPTR),Y 1192 LDY #JINP2 1193 STA (JOBPTR),Y 1194 LDY #JOUTP1 1195 STA (JOBPTR),Y 1196 LDY #JOUTP2 1197 STA (JOBPTR),Y 1198 RTS 1199 * 1200 PULL LDY #JINP2 1201 LDA (JOBPTR),Y 1202 LDY #JINP1 1203 CMP (JOBPTR),Y 1204 BEQ PULL2 1205 LDY #JINP2 1206 CLC 1207 ADC #1 1208 STA (JOBPTR),Y 1209 TAY 1210 DEY 1211 LDA (INBUF),Y 1212 CLC 1213 RTS 1214 PULL2 SEC 1215 RTS 1216 * 1217 DECPRT JSR DEC 1218 LDX #$FF 1219 DECPRT3 INX 1220 CPX #4 1221 BEQ DECPRT2 1222 LDA DECOUT,X 1223 CMP #'0' 1224 BEQ DECPRT3 1225 DECPRT2 LDA DECOUT,X 1226 JSR PUSH 1227 INX 1228 CPX #5 1229 BNE DECPRT2 1230 RTS 1231 * 1232 DEC LDA #5 1233 STA T2 1234 LDA #DECOUT 1237 STA PTR1+1 1238 LDY #0 1239 DEC1 LDA #'0' 1240 STA T3 1241 DEC2 LDA T1 1242 SEC 1243 SBC DECTBL,Y 1244 TAX 1245 LDA T1+1 1246 SBC DECTBL+1,Y 1247 BCC DEC3 1248 STA T1+1 1249 STX T1 1250 INC T3 1251 BNE DEC2 1252 DEC3 LDX #0 1253 LDA T3 1254 STA (PTR1,X) 1255 INC PTR1 1256 BNE DEC4 1257 INC PTR1+1 1258 DEC4 INY 1259 INY 1260 DEC T2 1261 BNE DEC1 1262 RTS 1263 DECTBL DFB #<10000,#>10000 1264 DFB #<1000,#>1000 1265 DFB #<100,#>100 1266 DFB #<10,#>10 1267 DFB #<1,#>1 1268 DECOUT DS 5 1269 * 1270 ZERO LDY #0 1271 TYA 1272 ZERO2 STA (JOBPTR),Y 1273 DEY 1274 BNE ZERO2 1275 RTS 1276 * 1277 TIMPRT STA PTR2 1278 STY PTR2+1 1279 LDA #' ' 1280 JSR PUSH 1281 LDA #2 1282 STA T5 1283 LDA #0 1284 STA T1+1 1285 TIMPRT4 LDY T5 1286 LDA (PTR2),Y 1287 STA T1 1288 JSR DEC 1289 LDX #3 1290 TIMPRT2 LDA DECOUT,X 1291 JSR PUSH 1292 INX 1293 CPX #5 1294 BNE TIMPRT2 1295 LDA T5 1296 BNE TIMPRT3 1297 LDA #' ' 1298 JSR PUSH 1299 RTS 1300 TIMPRT3 LDA #':' 1301 JSR PUSH 1302 DEC T5 1303 JMP TIMPRT4 1304 * 1305 DAYPRT STA PTR2 1306 STY PTR2+1 1307 LDA #' ' 1308 JSR PUSH 1309 LDA #0 1310 STA T1+1 1311 LDY #0 1312 LDA (PTR2),Y 1313 STA T1 1314 JSR DECPRT 1315 LDA #'-' 1316 JSR PUSH 1317 LDY #1 1318 LDA (PTR2),Y 1319 ASL 1320 CLC 1321 ADC (PTR2),Y 1322 STA T1 1323 LDX #3 1324 DAYPRT2 LDY T1 1325 LDA MNTHTBL,Y 1326 JSR PUSH 1327 INC T1 1328 DEX 1329 BNE DAYPRT2 1330 LDA #'-' 1331 JSR PUSH 1332 LDY #2 1333 LDA (PTR2),Y 1334 STA T1 1335 JSR DECPRT 1336 LDA #' ' 1337 JSR PUSH 1338 RTS 1339 MNTHTBL ASC '***JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC' 1340 * 1341 * MAIN CONTROL SECTION 1342 * 1343 INIT LDY #0 1344 INIT6 LDA LOADTXT,Y 1345 BEQ INIT7 1346 JSR COUT 1347 INY 1348 JMP INIT6 1349 LOADTXT DFB $8D,$84 1350 ASC 'BLOAD MUOBJ' 1351 DFB $8D,0 1352 * 1353 TIMEK DFB 33,60 1354 DFB 60,60,24 1355 DFB 31,13,100 1356 * 1357 INIT7 JSR DEVICE 1358 LDA #$4C 1359 STA $3F8 1360 LDA #LOOP 1363 STA $3FA 1364 * 1365 LDA #$69 1366 STA $3F2 1367 LDA #$FF 1368 STA $3F3 1369 EOR #$A5 1370 STA $3F4 1371 * 1372 LDA #0 1373 STA PCOUNT 1374 * 1375 LDY #$C0 1376 LDA #0 1377 INIT3 STA SYSRUN,Y 1378 DEY 1379 BNE INIT3 1380 STA SYSRUN 1381 * 1382 LDY #0 1383 INIT8 LDA TIMEK,Y 1384 STA K1,Y 1385 INY 1386 CPY #8 1387 BNE INIT8 1388 * 1389 LDY #0 1390 INIT5 LDA MUSYS,Y 1391 STA $800,Y 1392 DEY 1393 BNE INIT5 1394 * 1395 LDA #8 1396 STA MAXJOBS 1397 * 1398 LDA #LOGTBL 1401 STA SYSLOG+1 1402 * 1403 LDA #$FF 1404 STA JOBNO 1405 JSR CYCLE 1406 INIT2 JSR ZERO 1407 JSR CYCLE 1408 LDA JOBNO 1409 BNE INIT2 1410 * 1411 LDY #JSTATUS 1412 LDA #1 1413 STA (JOBPTR),Y 1414 LDY #JPRIORTY 1415 LDA #10 1416 STA (JOBPTR),Y 1417 LDY #JPROG 1418 LDA #SYSIO 1422 STA (JOBPTR),Y 1423 LDY #JPCOUNT 1424 LDA #1 1425 STA (JOBPTR),Y 1426 * 1427 * SYSTEM SUPERVISORY ROUTINE 1428 * 1429 LOOP LDA #0 1430 STA SUBJOB 1431 INC PCOUNT 1432 LDA #$FF 1433 STA JOBNO 1434 JSR CYCLE 1435 LOOP1 LDY SUBJOB 1436 LDA SUBTBL,Y 1437 STA LOOPX+1 1438 INY 1439 LDA SUBTBL,Y 1440 BEQ LOOP 1441 STA LOOPX+2 1442 INY 1443 STY SUBJOB 1444 LOOP2 JSR TIME 1445 JSR DOCYCLE 1446 BCS LOOP3 1447 LOOPX JSR $0000 1448 LOOP3 LDA JOBNO 1449 BNE LOOP2 1450 BEQ LOOP1 1451 SUBTBL DFB #IN 1452 DFB #INTER 1453 DFB #OUT 1454 DFB #OUT 1455 DFB #OUT 1456 DFB #PROGRAM 1457 DFB #IN 1458 DFB #INTER 1459 DFB #OUT 1460 DFB #OUT 1461 DFB #OUT 1462 DFB #PRTINC 1463 DFB 0,0 1464 * 1465 CREATE PHA 1466 LDA JOBNO 1467 STA T6 1468 LDA JOBPTR 1469 STA PTR1 1470 LDA JOBPTR+1 1471 STA PTR1+1 1472 LDA #0 1473 STA JOBNO 1474 CREATE3 JSR CYCLE 1475 LDY #JSTATUS 1476 LDA (JOBPTR),Y 1477 BEQ CREATE2 1478 LDA JOBNO 1479 BNE CREATE3 1480 LDA T6 1481 STA JOBNO 1482 JSR SETJOB 1483 PLA 1484 SEC 1485 RTS 1486 CREATE2 JSR ZERO 1487 LDY #JSTATUS 1488 LDA (PTR1),Y 1489 STA (JOBPTR),Y 1490 INY 1491 LDA (PTR1),Y 1492 STA (JOBPTR),Y 1493 LDY #JPCOUNT 1494 LDA PCOUNT 1495 CLC 1496 ADC #1 1497 STA (JOBPTR),Y 1498 LDY #JPROG 1499 LDA #BEGIN 1503 STA (JOBPTR),Y 1504 LDY #JUSERID 1505 CREATE4 LDA (PTR1),Y 1506 STA (JOBPTR),Y 1507 INY 1508 CPY #JPROMPT 1509 BNE CREATE4 1510 LDY #JTIME 1511 LDX #0 1512 CREATE5 LDA QS,X 1513 STA (JOBPTR),Y 1514 INY 1515 INX 1516 CPX #6 1517 BNE CREATE5 1518 LDY #JRUNSTAT 1519 PLA 1520 STA (JOBPTR),Y 1521 LDA JOBNO 1522 PHA 1523 LDA T6 1524 STA JOBNO 1525 JSR SETJOB 1526 PLA 1527 CLC 1528 RTS 1529 * 1530 ATTACH STX T1 1531 STY T2 1532 STA T5 1533 LDA JOBNO 1534 STA T6 1535 LDA T5 1536 STA JOBNO 1537 JSR SETJOB 1538 LDY #JINDEV 1539 LDA T1 1540 STA (JOBPTR),Y 1541 LDY #JOUTDEV 1542 LDA T2 1543 STA (JOBPTR),Y 1544 LDA T6 1545 STA JOBNO 1546 JSR SETJOB 1547 LDA T5 1548 LDY T1 1549 STA DEVSTAT,Y 1550 LDY T2 1551 STA DEVSTAT,Y 1552 RTS 1553 * 1554 KILL PHA 1555 LDA JOBNO 1556 STA T6 1557 PLA 1558 STA JOBNO 1559 JSR SETJOB 1560 LDY #JINDEV 1561 LDA (JOBPTR),Y 1562 LDY #JOUTDEV 1563 CMP (JOBPTR),Y 1564 BEQ KILL3 1565 TAY 1566 JSR CLOSE 1567 KILL3 LDY #JINDEV 1568 LDA #0 1569 STA (JOBPTR),Y 1570 LDY #JPROG 1571 LDA #DIE 1575 STA (JOBPTR),Y 1576 JSR RESET 1577 LDY #JRUNSTAT 1578 LDA #%00010000 1579 STA (JOBPTR),Y 1580 LDX #0 1581 LDY #JTIME 1582 KILL2 LDA QS,X 1583 STA (JOBPTR),Y 1584 INY 1585 INX 1586 CPX #6 1587 BNE KILL2 1588 JSR PRINT 1589 DFB $8D 1590 ASC 'KILLED JOB ' 1591 DFB 0 1592 LDA #0 1593 STA T1+1 1594 LDA JOBNO 1595 STA T1 1596 JSR DECPRT 1597 LDY #JUSERID 1598 LDA (JOBPTR),Y 1599 CMP #'*' 1600 BEQ KILL6 1601 JSR PRINT 1602 ASC ' ,USER ' 1603 DFB 0 1604 LDY #JUSERID 1605 STY T1 1606 KILL4 LDY T1 1607 LDA (JOBPTR),Y 1608 BEQ KILL5 1609 JSR PUSH 1610 INC T1 1611 LDA T1 1612 CMP #JACCOUNT 1613 BNE KILL4 1614 KILL5 LDA #',' 1615 JSR PUSH 1616 KILL6 JSR PRINT 1617 ASC ' AT ' 1618 DFB 0 1619 LDA #QD 1621 JSR DAYPRT 1622 LDA #QS 1624 JSR TIMPRT 1625 LDA #13 1626 JSR PUSH 1627 LDA T6 1628 STA JOBNO 1629 JSR SETJOB 1630 RTS 1631 * 1632 SYSID ASC 'SYSJOB' 1633 DFB 0,0 1634 ASC '****' 1635 SYSNEW ASC '****' 1636 DFB 0,0,0,0 1637 ASC '****' 1638 * 1639 SYSOPR ASC 'OPER' 1640 DFB 0 1641 LOGTBL DFB 1,3,0,0,0,0,0,0,0 1642 * 1643 SYSIO JSR NAME 1644 ASC 'SYSIO' 1645 DFB 0 1646 LDY #JUSERID 1647 LDX #0 1648 SYSIO2 LDA SYSID,X 1649 STA (JOBPTR),Y 1650 INX 1651 INY 1652 CPY #JPROMPT 1653 BNE SYSIO2 1654 LDA SUBJOB 1655 STA SUBPROG 1656 LDA JOBNO 1657 STA T8 1658 LDA #%10000000 1659 JSR CREATE 1660 STA JOBNO 1661 JSR SETJOB 1662 LDY #JPROG 1663 LDA #JOBCTL 1667 STA (JOBPTR),Y 1668 LDA T8 1669 STA JOBNO 1670 JSR SETJOB 1671 LDA #%10000000 1672 JSR CREATE 1673 STA JOBNO 1674 JSR SETJOB 1675 LDY #JPROG 1676 LDA #OPRCHK 1679 INY 1680 STA (JOBPTR),Y 1681 LDA T8 1682 STA JOBNO 1683 JSR SETJOB 1684 LDA #%10000000 1685 JSR CREATE 1686 STA JOBNO 1687 JSR SETJOB 1688 LDY #JUSERID 1689 LDX #0 1690 SYSIO7 LDA SYSOPR,X 1691 STA (JOBPTR),Y 1692 BEQ SYSIO8 1693 INX 1694 INY 1695 JMP SYSIO7 1696 SYSIO8 LDA T8 1697 STA JOBNO 1698 JSR SETJOB 1699 SYSIO3 LDA #0 1700 STA T8 1701 SYSIO4 JSR SLEEP 1702 LDY T8 1703 INC T8 1704 LDA LOGTBL,Y 1705 BEQ SYSIO3 1706 TAY 1707 LDA DEVSTAT,Y 1708 BNE SYSIO4 1709 JSR DEVIN 1710 BCS SYSIO4 1711 CMP #3 1712 BEQ SYSIO6 1713 CMP #13 1714 BNE SYSIO4 1715 SYSIO6 LDA #%00100000 1716 JSR CREATE 1717 BCS SYSIO4 1718 STA T7 1719 LDY T8 1720 DEY 1721 LDA LOGTBL,Y 1722 TAY 1723 TAX 1724 LDA T7 1725 JSR ATTACH 1726 LDA JOBNO 1727 STA T6 1728 LDA T7 1729 STA JOBNO 1730 JSR SETJOB 1731 LDY #JUSERID 1732 LDX #0 1733 SYSIO5 LDA SYSNEW,X 1734 STA (JOBPTR),Y 1735 INY 1736 INX 1737 CPY #JPROMPT 1738 BNE SYSIO5 1739 LDY #JSTATUS 1740 LDA #60 1741 STA (JOBPTR),Y 1742 INY 1743 LDA #2 1744 STA (JOBPTR),Y 1745 LDA T6 1746 STA JOBNO 1747 JSR SETJOB 1748 JMP SYSIO4 1749 * 1750 JOBCTL JSR NAME 1751 ASC 'JOBCTL' 1752 DFB 0 1753 JOBCTL2 LDA MAXJOBS 1754 STA T8 1755 JOBCTL3 JSR SLEEP 1756 LDA JOBNO 1757 STA T7 1758 LDA #2 1759 STA JOBNO 1760 JSR SETJOB 1761 LDY #JSTATUS 1762 LDA #1 1763 STA (JOBPTR),Y 1764 LDY #JRUNSTAT 1765 LDA #%10000000 1766 STA (JOBPTR),Y 1767 LDA T7 1768 STA JOBNO 1769 JSR SETJOB 1770 LDA T8 1771 STA JOBNO 1772 JSR SETJOB 1773 LDA JOBPTR 1774 STA PTR2 1775 LDA JOBPTR+1 1776 STA PTR2+1 1777 LDA T7 1778 STA JOBNO 1779 JSR SETJOB 1780 LDY #JRUNSTAT 1781 LDA (PTR2),Y 1782 AND #%10000000 1783 BEQ JOBCTL4 1784 JMP JOBCTL7 1785 JOBCTL4 LDA (PTR2),Y 1786 AND #%01000000 1787 BEQ JOBCTL5 1788 JMP JOBBCH 1789 JOBCTL5 LDA (PTR2),Y 1790 AND #%00100000 1791 BEQ JOBCTL6 1792 JMP JOBNLI 1793 JOBCTL6 LDA (PTR2),Y 1794 AND #%00010000 1795 BEQ JOBCTL7 1796 JMP JOBOUT 1797 JOBCTL7 DEC T8 1798 BNE JOBCTL3 1799 BEQ JOBCTL2 1800 JOBBCH LDY #JOUTP1 1801 LDA (PTR2),Y 1802 LDY #JOUTP2 1803 CMP (PTR2),Y 1804 BEQ JOBBCH2 1805 JMP JOBCTL7 1806 JOBBCH2 LDY #JINP1 1807 LDA (PTR2),Y 1808 LDY #JINP2 1809 CMP (PTR2),Y 1810 BEQ JOBBCH4 1811 JMP JOBCTL7 1812 JOBBCH4 LDA T8 1813 JSR KILL 1814 JMP JOBCTL7 1815 JOBNLI LDA QM 1816 LDY #JTIME+1 1817 SEC 1818 SBC (PTR2),Y 1819 CMP #2 1820 BCS JOBNLI2 1821 JMP JOBCTL7 1822 JOBNLI2 LDA T8 1823 JSR KILL 1824 JMP JOBCTL7 1825 JOBOUT LDY #JOUTP1 1826 LDA (PTR2),Y 1827 LDY #JOUTP2 1828 CMP (PTR2),Y 1829 BNE JOBOUT2 1830 JOBOUT3 LDY #JSTATUS 1831 LDA #0 1832 STA (PTR2),Y 1833 LDY #JOUTDEV 1834 LDA (PTR2),Y 1835 TAY 1836 JSR CLOSE 1837 JMP JOBCTL7 1838 JOBOUT2 LDA QM 1839 LDY #JTIME+1 1840 SEC 1841 SBC (PTR2),Y 1842 CMP #1 1843 BCS JOBOUT3 1844 JMP JOBCTL7 1845 * 1846 EXEC0 JMP EXEC 1847 * 1848 BEGIN JSR PRINT 1849 DFB $8D 1850 ASC 'JOB ' 1851 DFB 0 1852 JSR SLEEP 1853 LDA JOBNO 1854 STA T1 1855 LDA #0 1856 STA T1+1 1857 JSR DECPRT 1858 JSR PRINT 1859 ASC ' ON MUSYS PROCESSOR V1(6502)' 1860 DFB $8D,0 1861 JSR SLEEP 1862 LDY #JPRMPT 1863 LDA #'@' 1864 STA (JOBPTR),Y 1865 INY 1866 LDA #0 1867 STA (JOBPTR),Y 1868 JSR SLEEP 1869 JMP EXEC0 1870 DIE JSR SLEEP 1871 JMP DIE 1872 OPRCHK JSR NAME 1873 ASC 'OPRCHK' 1874 DFB 0 1875 LDA JOBNO 1876 STA T8 1877 OPRCHK3 JSR SLEEP 1878 LDA #0 1879 STA JOBNO 1880 OPRCHK2 JSR SETJOB 1881 LDY #JSTATUS 1882 LDA #1 1883 STA (JOBPTR),Y 1884 INY 1885 LDA #10 1886 STA (JOBPTR),Y 1887 LDY #JRUNSTAT 1888 LDA #%10000000 1889 STA (JOBPTR),Y 1890 INC JOBNO 1891 LDA JOBNO 1892 CMP #4 1893 BNE OPRCHK2 1894 DEC JOBNO 1895 JSR SETJOB 1896 LDY #JPRIORTY 1897 LDA #1 1898 STA (JOBPTR),Y 1899 LDA T8 1900 STA JOBNO 1901 JSR SETJOB 1902 LDA $C000 1903 CMP #$1E 1904 BEQ OPRCHK7 1905 CMP #$9E 1906 BNE OPRCHK3 1907 OPRCHK7 LDA MAXJOBS 1908 STA JOBNO 1909 OPRCHK6 JSR SETJOB 1910 LDY #JINDEV 1911 LDA (JOBPTR),Y 1912 CMP #1 1913 BNE OPRCHK4 1914 LDA #0 1915 STA (JOBPTR),Y 1916 OPRCHK4 LDY #JOUTDEV 1917 LDA (JOBPTR),Y 1918 CMP #1 1919 BNE OPRCHK5 1920 LDA #0 1921 STA (JOBPTR),Y 1922 OPRCHK5 DEC JOBNO 1923 BNE OPRCHK6 1924 LDA #3 1925 STA JOBNO 1926 JSR SETJOB 1927 LDA #1 1928 LDY #JINDEV 1929 STA (JOBPTR),Y 1930 LDY #JOUTDEV 1931 STA (JOBPTR),Y 1932 LDA T8 1933 STA JOBNO 1934 JSR SETJOB 1935 JMP OPRCHK 1 LST OFF 2 **************************** 3 * * 4 * MUSYS: * 5 * A MULTIUSER/MULTITASKING * 6 * ELKSYSTEM * 7 * * 8 * (C) COPYRIGHT 1983 BY * 9 * RICHARD SKRENTA * 10 * ALL RIGHTS RESERVED * 11 * * 12 * ------------------------ * 13 * * 14 * DEVICE DRIVERS AND * 15 * USER FUNCTIONS * 16 * * 17 **************************** 18 JOBNO EQU $00 19 PCOUNT EQU $01 20 JOBPTR EQU $02 21 INBUF EQU $04 22 OUTBUF EQU $06 23 PRSEBUF EQU $08 24 SYSMEM EQU $0A 25 JOBMEM EQU $0C 26 LOMEM EQU $0E 27 TEMP EQU $10 28 * 29 REGS EQU $45 30 X1 EQU $D0 31 X2 EQU $D2 32 X3 EQU $D4 33 X4 EQU $D6 34 X5 EQU $D8 35 X6 EQU $DA 36 X7 EQU $DC 37 X8 EQU $DE 38 PTR0 EQU $E0 39 PTR1 EQU $E2 40 PTR2 EQU $E4 41 PTR3 EQU $E6 42 PTR4 EQU $E8 43 T1 EQU $F0 44 T2 EQU $F2 45 T3 EQU $F4 46 T4 EQU $F6 47 T5 EQU $F8 48 T6 EQU $FA 49 T7 EQU $FC 50 T8 EQU $FE 51 * 52 JSTATUS EQU 0 53 JPRIORTY EQU 1 54 JPCOUNT EQU 2 55 JECHO EQU 3 56 JINDEV EQU 4 57 JOUTDEV EQU 5 58 JPROG EQU 6 59 JREGS EQU 8 60 JCCOUNT EQU 13 61 JCTRLC EQU 14 62 JINP1 EQU 16 63 JINP2 EQU 17 64 JOUTP1 EQU 18 65 JOUTP2 EQU 19 66 JPRSEP1 EQU 20 67 JPRSEP2 EQU 21 68 JNAME EQU 22 69 JUSERID EQU 30 70 JACCOUNT EQU 38 71 JPROMPT EQU 42 72 JPAUSE EQU 54 73 JSUSP EQU 55 74 JVAR EQU 56 75 JINTX EQU 105 76 JINTZ EQU 107 77 JCOLUMN EQU 109 78 JTIME EQU 110 79 JPRMPT EQU 116 80 JRUNSTAT EQU 128 81 * 82 HOME EQU $FC58 83 IOSAVE EQU $FF4A 84 IOREST EQU $FF3F 85 * 86 SYSRUN EQU $300 87 SUBJOB EQU SYSRUN+1 88 Q1 EQU SYSRUN+2 89 Q2 EQU SYSRUN+3 90 QS EQU SYSRUN+4 91 QM EQU SYSRUN+5 92 QH EQU SYSRUN+6 93 QD EQU SYSRUN+7 94 QMN EQU SYSRUN+8 95 QY EQU SYSRUN+9 96 K1 EQU SYSRUN+10 97 K2 EQU SYSRUN+11 98 MAXJOBS EQU SYSRUN+18 99 SUBPROG EQU SYSRUN+19 100 SYSLOG EQU SYSRUN+20 101 SYSMDM EQU SYSRUN+22 102 * 103 INIT EQU $800 104 SETJOB EQU INIT+3 105 CYCLE EQU INIT+6 106 DOCYCLE EQU INIT+9 107 PRTINC EQU INIT+12 108 TIME EQU INIT+15 109 IN EQU INIT+18 110 OUT EQU INIT+21 111 RESUME EQU INIT+24 112 INTER EQU INIT+27 113 PROMPT EQU INIT+30 114 NAME EQU INIT+33 115 READLN EQU INIT+36 116 DELIM EQU INIT+42 117 PARNUM EQU INIT+45 118 LISTCMD EQU INIT+48 119 PARSE EQU INIT+51 120 CMD EQU INIT+54 121 PROGRAM EQU INIT+57 122 SLEEP EQU INIT+60 123 TAB EQU INIT+63 124 PRINT EQU INIT+66 125 PUSH EQU INIT+69 126 RESET EQU INIT+72 127 PULL EQU INIT+75 128 DECPRT EQU INIT+78 129 DEC EQU INIT+81 130 ZERO EQU INIT+84 131 TIMPRT EQU INIT+87 132 CREATE EQU INIT+90 133 ATTACH EQU INIT+93 134 SYSIO EQU INIT+96 135 EXECX EQU INIT+99 136 DAYPRT EQU INIT+102 137 BEGIN EQU INIT+105 138 KILL EQU INIT+108 139 * 140 ORG $900 141 DEVICE JMP START 142 DEVIN0 JMP DEVIN 143 DEVOUT0 JMP DEVOUT 144 OPEN0 JMP OPEN 145 CLOSE0 JMP CLOSE 146 EXECY JMP EXEC 147 DEVSTAT DS 64 148 BUFP1 DS 17 149 BUFP2 DS 17 150 BUFSTART DFB #ENDPRG 151 * 152 START LDA #0 153 STA LOMEM 154 LDA BUFSTART+1 155 CLC 156 ADC #17 157 STA LOMEM+1 158 * 159 LDY #63 160 LDA #0 161 START2 STA DEVSTAT,Y 162 DEY 163 BNE START2 164 * 165 LDY #15 166 LDA #0 167 START3 STA BUFP1,Y 168 STA BUFP2,Y 169 DEY 170 BNE START3 171 STA BUFP1 172 STA BUFP2 173 RTS 174 * 175 COUT ORA #$80 176 JSR $FDF0 177 RTS 178 * 179 DEVIN LDA #0 180 BEQ DEV2 181 DEVOUT STA T1 182 LDA #1 183 BNE DEV2 184 OPEN LDA #2 185 BNE DEV2 186 CLOSE LDA #3 187 DEV2 STA T2 188 STY T3 189 TYA 190 CMP #10 191 BCS DEV3 192 ASL 193 TAY 194 LDA DEVTBL,Y 195 STA PTR1 196 INY 197 LDA DEVTBL,Y 198 STA PTR1+1 199 JMP (PTR1) 200 DEV3 CMP #$20 201 BCS DEV4 202 JMP BUFFER 203 DEV4 SEC 204 RTS 205 DEVTBL DFB #NULLDEV 206 DFB #CONSOLE 207 DFB #PRINTER 208 DFB #MODEM 209 DFB #NULLDEV 210 DFB #NULLDEV 211 DFB #NULLDEV 212 DFB #NULLDEV 213 DFB #NULLDEV 214 DFB #NULLDEV 215 DFB #NULLDEV 216 DFB #NULLDEV 217 DFB #NULLDEV 218 DFB #NULLDEV 219 DFB #NULLDEV 220 DFB #NULLDEV 221 CONSOLE LDA T2 222 BEQ KBDIN 223 CMP #1 224 BEQ SCRNOUT 225 CMP #2 226 BNE CONSOLE3 227 LDY T3 228 LDA DEVSTAT,Y 229 BEQ CONSOLE2 230 SEC 231 RTS 232 CONSOLE3 LDY T3 233 LDA #0 234 STA DEVSTAT,Y 235 CLC 236 RTS 237 CONSOLE2 LDA JOBNO 238 STA DEVSTAT,Y 239 STA $C010 240 CLC 241 RTS 242 KBDIN LDA #$DF 243 JSR COUT 244 LDA #$88 245 JSR COUT 246 LDA $C000 247 BMI KBDIN2 248 SEC 249 RTS 250 KBDIN2 AND #$7F 251 PHA 252 LDA $C010 253 LDA #$A0 254 JSR COUT 255 LDA #$88 256 JSR COUT 257 PLA 258 CLC 259 RTS 260 SCRNOUT LDA T1 261 AND #$7F 262 CMP #10 263 BEQ SCRNOUT3 264 PHA 265 LDA #' ' 266 JSR COUT 267 LDA #$88 268 JSR COUT 269 PLA 270 CMP #12 271 BNE SCRNOUT2 272 JSR HOME 273 SCRNOUT3 CLC 274 RTS 275 SCRNOUT2 JSR COUT 276 CLC 277 RTS 278 NULLDEV LDA T2 279 BNE NULLDEV2 280 SEC 281 RTS 282 NULLDEV2 CLC 283 RTS 284 PRINTER LDA T2 285 BNE PRIN2 286 PRIN4 SEC 287 RTS 288 PRIN2 CMP #2 289 BEQ PRIN3 290 CMP #3 291 BEQ PRIN5 292 LDA $C1C1 293 BMI PRIN4 294 LDA T1 295 STA $C090 296 CLC 297 RTS 298 PRIN3 LDY T3 299 LDA DEVSTAT,Y 300 BNE PRIN4 301 LDA JOBNO 302 STA DEVSTAT,Y 303 CLC 304 RTS 305 PRIN5 LDY T3 306 LDA #0 307 STA DEVSTAT,Y 308 RTS 309 MODEM LDX #$20 310 LDA SYSMDM 311 BEQ MODEM4 312 LDA $C086,X 313 CMP #8 314 BCC MODEM4 315 JSR PICKUP 316 LDY #0 317 MODEM5 NOP 318 NOP 319 NOP 320 DEY 321 BNE MODEM5 322 JSR PICKUP 323 SEC 324 RTS 325 MODEM4 LDA T2 326 BEQ MDMIN 327 CMP #1 328 BEQ MDMOUT 329 CMP #2 330 BEQ MODEM2 331 LDA #0 332 LDY T3 333 STA DEVSTAT,Y 334 CLC 335 RTS 336 MODEM2 LDY T3 337 LDA DEVSTAT,Y 338 BEQ MODEM3 339 SEC 340 RTS 341 MODEM3 LDA JOBNO 342 STA DEVSTAT,Y 343 CLC 344 RTS 345 MDMIN LDA SYSMDM 346 BEQ MDMIN4 347 LDA $C086,X 348 AND #%00000101 349 CMP #1 350 BEQ MDMIN2 351 SEC 352 RTS 353 MDMIN2 LDA $C087,X 354 AND #%01111111 355 CLC 356 RTS 357 MDMIN4 SEC 358 RTS 359 MDMOUT LDA SYSMDM 360 BEQ MDMOUT3 361 LDA $C086,X 362 AND #%00000110 363 CMP #2 364 BEQ MDMOUT2 365 MDMOUT3 SEC 366 RTS 367 MDMOUT2 LDA T1 368 STA $C087,X 369 CLC 370 RTS 371 BUFFER LDA T3 372 SEC 373 SBC #16 374 STA T4 375 LDA T2 376 BEQ BUFIN 377 CMP #1 378 BEQ BUFOUT 379 CMP #2 380 BNE BUFFER2 381 LDY #16 382 BUFFER5 LDA DEVSTAT,Y 383 BEQ BUFFER3 384 INY 385 CPY #32 386 BNE BUFFER5 387 SEC 388 RTS 389 BUFFER3 LDA JOBNO 390 STA DEVSTAT,Y 391 STY T3 392 TYA 393 SEC 394 SBC #16 395 STA T4 396 JMP BUFFER4 397 BUFFER2 LDY T3 398 LDA #0 399 STA DEVSTAT,Y 400 BUFFER4 LDY T4 401 LDA #0 402 STA BUFP1,Y 403 STA BUFP2,Y 404 LDY T3 405 CLC 406 RTS 407 BUFIN LDY T4 408 LDA BUFP2,Y 409 CMP BUFP1,Y 410 BNE BUFIN2 411 SEC 412 RTS 413 BUFIN2 CLC 414 ADC #1 415 STA BUFP2,Y 416 TAY 417 DEY 418 LDA BUFSTART 419 STA PTR1 420 LDA BUFSTART+1 421 CLC 422 ADC T4 423 STA PTR1+1 424 LDA (PTR1),Y 425 CLC 426 RTS 427 BUFOUT LDY T4 428 LDA BUFP1,Y 429 CLC 430 ADC #1 431 CMP BUFP2,Y 432 BNE BUFOUT2 433 SEC 434 RTS 435 BUFOUT2 STA BUFP1,Y 436 TAY 437 DEY 438 LDA BUFSTART 439 STA PTR1 440 LDA BUFSTART+1 441 CLC 442 ADC T4 443 STA PTR1+1 444 LDA T1 445 STA (PTR1),Y 446 CLC 447 RTS 448 ************************ 449 * * 450 * USER FUNCTIONS * 451 * * 452 ************************ 453 EXEC JSR NAME 454 ASC 'EXEC' 455 DFB 0 456 LDY #JCTRLC 457 LDA #EXEC 461 STA (JOBPTR),Y 462 LDY #JPRMPT 463 STY T1 464 LDY #JPROMPT 465 STY T2 466 EXEC2 LDY T1 467 LDA (JOBPTR),Y 468 LDY T2 469 STA (JOBPTR),Y 470 INC T1 471 INY 472 STY T2 473 CPY #JPAUSE 474 BNE EXEC2 475 JSR READLN 476 JSR CMD 477 DFB #KEYWORD 478 DFB #ADDRESS 479 JSR PARSE 480 JMP EXEC 481 KEYWORD ASC 'SYSTAT' 482 DFB 0 483 ASC 'TEST' 484 DFB 0 485 ASC 'DAYTIME' 486 DFB 0 487 ASC 'PROMPT' 488 DFB 0 489 ASC 'HALT' 490 DFB 0 491 ASC 'LOGIN' 492 DFB 0 493 ASC 'KTIME' 494 DFB 0 495 ASC 'DATE' 496 DFB 0 497 ASC 'TIME' 498 DFB 0 499 ASC 'DO' 500 DFB 0 501 ASC 'PTYCON' 502 DFB 0 503 ASC 'LOGOUT' 504 DFB 0 505 ASC 'DUMP' 506 DFB 0 507 ASC 'WATCH' 508 DFB 0 509 ASC 'SHOW' 510 DFB 0 511 ASC 'CLOSE' 512 DFB 0 513 ASC 'DETACH' 514 DFB 0 515 ASC 'ATTACH' 516 DFB 0 517 ASC 'TERMINAL' 518 DFB 0 519 ASC 'OPR' 520 DFB 0 521 ASC 'SEND' 522 DFB 0 523 ASC 'PICKUP' 524 DFB 0 525 ASC 'HANGUP' 526 DFB 0 527 ASC 'MONITOR' 528 DFB 0,0,0 529 ADDRESS DFB #SYSTAT,70,0 530 DFB #TEST,50,0 531 DFB #DAYTIME,70,0 532 DFB #CPROMPT,50,0 533 DFB #HALT,1,0 534 DFB #LOGIN,70,0 535 DFB #KTIME,2,0 536 DFB #SDATE,70,0 537 DFB #STIME,70,0 538 DFB #DO,50,0 539 DFB #PTYCON,2,0 540 DFB #LOGOUT,70,0 541 DFB #DUMP,10,0 542 DFB #WATCH,5,0 543 DFB #SHOW,50,0 544 DFB #ECLOSE,50,0 545 DFB #DET,50,0 546 DFB #CONNECT,70,0 547 DFB #TERMINAL,50,0 548 DFB #OPR,2,0 549 DFB #SEND,50,0 550 DFB #PICKUP,2,0 551 DFB #HANGUP,50,0 552 DFB #MONITOR,1,0 553 TEST LDA #0 554 STA T6 555 STA T6+1 556 JSR NAME 557 ASC 'TESTER' 558 DFB 0 559 TEST3 JSR PRINT 560 DFB $8D 561 ASC 'MUSYS TESTER--LINE ' 562 DFB 0 563 LDA T6 564 STA T1 565 LDA T6+1 566 STA T1+1 567 JSR DECPRT 568 INC T6 569 BNE TEST2 570 INC T6+1 571 TEST2 JSR SLEEP 572 JMP TEST3 573 SYSTAT JSR NAME 574 ASC 'SYSTAT' 575 DFB 0 576 JSR PRINT 577 DFB $8D 578 ASC 'SYSTEM JOB STATUS REPORT' 579 DFB $8D 580 ASC 'AT ' 581 DFB 0 582 LDA #QD 584 JSR DAYPRT 585 LDA #QS 587 JSR TIMPRT 588 JSR PRINT 589 DFB $8D,$8D 590 ASC 'JOB DEVICE PROGRAM USER' 591 DFB $8D 592 ASC '----------------------------' 593 DFB $8D,0 594 LDA JOBNO 595 STA T6 596 LDA #0 597 STA T5 598 SYSTAT3 JSR SLEEP 599 LDA T5 600 STA JOBNO 601 JSR SETJOB 602 LDA JOBPTR 603 STA PTR2 604 LDA JOBPTR+1 605 STA PTR2+1 606 LDA T6 607 STA JOBNO 608 JSR SETJOB 609 LDY #JSTATUS 610 LDA (PTR2),Y 611 BNE SYSTAT13 612 JMP SYSTAT2 613 SYSTAT13 LDA T5 614 CMP T6 615 BNE SYSTAT8 616 LDA #'*' 617 JSR PUSH 618 JMP SYSTAT9 619 SYSTAT8 LDA #' ' 620 JSR PUSH 621 SYSTAT9 LDA T5 622 STA T1 623 LDA #0 624 STA T1+1 625 JSR DECPRT 626 LDA #5 627 JSR TAB 628 LDY #JINDEV 629 LDA (PTR2),Y 630 LDY #JOUTDEV 631 ORA (PTR2),Y 632 BEQ SYSTAT11 633 LDA #'(' 634 JSR PUSH 635 LDY #JINDEV 636 LDA (PTR2),Y 637 STA T1 638 JSR DECPRT 639 LDA #'/' 640 JSR PUSH 641 LDY #JOUTDEV 642 LDA (PTR2),Y 643 STA T1 644 JSR DECPRT 645 LDA #')' 646 JSR PUSH 647 JMP SYSTAT12 648 SYSTAT11 JSR PRINT 649 ASC 'DET' 650 DFB 0 651 SYSTAT12 LDA #14 652 JSR TAB 653 LDY #JNAME 654 STY T1 655 SYSTAT5 LDY T1 656 LDA (PTR2),Y 657 BEQ SYSTAT4 658 JSR PUSH 659 INC T1 660 JMP SYSTAT5 661 SYSTAT4 LDA #24 662 JSR TAB 663 LDY #JUSERID 664 STY T1 665 SYSTAT7 LDY T1 666 LDA (PTR2),Y 667 BEQ SYSTAT6 668 JSR PUSH 669 INC T1 670 LDA T1 671 CMP #8 672 BNE SYSTAT7 673 SYSTAT6 LDA #13 674 JSR PUSH 675 SYSTAT2 LDA T5 676 STA JOBNO 677 JSR CYCLE 678 LDA JOBNO 679 BEQ SYSTAT10 680 LDA JOBNO 681 STA T5 682 LDA T6 683 STA JOBNO 684 JSR SETJOB 685 JMP SYSTAT3 686 SYSTAT10 LDA T6 687 STA JOBNO 688 JSR SETJOB 689 LDA #13 690 JSR PUSH 691 RTS 692 DAYTIME LDA #QD 694 JSR DAYPRT 695 LDA #QS 697 JSR TIMPRT 698 LDA #13 699 JSR PUSH 700 RTS 701 * 702 SDATE LDY #JSTATUS 703 LDA (JOBPTR),Y 704 CMP #3 705 BCS SDATE2 706 JSR PARNUM 707 BCS SDATE2 708 LDA T3 709 STA QD 710 JSR PARNUM 711 BCS SDATE2 712 LDA T3 713 STA QMN 714 JSR PARNUM 715 BCS SDATE2 716 LDA T3 717 STA QY 718 SDATE2 JSR PRINT 719 ASC 'THE DATE IS ' 720 DFB 0 721 LDA #QD 723 JSR DAYPRT 724 LDA #13 725 JSR PUSH 726 RTS 727 STIME LDY #JSTATUS 728 LDA (JOBPTR),Y 729 CMP #3 730 BCS STIME2 731 JSR PARNUM 732 BCS STIME2 733 LDA #0 734 STA QS 735 STA QM 736 STA QH 737 LDA T3 738 STA QH 739 JSR PARNUM 740 BCS STIME2 741 LDA T3 742 STA QM 743 JSR PARNUM 744 BCS STIME2 745 LDA T3 746 STA QS 747 STIME2 JSR PRINT 748 ASC 'THE TIME IS ' 749 DFB 0 750 LDA #QS 752 JSR TIMPRT 753 LDA #13 754 JSR PUSH 755 RTS 756 CPROMPT LDY #JPRSEP1 757 LDA (JOBPTR),Y 758 STA T1 759 LDY #JPRSEP2 760 LDA (JOBPTR),Y 761 STA T2 762 LDY #JPRMPT 763 STY T3 764 LDY T2 765 CPY T1 766 BEQ CPROMPT2 767 INC T2 768 CPROMPT3 LDY T2 769 CPY T1 770 BEQ CPROMPT2 771 LDA (PRSEBUF),Y 772 LDY T3 773 STA (JOBPTR),Y 774 INC T2 775 INY 776 CPY #JRUNSTAT-1 777 BEQ CPROMPT2 778 STY T3 779 JMP CPROMPT3 780 CPROMPT2 LDY T3 781 LDA #0 782 STA (JOBPTR),Y 783 RTS 784 HALT LDY #JPROG 785 LDA #EXEC 789 STA (JOBPTR),Y 790 JMP $FF69 791 LOGIN LDY #JSTATUS 792 LDA #2 793 STA (JOBPTR),Y 794 INY 795 LDA #1 796 STA (JOBPTR),Y 797 LDY #JRUNSTAT 798 LDA #%10000000 799 STA (JOBPTR),Y 800 LDY #JPRSEP1 801 LDA (JOBPTR),Y 802 STA T1 803 LDY #JPRSEP2 804 LDA (JOBPTR),Y 805 STA T2 806 LDY #JUSERID 807 STY T3 808 LDY T2 809 CPY T1 810 BEQ LOGIN2 811 INC T2 812 LOGIN3 LDY T2 813 CPY T1 814 BEQ LOGIN2 815 LDA (PRSEBUF),Y 816 LDY T3 817 STA (JOBPTR),Y 818 INC T2 819 INY 820 CPY #JACCOUNT-1 821 BEQ LOGIN2 822 STY T3 823 JMP LOGIN3 824 LOGIN2 LDY T3 825 LDA #0 826 STA (JOBPTR),Y 827 RTS 828 KTIME JSR PARNUM 829 BCS KTIME2 830 LDA T3 831 STA K1 832 JSR PARNUM 833 BCS KTIME2 834 LDA T3 835 STA K2 836 KTIME2 JSR PRINT 837 ASC 'CURRENT TIME CONSTANT IS: ' 838 DFB 0 839 LDA #0 840 STA T1+1 841 LDA K1 842 STA T1 843 JSR DECPRT 844 LDA #'/' 845 JSR PUSH 846 LDA K2 847 STA T1 848 JSR DECPRT 849 LDA #13 850 JSR PUSH 851 RTS 852 DO PLA 853 PLA 854 JSR NAME 855 ASC 'DO' 856 DFB 0 857 LDA #0 858 STA X4 859 LDY #JCTRLC 860 LDA #DOERR 864 STA (JOBPTR),Y 865 LDA #0 866 STA X1 867 LDY #JPRIORTY 868 LDA (JOBPTR),Y 869 STA X2 870 LDY #JSTATUS 871 LDA (JOBPTR),Y 872 STA X3 873 DO2 JSR CMD 874 DFB #DOKEY 875 DFB #DOADR 876 JSR PARSE 877 BCS DOEND 878 JMP DO3 879 DOKEY ASC 'OUTPUT' 880 DFB 0 881 ASC 'PRIORITY' 882 DFB 0 883 ASC 'STATUS' 884 DFB 0,0,0 885 DOADR DFB #DOOUT,50,0 886 DFB #DOPRI,50,0 887 DFB #DOSTA,50,0 888 DOOUT PLA 889 PLA 890 JSR PARDEV 891 BCS DOEND 892 LDY T3 893 JSR OPEN 894 BCC DOOUT2 895 JSR PRINT 896 ASC '?DEVICE NOT AVAILABLE' 897 DFB $8D,0 898 DOEND JMP DOERR 899 DOOUT2 STY X1 900 JMP DO2 901 DOPRI PLA 902 PLA 903 JSR PARNUM 904 BCS DOEND 905 LDA T3 906 LDY #JPRIORTY 907 CMP (JOBPTR),Y 908 BCS DOPRI2 909 JSR PRINT 910 ASC '?INVALID PRIORITY' 911 DFB $8D,0 912 DOEND2 JMP DOERR 913 DOPRI2 STA X2 914 JMP DO2 915 DOSTA PLA 916 PLA 917 JSR PARNUM 918 BCS DOEND2 919 LDA T3 920 LDY #JSTATUS 921 CMP (JOBPTR),Y 922 BCS DOSTA2 923 JSR PRINT 924 ASC '?INVALID STATUS' 925 DFB $8D,0 926 JMP DOERR 927 DOSTA2 STA X3 928 JMP DO2 929 DO3 LDY #16 930 JSR OPEN 931 BCC DO4 932 JSR PRINT 933 ASC '?NO FREE BUFFERS' 934 DFB $8D,0 935 JMP DOERR 936 DO4 STY X4 937 STY T1 938 LDA #0 939 STA T1+1 940 JSR PRINT 941 DFB 91 942 ASC 'PSEUDO-TERMINAL ' 943 DFB 0 944 JSR DECPRT 945 JSR PRINT 946 ASC ' READY' 947 DFB 93,$8D,0 948 LDY #JINTZ 949 LDA #DO10 953 STA (JOBPTR),Y 954 JSR PRINT 955 ASC 'ENTER TEXT, END WITH CTRL-Z' 956 DFB $8D,0 957 JSR PROMPT 958 ASC '#' 959 DFB 0 960 DO5 JSR READLN 961 LDY #JPRSEP1 962 LDA (JOBPTR),Y 963 STA X5 964 LDY #JPRSEP2 965 LDA (JOBPTR),Y 966 STA X6 967 DO7 LDY X6 968 CPY X5 969 BEQ DO8 970 LDA (PRSEBUF),Y 971 LDY X4 972 JSR DEVOUT 973 BCC DO6 974 DO9 JSR PRINT 975 ASC '?BUFFER OVERFLOW' 976 DFB $8D,0 977 JMP DOERR 978 DO6 INC X6 979 JMP DO7 980 DO8 LDA #13 981 LDY X4 982 JSR DEVOUT 983 BCS DO9 984 JMP DO5 985 DO10 LDA #%01000000 986 JSR CREATE 987 BCC DO11 988 JSR PRINT 989 ASC '?NO FREE JOB SLOTS' 990 DFB $8D,0 991 JMP DOERR 992 DO11 STA X8 993 LDA JOBNO 994 STA X7 995 LDA X8 996 STA JOBNO 997 JSR SETJOB 998 LDA JOBPTR 999 STA PTR2 1000 LDA JOBPTR+1 1001 STA PTR2+1 1002 LDA X7 1003 STA JOBNO 1004 JSR SETJOB 1005 LDY #JSTATUS 1006 LDA X3 1007 STA (PTR2),Y 1008 INY 1009 LDA X2 1010 STA (PTR2),Y 1011 LDA X8 1012 LDX X4 1013 LDY X1 1014 JSR ATTACH 1015 LDA X8 1016 STA T1 1017 JSR PRINT 1018 DFB 91 1019 ASC 'JOB ' 1020 DFB 0 1021 LDA #0 1022 STA T1+1 1023 JSR DECPRT 1024 JSR PRINT 1025 ASC ' QUEUED AT ' 1026 DFB 0 1027 LDA #QD 1029 JSR DAYPRT 1030 LDA #QS 1032 JSR TIMPRT 1033 LDA #93 1034 JSR PUSH 1035 LDA #13 1036 JSR PUSH 1037 JMP DO12 1038 DOERR LDY X4 1039 JSR CLOSE 1040 LDY X1 1041 JSR CLOSE 1042 DO12 LDA #0 1043 LDY #JINTZ 1044 STA (JOBPTR),Y 1045 INY 1046 STA (JOBPTR),Y 1047 JMP EXEC 1048 PTYCON JSR NAME 1049 ASC 'PTYCON' 1050 DFB 0 1051 JSR PROMPT 1052 ASC 'PTYCON>' 1053 DFB 0 1054 JSR READLN 1055 JSR CMD 1056 DFB #PTYKEY 1057 DFB #PTYADR 1058 LDA JOBNO 1059 STA X1 1060 JSR PARSE 1061 JMP PTYCON 1062 PTYKEY ASC 'DEFINE' 1063 DFB 0 1064 ASC 'STATUS' 1065 DFB 0 1066 ASC 'PRIORITY' 1067 DFB 0 1068 ASC 'RUNSTATUS' 1069 DFB 0 1070 ASC 'KILL' 1071 DFB 0 1072 ASC 'SYSTAT' 1073 DFB 0 1074 ASC 'EXIT' 1075 DFB 0 1076 ASC 'CONNECT' 1077 DFB 0 1078 ASC 'OPEN' 1079 DFB 0,0,0 1080 PTYADR DFB #PTYDEF,5,0 1081 DFB #PTYSTA,5,0 1082 DFB #PTYPRI,5,0 1083 DFB #PTYRUN,5,0 1084 DFB #PTYKIL,5,0 1085 DFB #SYSTAT,5,0 1086 DFB #PTYEXI,5,0 1087 DFB #PTYCNN,5,0 1088 DFB #PTYOPE,5,0 1089 PTYFIX JSR PARNUM 1090 BCC PTYFIX2 1091 JSR PRINT 1092 ASC '?JOB NUMBER REQUIRED' 1093 DFB $8D,0 1094 PLA 1095 PLA 1096 RTS 1097 PTYFIX2 LDA MAXJOBS 1098 CMP T3 1099 BCS PTYFIX3 1100 JSR PRINT 1101 ASC '?INVALID JOB NUMBER' 1102 DFB $8D,0 1103 PLA 1104 PLA 1105 RTS 1106 PTYFIX3 LDA T3 1107 STA X2 1108 STA JOBNO 1109 JSR SETJOB 1110 LDA JOBPTR 1111 STA PTR2 1112 LDA JOBPTR+1 1113 STA PTR2+1 1114 LDA X1 1115 STA JOBNO 1116 JSR SETJOB 1117 RTS 1118 PTYDEF JSR PTYFIX 1119 LDY #0 1120 TYA 1121 PTYDEF2 STA (PTR2),Y 1122 DEY 1123 BNE PTYDEF2 1124 LDY #JSTATUS 1125 LDA #60 1126 STA (PTR2),Y 1127 INY 1128 LDA #2 1129 STA (PTR2),Y 1130 LDY #JPROG 1131 LDA #BEGIN 1135 STA (PTR2),Y 1136 LDY #JRUNSTAT 1137 LDA #%00100000 1138 STA (PTR2),Y 1139 LDY #JUSERID 1140 PTYDEF3 LDA (JOBPTR),Y 1141 STA (PTR2),Y 1142 INY 1143 CPY #JPROMPT 1144 BNE PTYDEF3 1145 RTS 1146 PTYSTA JSR PTYFIX 1147 JSR PARNUM 1148 BCS PTYSTA3 1149 LDA T3 1150 BEQ PTYSTA2 1151 LDY #JSTATUS 1152 CMP (JOBPTR),Y 1153 BCS PTYSTA2 1154 JSR PRINT 1155 ASC '?INVALID STATUS' 1156 DFB $8D,0 1157 RTS 1158 PTYSTA2 LDY #JSTATUS 1159 STA (PTR2),Y 1160 RTS 1161 PTYSTA3 LDY #JSTATUS 1162 LDA (PTR2),Y 1163 STA T1 1164 LDA #0 1165 STA T1+1 1166 LDA #'=' 1167 JSR PUSH 1168 JSR DECPRT 1169 LDA #13 1170 JSR PUSH 1171 RTS 1172 PTYPRI JSR PTYFIX 1173 JSR PARNUM 1174 BCS PTYPRI3 1175 PTYPRI2 LDY #JPRIORTY 1176 LDA T3 1177 STA (PTR2),Y 1178 RTS 1179 PTYPRI3 LDY #JPRIORTY 1180 LDA (PTR2),Y 1181 STA T1 1182 LDA #0 1183 STA T1+1 1184 LDA #'=' 1185 JSR PUSH 1186 JSR DECPRT 1187 LDA #13 1188 JSR PUSH 1189 RTS 1190 PTYRUN JSR PTYFIX 1191 JSR PARNUM 1192 BCS PTYRUN2 1193 LDA T3 1194 LDY #JRUNSTAT 1195 STA (PTR2),Y 1196 RTS 1197 PTYRUN2 LDY #JRUNSTAT 1198 LDA (PTR2),Y 1199 STA T1 1200 LDA #0 1201 STA T1+1 1202 LDA #'=' 1203 JSR PUSH 1204 JSR DECPRT 1205 LDA #13 1206 JSR PUSH 1207 RTS 1208 PTYKIL JSR PTYFIX 1209 LDA T3 1210 JSR KILL 1211 RTS 1212 PTYEXI PLA 1213 PLA 1214 RTS 1215 PTYCNN JSR PTYFIX 1216 JSR PARNUM 1217 BCC PTYCNN2 1218 PTYCNN3 JSR PRINT 1219 ASC '?ARGUMENT MISSING' 1220 DFB $8D,0 1221 RTS 1222 PTYCNN2 LDA T3 1223 STA X1 1224 JSR PARNUM 1225 BCS PTYCNN3 1226 LDA T3 1227 STA X2 1228 LDY #JINDEV 1229 LDA X1 1230 STA (PTR2),Y 1231 LDY #JOUTDEV 1232 LDA X2 1233 STA (PTR2),Y 1234 RTS 1235 PTYOPE JSR PTYFIX 1236 JSR PARDEV 1237 BCC PTYOPE2 1238 JSR PRINT 1239 ASC '?DEVICE REQUIRED' 1240 DFB $8D,0 1241 RTS 1242 PTYOPE2 LDY T3 1243 LDA X2 1244 STA DEVSTAT,Y 1245 RTS 1246 DUALSET LDX JOBNO 1247 STA JOBNO 1248 TXA 1249 PHA 1250 JSR SETJOB 1251 LDA JOBPTR 1252 STA PTR2 1253 LDA JOBPTR+1 1254 STA PTR2+1 1255 PLA 1256 STA JOBNO 1257 JSR SETJOB 1258 RTS 1259 LOGOUT JSR PARNUM 1260 BCC LOGOUT2 1261 LDA JOBNO 1262 JSR KILL 1263 JMP DIE 1264 LOGOUT2 LDA T3 1265 STA X1 1266 JSR DUALSET 1267 LDY #JSTATUS 1268 LDA (PTR2),Y 1269 BNE LOGOUT7 1270 JSR PRINT 1271 ASC '?NONEXISTENT JOB' 1272 DFB $8D,0 1273 LOGOUT7 LDY #JSTATUS 1274 LDA (JOBPTR),Y 1275 CMP #3 1276 BCC LOGOUT3 1277 LDA X1 1278 JSR USRCON 1279 BCS LOGOUT5 1280 LOGOUT3 LDA T3 1281 JSR KILL 1282 RTS 1283 LOGOUT5 JSR PRINT 1284 ASC '?WHEEL OR OPERATOR CAPABILITY REQUIRED' 1285 DFB $8D,0 1286 RTS 1287 USRCON STA X1 1288 JSR DUALSET 1289 LDY #JUSERID 1290 LDA (JOBPTR),Y 1291 CMP #'*' 1292 BEQ USRCON4 1293 USRCON2 LDA (JOBPTR),Y 1294 BEQ USRCON3 1295 CMP (PTR2),Y 1296 BNE USRCON4 1297 INY 1298 CPY #JACCOUNT 1299 BNE USRCON2 1300 USRCON3 CLC 1301 RTS 1302 USRCON4 SEC 1303 RTS 1304 DIE JSR SLEEP 1305 JMP DIE 1306 DUMP JSR PARDEV 1307 BCC DUMP2 1308 JSR PRINT 1309 ASC '?ILLEGAL DEVICE' 1310 DFB $8D,0 1311 RTS 1312 DUMP2 LDA T3 1313 STA X1 1314 JSR NAME 1315 ASC 'DUMP' 1316 DFB 0 1317 DUMP5 LDA #10 1318 STA X2 1319 DUMP4 LDY X1 1320 JSR DEVIN 1321 BCS DUMP3 1322 JSR PUSH 1323 DEC X2 1324 BNE DUMP4 1325 DUMP3 JSR SLEEP 1326 JMP DUMP5 1327 WATCH JSR PARJOB 1328 LDA PTR2 1329 STA PTR3 1330 LDA PTR2+1 1331 CLC 1332 ADC #2 1333 STA PTR3+1 1334 JSR NAME 1335 ASC 'WATCH' 1336 DFB 0 1337 JSR PRINT 1338 ASC 'WATCH V1.0...USE TO EXIT' 1339 DFB $8D,0 1340 LDY #JOUTP2 1341 LDA (PTR2),Y 1342 STA X2 1343 WATCH5 LDY #JOUTP1 1344 LDA (PTR2),Y 1345 STA X1 1346 LDY X2 1347 CPY X1 1348 BEQ WATCH4 1349 LDA (PTR3),Y 1350 JSR PUSH 1351 INC X2 1352 JMP WATCH5 1353 WATCH4 JSR SLEEP 1354 JSR PULL 1355 CMP #27 1356 BNE WATCH5 1357 LDA #13 1358 JSR PUSH 1359 RTS 1360 SHOW JSR NAME 1361 ASC 'SHOW' 1362 DFB 0 1363 JSR CMD 1364 DFB #SHOKEY 1365 DFB #SHOADR 1366 JSR PARSE 1367 RTS 1368 SHOKEY ASC 'DEVICES' 1369 DFB 0 1370 ASC 'LOGINS' 1371 DFB 0,0,0 1372 SHOADR DFB #SHODEV,50,0 1373 DFB #SHOLOG,50,0 1374 * 1375 SHODEV JSR PRINT 1376 DFB $8D 1377 ASC 'DEVICE NAME USER' 1378 DFB $8D 1379 ASC '------------------------------' 1380 DFB $8D,0 1381 LDY #1 1382 STY X1 1383 SHODEV4 LDY X1 1384 LDA DEVSTAT,Y 1385 BNE SHODEV5 1386 LDA X1 1387 CMP #4 1388 BCS SHODEV6 1389 LDA DEVSTAT,Y 1390 SHODEV5 CMP JOBNO 1391 BNE SHODEV2 1392 LDA #'*' 1393 JSR PUSH 1394 JMP SHODEV3 1395 SHODEV2 LDA #' ' 1396 JSR PUSH 1397 SHODEV3 LDA X1 1398 STA T1 1399 LDA #0 1400 STA T1+1 1401 JSR DECPRT 1402 LDA #9 1403 JSR TAB 1404 LDY X1 1405 JSR DEVPRT 1406 LDA #26 1407 JSR TAB 1408 LDY X1 1409 LDA DEVSTAT,Y 1410 BNE SHODEV7 1411 JSR PRINT 1412 DFB 91 1413 ASC 'FREE' 1414 DFB 93,0 1415 JMP SHODEV8 1416 SHODEV7 STA T1 1417 LDA #0 1418 STA T1+1 1419 JSR DECPRT 1420 SHODEV8 LDA #13 1421 JSR PUSH 1422 SHODEV6 INC X1 1423 LDA X1 1424 CMP #64 1425 BCC SHODEV4 1426 LDA #13 1427 JSR PUSH 1428 CLC 1429 RTS 1430 SHOLOG LDA SYSLOG 1431 STA PTR4 1432 LDA SYSLOG+1 1433 STA PTR4+1 1434 LDY #0 1435 LDA (PTR4),Y 1436 BNE SHOLOG2 1437 JSR PRINT 1438 ASC 'NO LOGINS' 1439 DFB $8D,0 1440 RTS 1441 SHOLOG2 JSR PRINT 1442 DFB $8D 1443 ASC 'LOGINS ARE ENABLED ON ' 1444 DFB $8D,$8D,0 1445 LDY #0 1446 STY X1 1447 SHOLOG3 LDY X1 1448 LDA (PTR4),Y 1449 BEQ SHOLOG4 1450 TAY 1451 JSR DEVPRT 1452 LDA #13 1453 JSR PUSH 1454 INC X1 1455 JMP SHOLOG3 1456 SHOLOG4 LDA #13 1457 JSR PUSH 1458 CLC 1459 RTS 1460 DEVPRT CPY #1 1461 BEQ DEVPRT1 1462 CPY #2 1463 BEQ DEVPRT2 1464 CPY #3 1465 BEQ DEVPRT3 1466 CPY #32 1467 BCC DEVPRT16 1468 CPY #48 1469 BCC DEVPRT32 1470 CPY #64 1471 BCC DEVPRT64 1472 RTS 1473 DEVPRT1 JSR PRINT 1474 ASC 'CONSOLE:' 1475 DFB 0 1476 RTS 1477 DEVPRT2 JSR PRINT 1478 ASC 'PRINTER:' 1479 DFB 0 1480 RTS 1481 DEVPRT3 JSR PRINT 1482 ASC 'MODEM:' 1483 DFB 0 1484 RTS 1485 DEVPRT16 STY T1 1486 LDA #0 1487 STA T1+1 1488 JSR PRINT 1489 ASC 'BUFFER(' 1490 DFB 0 1491 JSR DECPRT 1492 LDA #')' 1493 JSR PUSH 1494 RTS 1495 DEVPRT32 STY T1 1496 LDA #0 1497 STA T1+1 1498 JSR PRINT 1499 ASC 'DRIVE1(' 1500 DFB 0 1501 JSR DECPRT 1502 LDA #')' 1503 JSR PUSH 1504 RTS 1505 DEVPRT64 STY T1 1506 LDA #0 1507 STA T1+1 1508 JSR PRINT 1509 ASC 'DRIVE2(' 1510 DFB 0 1511 JSR DECPRT 1512 LDA #')' 1513 JSR PUSH 1514 RTS 1515 ECLOSE JSR PARDEV 1516 BCS ECLOSE2 1517 LDY #JSTATUS 1518 LDA (JOBPTR),Y 1519 CMP #3 1520 BCC ECLOSE3 1521 LDY T3 1522 LDA DEVSTAT,Y 1523 CMP JOBNO 1524 BEQ ECLOSE3 1525 JSR PRINT 1526 ASC '?WHEEL OR OPERATOR CAPABILITY REQUIRED' 1527 DFB $8D,0 1528 RTS 1529 ECLOSE3 LDY T3 1530 JSR CLOSE 1531 RTS 1532 ECLOSE2 LDY #63 1533 STY X1 1534 ECLOSE5 LDY X1 1535 LDA DEVSTAT,Y 1536 CMP JOBNO 1537 BNE ECLOSE4 1538 JSR CLOSE 1539 ECLOSE4 DEC X1 1540 BNE ECLOSE5 1541 LDY #JINDEV 1542 LDA (JOBPTR),Y 1543 TAY 1544 JSR OPEN 1545 LDY #JOUTDEV 1546 LDA (JOBPTR),Y 1547 TAY 1548 JSR OPEN 1549 RTS 1550 DET JSR PARJOB 1551 LDY #JSTATUS 1552 LDA (JOBPTR),Y 1553 CMP #3 1554 BCC DET4 1555 LDA T3 1556 JSR USRCON 1557 BCC DET4 1558 JSR PRINT 1559 ASC '?WHEEL OR OPERATOR CAPABILITY REQUIRED' 1560 DFB $8D,0 1561 RTS 1562 DET4 LDA T3 1563 JSR DETACH 1564 RTS 1565 DETACH STA X1 1566 JSR DUALSET 1567 LDY #JSTATUS 1568 LDA (PTR2),Y 1569 BNE DETACH3 1570 JSR PRINT 1571 ASC '?NONEXISTEN JOB' 1572 DFB $8D,0 1573 RTS 1574 DETACH3 LDA PTR2 1575 STA PTR3 1576 LDA PTR2+1 1577 STA PTR3+1 1578 LDY #JPROG 1579 LDA (PTR3),Y 1580 STA X2 1581 INY 1582 LDA (PTR3),Y 1583 STA X2+1 1584 LDY #JSTATUS 1585 LDA (PTR3),Y 1586 STA X3 1587 LDY #JRUNSTAT 1588 LDA (PTR3),Y 1589 STA X3+1 1590 LDA X1 1591 JSR KILL 1592 DETACH2 JSR SLEEP 1593 LDY #JSTATUS 1594 LDA (PTR3),Y 1595 BNE DETACH2 1596 LDA X3 1597 STA (PTR3),Y 1598 LDY #JPROG 1599 LDA X2 1600 STA (PTR3),Y 1601 INY 1602 LDA X2+1 1603 STA (PTR3),Y 1604 LDY #JRUNSTAT 1605 LDA X3+1 1606 STA (PTR3),Y 1607 LDY #JINDEV 1608 LDA #0 1609 STA (PTR3),Y 1610 LDY #JOUTDEV 1611 STA (PTR3),Y 1612 RTS 1613 CONNECT JSR PARJOB 1614 LDA T3 1615 STA X1 1616 LDY #JSTATUS 1617 LDA (JOBPTR),Y 1618 CMP #3 1619 BCC CONNECT6 1620 LDA X1 1621 JSR USRCON 1622 BCC CONNECT6 1623 JSR PRINT 1624 ASC '?WHEEL OR OPERATOR CAPABILITY REQUIRED' 1625 DFB $8D,0 1626 RTS 1627 CONNECT6 LDY #JSTATUS 1628 LDA (PTR2),Y 1629 CMP (JOBPTR),Y 1630 BCS CONNECT7 1631 JSR PRINT 1632 ASC '?OPERATOR CAPABILITY REQUIRED' 1633 DFB $8D,0 1634 RTS 1635 CONNECT7 LDY #JINDEV 1636 LDA (PTR2),Y 1637 LDY #JOUTDEV 1638 ORA (PTR2),Y 1639 BEQ CONNECT2 1640 JSR PRINT 1641 ASC '?JOB NOT DETACHED' 1642 DFB $8D,0 1643 RTS 1644 CONNECT2 LDA X1 1645 JSR DUALSET 1646 LDY #JINDEV 1647 LDA (JOBPTR),Y 1648 STA (PTR2),Y 1649 TAY 1650 LDA X1 1651 STA DEVSTAT,Y 1652 LDY #JINDEV 1653 LDA #0 1654 STA (JOBPTR),Y 1655 LDY #JOUTDEV 1656 LDA (JOBPTR),Y 1657 STA (PTR2),Y 1658 TAY 1659 LDA X1 1660 STA DEVSTAT,Y 1661 LDY #JOUTDEV 1662 LDA #0 1663 STA (JOBPTR),Y 1664 LDY #JCCOUNT 1665 LDA #1 1666 STA (PTR2),Y 1667 RTS 1668 PARJOB JSR PARNUM 1669 BCS PARJOB4 1670 LDA MAXJOBS 1671 CMP T3 1672 BCS PARJOB2 1673 PARJOB4 JSR PRINT 1674 ASC '?JOB NUMBER REQUIRED' 1675 DFB $8D,0 1676 PARJOB3 PLA 1677 PLA 1678 RTS 1679 PARJOB2 LDA T3 1680 JSR DUALSET 1681 LDY #JSTATUS 1682 LDA (PTR2),Y 1683 BNE PARJOB5 1684 JSR PRINT 1685 ASC '?NONEXISTENT JOB' 1686 DFB $8D,0 1687 PLA 1688 PLA 1689 RTS 1690 PARJOB5 RTS 1691 PARDEV JSR PARNUM 1692 BCS PARDEV2 1693 CLC 1694 RTS 1695 PARDEV2 JSR CMD 1696 DFB #DEVKEY 1697 DFB #DEVADR 1698 JSR PARSE 1699 SEC 1700 RTS 1701 DEVKEY ASC 'CONSOLE' 1702 DFB 0 1703 ASC 'PRINTER' 1704 DFB 0 1705 ASC 'MODEM' 1706 DFB 0 1707 ASC 'BUFFER' 1708 DFB 0,0,0 1709 DEVADR DFB #DEVCON,50,0 1710 DFB #DEVPTR,50,0 1711 DFB #DEVMDM,50,0 1712 DFB #DEVBUF,50,0 1713 DEVCON LDA #1 1714 STA T3 1715 BNE PARDEV3 1716 DEVPTR LDA #2 1717 STA T3 1718 BNE PARDEV3 1719 DEVMDM LDA #3 1720 STA T3 1721 BNE PARDEV3 1722 DEVBUF JSR PARNUM 1723 BCC DEVBUF2 1724 LDA #16 1725 STA T3 1726 DEVBUF2 JMP PARDEV3 1727 PARDEV3 PLA 1728 PLA 1729 CLC 1730 RTS 1731 TERMINAL JSR CMD 1732 DFB #TERMKEY 1733 DFB #TERMADR 1734 JSR PARSE 1735 RTS 1736 TERMKEY ASC 'FULL' 1737 DFB 0 1738 ASC 'HALF' 1739 DFB 0 1740 ASC 'OPERATOR' 1741 DFB 0,0,0 1742 TERMADR DFB #TERME,50,0 1743 DFB #TERMN,50,0 1744 DFB #TERMO,255,0 1745 TERME LDY #JECHO 1746 LDA #0 1747 STA (JOBPTR),Y 1748 RTS 1749 TERMN LDY #JECHO 1750 LDA #1 1751 STA (JOBPTR),Y 1752 RTS 1753 TERMO JSR PRINT 1754 ASC 'PASSWORD:' 1755 DFB 0 1756 LDA #0 1757 STA X1 1758 STA X2 1759 TERMO2 JSR SLEEP 1760 JSR PULL 1761 BCS TERMO2 1762 CMP #13 1763 BEQ TERMO3 1764 LDY X1 1765 CMP PASS,Y 1766 BEQ TERMO4 1767 LDA #1 1768 STA X2 1769 TERMO4 INC X1 1770 JMP TERMO2 1771 TERMO3 LDA X1 1772 BEQ TERMO5 1773 LDA X2 1774 BNE TERMO5 1775 LDY #JSTATUS 1776 LDA #1 1777 STA (JOBPTR),Y 1778 LDA #13 1779 JSR PUSH 1780 RTS 1781 TERMO5 JSR PRINT 1782 DFB $8D 1783 ASC '?INVALID PASSWORD' 1784 DFB $8D,0 1785 RTS 1786 PASS ASC 'STICK' 1787 DFB 0 1788 OPR JSR PROMPT 1789 ASC 'OPR>' 1790 DFB 0 1791 JSR NAME 1792 ASC 'OPR' 1793 DFB 0 1794 JSR READLN 1795 JSR CMD 1796 DFB #OPRKEY 1797 DFB #OPRADR 1798 JSR PARSE 1799 JMP OPR 1800 OPRKEY ASC 'SEND' 1801 DFB 0,0,0 1802 OPRADR DFB #SEND,2,0 1803 SEND JSR PARJOB 1804 LDA T3 1805 STA X1 1806 JSR NAME 1807 ASC 'SEND' 1808 DFB 0 1809 JSR PRINT 1810 ASC 'ENTER LINE. TERMINATE WITH ' 1811 DFB $8D,0 1812 JSR PROMPT 1813 ASC '>' 1814 DFB 0 1815 JSR READLN 1816 LDY #JPRSEP1 1817 LDA (JOBPTR),Y 1818 CMP #128 1819 BCC SEND3 1820 JSR PRINT 1821 ASC '?LINE TOO LONG' 1822 DFB $8D,0 1823 RTS 1824 SEND3 JSR PRINT 1825 ASC 'SENDING...' 1826 DFB $8D,0 1827 LDA X1 1828 JSR DUALSET 1829 SEND2 JSR SLEEP 1830 LDY #JOUTP1 1831 LDA (PTR2),Y 1832 LDY #JOUTP2 1833 CMP (PTR2),Y 1834 BNE SEND2 1835 LDY #JPRSEP1 1836 LDA (JOBPTR),Y 1837 STA X3 1838 LDA PRSEBUF 1839 STA PTR4 1840 LDA PRSEBUF+1 1841 STA PTR4+1 1842 LDA JOBNO 1843 STA X2 1844 LDA X1 1845 STA JOBNO 1846 JSR SETJOB 1847 JSR PRINT 1848 ASC '*** JOB ' 1849 DFB 0 1850 LDA X2 1851 STA T1 1852 LDA #0 1853 STA T1+1 1854 JSR DECPRT 1855 JSR PRINT 1856 ASC ' *** ' 1857 DFB 0 1858 LDY #0 1859 STY X4 1860 SEND4 LDY X4 1861 CPY X3 1862 BEQ SEND5 1863 LDA (PTR4),Y 1864 JSR PUSH 1865 INC X4 1866 JMP SEND4 1867 SEND5 LDA X2 1868 STA JOBNO 1869 JSR SETJOB 1870 JSR PRINT 1871 ASC 'MESSAGE SENT' 1872 DFB $8D,0 1873 RTS 1874 PICKUP LDX #$20 1875 LDA #%10001011 1876 STA $C085,X 1877 LDA #3 1878 STA $C086,X 1879 LDA #0 1880 STA $C087,X 1881 LDA #1 1882 STA SYSMDM 1883 LDA #21 1884 STA $C086,X 1885 RTS 1886 HANGUP LDX #$20 1887 LDA #0 1888 STA $C085,X 1889 LDA #0 1890 STA SYSMDM 1891 RTS 1892 MONITOR LDA #12 1893 JSR PUSH 1894 MONITOR2 LDA #0 1895 STA $24 1896 STA $25 1897 JSR SYSTAT 1898 MONITOR3 JSR SLEEP 1899 LDY #JOUTP1 1900 LDA (JOBPTR),Y 1901 LDY #JOUTP2 1902 CMP (JOBPTR),Y 1903 BNE MONITOR3 1904 JSR -868 1905 JSR -958 1906 JSR SLEEP 1907 JMP MONITOR2 1908 ENDPRG DFB 0