[Copyright 1999,2002 Frank Durda IV, All Rights Reserved. Mirroring of any material on this page in any form is expressly prohibited. The official web site for this material is: http://nemesis.lonestar.org Contact this address for use clearances: clearance at nemesis.lonestar.org Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]
MISOSYS EDAS-4.3 04/19/99 21:13:10 CMDFILE - Version 1.5 Page 00001 00001 ;CMDFIL/ASM - 08/16/82 FFFF 00003 DOS6 EQU -1 FFFF 00004 NOTTAPE EQU -1 0000 00005 NOTDISK EQU .NOT.NOTTAPE FFFF 00006 LDOS EQU -1 0000 00007 EDAS EQU 0 0000 00008 SIMUTEK EQU 0 0000 00009 MOD1 EQU 0 FFFF 00010 MOD3 EQU .NOT.MOD1 FFFF 00011 EXPAND DEFL -1 00012 IF EDAS!SIMUTEK!LDOS 0000 00013 EXPAND DEFL 0 00014 ENDIF 00015 ;*=*=* 00016 ; COMMAND FILE UTILITY PROGRAM 00017 ; 00018 ; Copyright (C) 1979 00019 ; MISOSYS 00020 ; 5904 Edgehill Drive 00021 ; Alexandria, VA. 22303 00022 ;*=*=* 00023 ; 00024 ; Change Log 00025 ; 00026 ; 12-11-79 >ADDED OFFSET DRIVERS 00027 ; 12-11-79 >ADDED YESNO ROUTINE 00028 ; 12-12-79 >ADDED SUPPRESSION OF KBD DBNC DRVR OFFSET 00029 ; 12-15-79 >RECYCLE TAPE OUTPUT TO ITSELF ON ANOTHER 00030 ; 12-15-79 >SHIFTED INIT OF LO & HI TO AFTER 'NOPRT' 00031 ; 12-20-79 >ADD BYPASS TO OUTPUT LO/HI IF INPUT FROM TAPE 00032 ; 12-21-79 >ADDED PRINT & DSPLY ROUTINES FOR NON-DOS USER 00033 ; 12-22-79 >ADDED LO/HI DETECTION FOR TAPE INPUT 00034 ; 12-25-79 >ADDED PATCH TO 'SYSTEM' DOS HOOK AT 41E2H 00035 ; 12-27-79 >CORRECTED TRAADR WHEN OFFSET OR USER CHANGE 00036 ; 07-09-80 >Converted messages to lower case 00037 ; 07-26-80 >Added test touery, added default CMD 00038 ; >added FSPEC & FEXT, suppresses offset 00039 ; >if blkadr < 4200H 00040 ; 09-21-80 >added wrret after cas prompt 00041 ; 09-26-80 >added offset restriction option 00042 ; 09-28-80 -> added routine to read VTOS ISAM file 00043 ; 01/19/81 -> added EOF correction in close & modified 00044 ; for LDOS directory function 00045 ; 02/01/81 -> Corrected offset ORG if keyboard debounce 00046 ; 02/07/81 -> corrected EOF & offset e/w kbd dbnc 00047 ; 06/15/81 -> Model III conversion 00048 ; 06/18/81 -> Modified Query for /EXT option 00049 ; 09/16/81 - Added CMDFILEA/FX3 00050 ; 10/16/81 - Updated to latest - couldn't find deck 00051 ; & added PATCH1 to correct offsetting if <4200 00052 ; 10/26/81 - Convert tape FILNAM to U/C 00053 ; 10-30-81 - Added patch2 for l/c -> U/C tape filename 00054 ; 11/04/81 - Adapted to one version, improved disk driver 00055 ; & altered YESNO to reprompt 00056 ; 12/11/81 - Corrected TAPERD clobbering HL memory ptr 00057 ; 01/14/82 - Corrected read of SYS6/SYS7 00058 ; 01/27/82 - Corrected EOF+1 due to BUFPTR handling 00059 ; 08/15/82 - Corrected CHKMEM to RET NZ 00060 ;***** 000A 00061 LF EQU 10 000D 00062 CR EQU 13 01F8 00063 CTOFF EQU 01F8H 0212 00064 CTON EQU 0212H 022C 00065 CSTAR EQU 022CH 0235 00066 RDBYT EQU 0235H 0264 00067 WRBYT EQU 0264H 0287 00068 WRLDR EQU 0287H 0296 00069 RDLDR EQU 0296H 0314 00070 TAPADR EQU 0314H 3042 00071 SETCAS EQU 3042H 37E1 00072 SELECT EQU 37E1H 4015 00073 KDCB$ EQU 4015H 401D 00074 DDCB$ EQU 401DH 4020 00075 CURSOR$ EQU 4020H 4025 00076 PDCB$ EQU 4025H 402D 00077 @EXIT EQU 402DH 402F 00078 LVLFLG EQU 402FH 06CC 00079 BASIC1 EQU 6CCH 1A19 00080 BASIC3 EQU 1A19H 4049 00081 HIGH1 EQU 4049H 4411 00082 HIGH3 EQU 4411H 4473 00083 FEXT1 EQU 4473H 444B 00084 FEXT3 EQU 444BH 03E3 00085 KIADR1 EQU 3E3H 3024 00086 KIADR3 EQU 3024H 00087 ; 44B8 00088 CKDRV1 EQU 44B8H 4209 00089 CKDRV3 EQU 4209H 4463 00090 DODIR1 EQU 4463H ;LDOS Model I 4419 00091 DODIR3 EQU 4419H ;Model III only 00092 ; 00094 ; 00095 IF NOTDISK 00096 ORG 41E2H 00097 JP 5400H 00098 ENDIF 00099 ; 00100 IF DOS6 0000 00101 *GET SVCMAC 00102 ;SVCMAC/ASM - LS-DOS Version VI 00103 *LIST OFF 00495 *LIST ON 2600 00497 ORG 2600H 2600 00498 BUFFER$ DS 256 2700 00499 STACK DS 256 2800 310028 00500 START LD SP,$ 2803 210000 00501 LD HL,0 2806 45 00502 LD B,L 2807 00503 @@HIGH$ 2807+3E64 00504 LD A,100 2809+EF 00505 RST 40 280A 22E52B 00506 LD (HIGHEST+1),HL 280D 211D2D 00507 LD HL,RST24 2810 3EC3 00508 LD A,0C3H 2812 321800 00509 LD (24),A 2815 221900 00510 LD (25),HL 00511 ELSE 00513 ORG 5200H 00514 BUFFER$ DS 256 00515 STACK DS 256 00516 START LD SP,$ 00517 LD A,(125H) ;Ck Mod I or III 00518 CP 'I' ;Is it a III? 00519 JR Z,MODEL3 ;Go if Model III 00520 LD A,3 00521 LD (CASMSG+24),A ;Stripfrom prompt 00522 LD HL,@KEY 00523 LD (PRMPT+1),HL ;Chg SETCAS to get KEY 00524 LD HL,HIGH1 ;Reset HIGH$ pointer 00525 LD (HIGHEST+1),HL 00526 LD HL,FEXT1 ;Reset FEXT call 00527 LD (FEXT+1),HL 00528 ; 00529 IF .NOT.LDOS 00530 LD HL,BASIC1 ;Reset BASIX exit vector 00531 LD (BASIC+1),HL 00532 ENDIF 00533 ; 00534 LD HL,KIADR1 ;Reset debounce inhibit 00535 LD (KIHOOK),HL 00536 ; 00537 IF LDOS 00538 LD HL,DODIR1 00539 LD (DODIR+1),HL 00540 LD HL,CKDRV1 00541 LD (NOEXT+1),HL 00542 ENDIF 00543 ; 00544 MODEL3 00545 ENDIF 2818 215C2D 00546 LD HL,HELLO$ 281B CD0A2D 00547 CALL DSPLY 281E AF 00548 XOR A 281F 320432 00549 LD (PRTFLG),A 2822 216F2E 00550 LD HL,PRTREQ 2825 CDE12C 00551 CALL YESNO 2828 3803 00552 JR C,NOPRT 282A 320432 00553 LD (PRTFLG),A 282D 210333 00554 NOPRT LD HL,MEMBUF+3 2830 22F231 00555 LD (MEMPTR),HL 2833 AF 00556 XOR A 2834 320632 00557 LD (HLDFLG),A ;Zero DBNC hold flag 2837 67 00558 LD H,A 2838 6F 00559 LD L,A 2839 22FE31 00560 LD (OFFSET),HL 283C 22FA31 00561 LD (HIADR),HL ;Init hi and lo 283F 2B 00562 DEC HL 2840 22FC31 00563 LD (LOADR),HL 00564 ; 2843 310028 00565 BEGIN LD SP,START 2846 21982F 00566 LD HL,INPMPT 2849 CD162C 00567 CALL GETARG 284C 282F 00568 JR Z,OUTPUT 284E 7E 00569 LD A,(HL) 284F E65F 00570 AND 5FH ;Strip lower case 00571 ; 00572 IF EXPAND!LDOS 2851 FE51 00573 CP 'Q' 2853 CA8C2C 00574 JP Z,QUERY 00575 ENDIF 00576 ; 2856 2AF231 00577 LD HL,(MEMPTR) 2859 2B 00578 DEC HL ;Backup over TRAADR 285A 2B 00579 DEC HL 285B 2B 00580 DEC HL 285C 2B 00581 DEC HL 285D FE43 00582 CP 'C' 285F 289F 00583 JR Z,START 2861 FE45 00584 CP 'E' 2863 CA122D 00585 JP Z,DOS 00586 IF .NOT.DOS6 00587 CP 'T' ;Tape? 00588 JR Z,TAPE 00589 ENDIF 2866 FE44 00590 CP 'D' ;Disk? 2868 20D9 00591 JR NZ,BEGIN 286A E5 00592 DISK PUSH HL 286B 21C62D 00593 LD HL,FIL1PR 286E CDF52B 00594 CALL PROMPT 2871 CD282C 00595 CALL OPNFIL 2874 E1 00596 POP HL 2875 CD532A 00597 CALL RDPROG 2878 22F231 00598 INPFIN LD (MEMPTR),HL ;Update where we left off 287B 18C6 00599 JR BEGIN 00600 IF .NOT.DOS6 00601 TAPE CALL RDTAPE 00602 JR INPFIN 00603 ENDIF 00604 ;***** 00605 ; Routine to process output request 00606 ;***** 287D 210333 00607 OUTPUT LD HL,MEMBUF+3 ;Ck for file input 2880 ED5BF231 00608 LD DE,(MEMPTR) 2884 DF 00609 RST 24 2885 2009 00610 JR NZ,OUTA 2887 21212F 00611 LD HL,NOINP 288A CD0A2D 00612 CALL DSPLY 288D C32D28 00613 JP NOPRT 2890 21FD31 00614 OUTA LD HL,LOADR+1 ;Insert load address 2893 114330 00615 LD DE,PGML1 ;Into loader message 2896 CDC52B 00616 CALL WRBLK 2899 21FB31 00617 LD HL,HIADR+1 289C 114B30 00618 LD DE,PGML2 289F CDC52B 00619 CALL WRBLK 28A2 212330 00620 LD HL,PGMLOD 28A5 CD0A2D 00621 CALL DSPLY 28A8 215030 00622 LD HL,MOVREQ ;Offset file? 28AB CD162C 00623 CALL GETARG 28AE CA7229 00624 JP Z,OUT0 ;Don't add loader 00625 ;***** 00626 ; Routine to add offset loader 00627 ;***** 28B1 EB 00628 EX DE,HL ;Pt to 1st char 28B2 1A 00629 LD A,(DE) 28B3 CDB52C 00630 CALL GETVAL 28B6 38D8 00631 JR C,OUTA 28B8 E5 00632 PUSH HL 28B9 21FF41 00633 LD HL,41FFH ;ck for <4200H 28BC ED5BFC31 00634 LD DE,(LOADR) 28C0 DF 00635 RST 24 28C1 3813 00636 JR C,NOPROB ;not below 28C3 211B31 00637 LOCK1 LD HL,LOMSG ;user want to restrict? 28C6 CD232D 00638 CALL PATCH1 28C9 280B 00639 JR Z,NOPROB ;no, if no entry 28CB EB 00640 EX DE,HL 28CC 1A 00641 LD A,(DE) ;grab 1st byte 28CD CDB52C 00642 CALL GETVAL ;grab & convert 28D0 38F1 00643 JR C,LOCK1 ;again if bad char 28D2 22FC31 00644 LD (LOADR),HL ;stuff lower limit 28D5 EB 00645 EX DE,HL 28D6 E1 00646 NOPROB POP HL ;calc offset 28D7 AF 00647 XOR A 28D8 ED52 00648 SBC HL,DE 28DA 22FE31 00649 LD (OFFSET),HL 28DD CB14 00650 RL H ;Test offset for +,- 28DF 3814 00651 JR C,NEGMOV 28E1 3EB0 00652 LD A,0B0H ;Init for LDIR 28E3 32582D 00653 LD (LDMOV+1),A 28E6 CB1C 00654 RR H 28E8 EB 00655 EX DE,HL ;Offset -> DE 28E9 2AFC31 00656 LD HL,(LOADR) 28EC 22522D 00657 LD (LDDE+1),HL 28EF 19 00658 ADD HL,DE 28F0 224F2D 00659 LD (LDHL+1),HL 28F3 1812 00660 JR ALLMOV 28F5 3EB8 00661 NEGMOV LD A,0B8H ;Init for LDDR 28F7 32582D 00662 LD (LDMOV+1),A 28FA CB1C 00663 RR H 28FC EB 00664 EX DE,HL ;Offset -> DE 28FD 2AFA31 00665 LD HL,(HIADR) 2900 22522D 00666 LD (LDDE+1),HL 2903 19 00667 ADD HL,DE 2904 224F2D 00668 LD (LDHL+1),HL 2907 2AF831 00669 ALLMOV LD HL,(TRAADR) 290A 225A2D 00670 LD (LDJP+1),HL 290D 2AFA31 00671 LD HL,(HIADR) ;Ins new xfer addr 2910 23 00672 INC HL 2911 224B2D 00673 LD (LDADR),HL 2914 E5 00674 PUSH HL ;Save for xfer addr upd 2915 ED5BFC31 00675 LD DE,(LOADR) ;Calc move length 2919 AF 00676 XOR A 291A ED52 00677 SBC HL,DE 291C 22552D 00678 LD (LDBC+1),HL 291F 21E130 00679 LD HL,DVRMSG ;User want offset driver? 2922 CDE12C 00680 CALL YESNO 2925 E1 00681 POP HL ;Pop xfer addr upd 2926 384A 00682 JR C,OUT0 ;Jump if not 2928 ED5BFE31 00683 LD DE,(OFFSET) ;Add offset here 292C 19 00684 ADD HL,DE ;This is a traadr 292D 22F831 00685 LD (TRAADR),HL ;Pt TRAADR to routine 2930 217430 00686 LD HL,DIMSG ;Interrupt req? 2933 CDE12C 00687 CALL YESNO 2936 3002 00688 JR NC,PUTDI 2938 AF 00689 XOR A 2939 01 00690 DEFB 1 ;Ignore next 2 bytes 293A 3EF3 00691 PUTDI LD A,0F3H ;Ins DI 293C 324D2D 00692 LD (DINOP),A 293F 21A730 00693 LD HL,KBCREQ ;Keep debounce? 2942 CDE12C 00694 CALL YESNO 2945 2AF231 00695 LD HL,(MEMPTR) ;Reset memory pointer 2948 2B 00696 DEC HL 2949 2B 00697 DEC HL 294A 2B 00698 DEC HL 294B 2B 00699 DEC HL 294C 380E 00700 JR C,LVDBNC 294E 11432D 00701 LD DE,BNCOFF ;Move stripper 2951 0606 00702 LD B,6 2953 1A 00703 BNCL1 LD A,(DE) 2954 D5 00704 PUSH DE 2955 CDE12B 00705 CALL CHKMEM 2958 D1 00706 POP DE 2959 13 00707 INC DE 295A 10F7 00708 DJNZ BNCL1 295C 11492D 00709 LVDBNC LD DE,LOADER ;Move loader 295F 0613 00710 LD B,19 2961 1A 00711 BNCL2 LD A,(DE) 2962 D5 00712 PUSH DE 2963 CDE12B 00713 CALL CHKMEM 2966 D1 00714 POP DE 2967 13 00715 INC DE 2968 10F7 00716 DJNZ BNCL2 296A CD9F2B 00717 CALL PUTTRA 296D 22F231 00718 LD (MEMPTR),HL ;Reset pointer 2970 1820 00719 JR SAMTRA ;User can't update TRAADR 2972 21F931 00720 OUT0 LD HL,TRAADR+1 2975 11C32E 00721 LD DE,NEWT1 2978 CDC52B 00722 CALL WRBLK 297B 21962E 00723 OUT1 LD HL,NEWTRA 297E CD162C 00724 CALL GETARG 2981 280F 00725 JR Z,SAMTRA 2983 EB 00726 EX DE,HL 2984 1A 00727 LD A,(DE) 2985 CDB52C 00728 CALL GETVAL 2988 38F1 00729 JR C,OUT1 298A EB 00730 EX DE,HL ;New TRA -> DE 298B 2AF231 00731 LD HL,(MEMPTR) 298E 2B 00732 DEC HL 298F 73 00733 LD (HL),E 2990 23 00734 INC HL 2991 72 00735 LD (HL),D 2992 21E92F 00736 SAMTRA LD HL,OUTDT 2995 CD162C 00737 CALL GETARG 2998 CA0028 00738 JP Z,START 299B 7E 00739 LD A,(HL) 299C E65F 00740 AND 5FH ;Strip LC 299E FE45 00741 CP 'E' 29A0 CA122D 00742 JP Z,DOS 29A3 FE43 00743 CP 'C' 29A5 CA0028 00744 JP Z,START 00745 IF .NOT.DOS6 00746 CP 'T' ;Tape? 00747 JP Z,TAPOUT 00748 ENDIF 29A8 FE44 00749 CP 'D' ;Disk? 29AA 20E6 00750 JR NZ,SAMTRA 00751 ;***** 00752 ; Routine to write command files 00753 ;***** 29AC 21CA2E 00754 LD HL,OUTSPC 29AF CDF52B 00755 CALL PROMPT 29B2 210026 00756 LD HL,BUFFER$ 29B5 22F031 00757 LD (BUFPTR),HL 29B8 0600 00758 LD B,0 29BA 00759 @@INIT 29BA+3E3A 00760 LD A,58 29BC+EF 00761 RST 40 29BD C23B2C 00762 JP NZ,GOTERR 29C0 21FF32 00763 LD HL,MEMBUF-1 29C3 23 00764 WRLP INC HL 29C4 7E 00765 LD A,(HL) 29C5 FE01 00766 CP 1 29C7 281F 00767 JR Z,DSKBLK 29C9 FE02 00768 CP 2 29CB 283C 00769 JR Z,DSKTRA 29CD FE03 00770 CP 3 29CF 2812 00771 JR Z,SPCL1 29D1 CD2B2A 00772 CALL WRDBYT ;Write comment header 29D4 23 00773 INC HL 29D5 7E 00774 LD A,(HL) 29D6 47 00775 LD B,A 29D7 CD2B2A 00776 CALL WRDBYT ;Write comment length 29DA 23 00777 WRLP1 INC HL 29DB 7E 00778 LD A,(HL) 29DC CD2B2A 00779 CALL WRDBYT 29DF 10F9 00780 DJNZ WRLP1 29E1 18E0 00781 JR WRLP 29E3 3E01 00782 SPCL1 LD A,1 ;Turn off the 29E5 320632 00783 LD (HLDFLG),A ; block offset 29E8 CD2B2A 00784 DSKBLK CALL WRDBYT ;Write block header 29EB 23 00785 INC HL 29EC 7E 00786 LD A,(HL) 29ED 47 00787 LD B,A 29EE CD2B2A 00788 CALL WRDBYT ;Write block length 29F1 CD312A 00789 CALL CHKADR 29F4 7B 00790 LD A,E 29F5 D5 00791 PUSH DE 29F6 CD2B2A 00792 CALL WRDBYT 29F9 D1 00793 POP DE 29FA 7A 00794 LD A,D 29FB CD2B2A 00795 CALL WRDBYT 29FE 05 00796 DEC B ;Reduce length for addr 29FF 05 00797 DEC B 2A00 23 00798 WRLP2 INC HL 2A01 7E 00799 LD A,(HL) 2A02 CD2B2A 00800 CALL WRDBYT 2A05 10F9 00801 DJNZ WRLP2 2A07 18BA 00802 JR WRLP 2A09 0604 00803 DSKTRA LD B,4 2A0B CD2B2A 00804 CALL WRDBYT 2A0E 23 00805 INC HL 2A0F 7E 00806 LD A,(HL) 2A10 10F9 00807 DJNZ DSKTRA+2 2A12 3AF031 00808 CLSFIL LD A,(BUFPTR) ;P/u eof byte 2A15 B7 00809 OR A ;Write last buffer? 2A16 32B231 00810 LD (DCB+8),A ;Stuff EOF offset 2A19 C47F2C 00811 CALL NZ,LASTWR ;Write if BUFPTR <> 0 2A1C CD6F2C 00812 CALL RWEND 2A1F 21EB2E 00813 LD HL,FINMSG 2A22 CDE12C 00814 CALL YESNO 2A25 D29229 00815 JP NC,SAMTRA 2A28 C32D28 00816 JP NOPRT 2A2B E5 00817 WRDBYT PUSH HL 2A2C CD762C 00818 CALL DISKWR 2A2F E1 00819 POP HL 2A30 C9 00820 RET 00821 ;***** 00822 ; Routine to check load or xfer addr for offset 00823 ;***** 2A31 23 00824 CHKADR INC HL 2A32 5E 00825 LD E,(HL) ;Get load address into DE 2A33 23 00826 INC HL 2A34 56 00827 LD D,(HL) 2A35 E5 00828 PUSH HL 2A36 210632 00829 LD HL,HLDFLG ;Test hold flag 2A39 34 00830 INC (HL) ; for suppression 2A3A 35 00831 DEC (HL) ; of offset 2A3B 2803 00832 JR Z,DOOFF 2A3D 35 00833 DEC (HL) ;Turn off the flag 2A3E 1811 00834 JR NOTMVD 2A40 2AFC31 00835 DOOFF LD HL,(LOADR) ;Don't offset 3 2C9D 4F 01388 LD C,A 2C9E 0600 01389 LD B,0 2CA0 7E 01390 LD A,(HL) 2CA1 FE2F 01391 CP '/' 2CA3 2005 01392 JR NZ,NOEXT 2CA5 3600 01393 LD (HL),0 ;Clear for next query 2CA7 23 01394 INC HL ;Bump to EXT 2CA8 0602 01395 LD B,2 2CAA 01396 NOEXT @@CKDRV ;Drive available? 2CAA+3E21 01397 LD A,33 2CAC+EF 01398 RST 40 2CAD 20D8 01399 JR NZ,BAD 2CAF 01400 DODIR @@DODIR 2CAF+3E22 01401 LD A,34 2CB1+EF 01402 RST 40 2CB2 C34328 01403 JP BEGIN 01404 ENDIF 01405 ; 01406 ;***** 01407 ; Routine to convert input (hex) to 2-byte value 01408 ;***** 2CB5 210000 01409 GETVAL LD HL,0 2CB8 FE61 01410 GETV1 CP 'a' ;Cvrt to U/C if needed 2CBA 3802 01411 JR C,$+4 2CBC CBAF 01412 RES 5,A 2CBE CDD02C 01413 CALL CVB 2CC1 D8 01414 RET C 2CC2 29 01415 ADD HL,HL 2CC3 29 01416 ADD HL,HL 2CC4 29 01417 ADD HL,HL 2CC5 29 01418 ADD HL,HL 2CC6 B5 01419 OR L ;Insert the 0-15 into 2CC7 6F 01420 LD L,A ; low order nybble 2CC8 13 01421 INC DE ;Get next char 2CC9 1A 01422 LD A,(DE) 2CCA FE0D 01423 CP 0DH ;Ck for last char 2CCC 20EA 01424 JR NZ,GETV1 2CCE AF 01425 XOR A ;Valid input 2CCF C9 01426 RET 2CD0 D630 01427 CVB SUB 30H 2CD2 D8 01428 RET C 2CD3 C6E9 01429 ADD A,0E9H 2CD5 D8 01430 RET C 2CD6 C606 01431 ADD A,6 2CD8 3803 01432 JR C,ATOF 2CDA C607 01433 ADD A,7 2CDC D8 01434 RET C 2CDD C60A 01435 ATOF ADD A,10 2CDF B7 01436 OR A 2CE0 C9 01437 RET 01438 ;***** 01439 ; Response yes/no routine 01440 ;***** 2CE1 CD0A2D 01441 YESNO CALL DSPLY ;Display prompt 2CE4 E5 01442 PUSH HL ;Save messge ptr 2CE5 210032 01443 LD HL,ANSWER 2CE8 0601 01444 LD B,1 2CEA 01445 @@KEYIN 2CEA+3E09 01446 LD A,9 2CEC+EF 01447 RST 40 2CED AF 01448 XOR A 2CEE B0 01449 OR B 2CEF 7E 01450 LD A,(HL) ;P/u the response 2CF0 E1 01451 POP HL ;Rcvr message ptr 2CF1 28EE 01452 JR Z,YESNO 2CF3 E65F 01453 AND 5FH ;STRIP LC 2CF5 FE43 01454 CP 'C' 2CF7 CA0028 01455 JP Z,START 2CFA FE45 01456 CP 'E' 2CFC CA122D 01457 JP Z,DOS 2CFF FE4E 01458 CP 'N' ;N? 2D01 2805 01459 JR Z,NO 2D03 FE59 01460 CP 'Y' 2D05 20DA 01461 JR NZ,YESNO 2D07 C9 01462 YES RET 2D08 3F 01463 NO CCF 2D09 C9 01464 RET 01465 ;***** 01466 ; Output routines for the non-DOS user 01467 ;***** 01468 ; 01469 IF DOS6 2D0A 01470 DSPLY @@DSPLY 01471 IFEQ 00H,1 01472 LD HL, 01473 ENDIF 2D0A+3E0A 01474 LD A,10 2D0C+EF 01475 RST 40 2D0D C9 01476 RET 2D0E 01477 PRINT @@PRINT 01478 IFEQ 00H,1 01479 LD HL, 01480 ENDIF 2D0E+3E0E 01481 LD A,14 2D10+EF 01482 RST 40 2D11 C9 01483 RET 2D12 3EC9 01484 DOS LD A,0C9H 2D14 321800 01485 LD (24),A 2D17 210000 01486 LD HL,0 2D1A 01487 @@EXIT 2D1A+3E16 01488 LD A,22 2D1C+EF 01489 RST 40 2D1D 7C 01490 RST24 LD A,H 2D1E BA 01491 CP D 2D1F C0 01492 RET NZ 2D20 7D 01493 LD A,L 2D21 BB 01494 CP E 2D22 C9 01495 RET 01496 ELSE 01497 IF LDOS 01498 DSPLY EQU @DSPLY 01499 PRINT EQU @PRINT 01500 DOS EQU @EXIT 01501 ENDIF 01502 ; 01503 IF .NOT.LDOS 01504 DSPLY LD DE,DDCB$ 01505 D1 PUSH HL 01506 D2 LD A,(HL) 01507 CP 3 01508 JR Z,D3 01509 PUSH AF 01510 CALL @PUT 01511 POP AF 01512 INC HL 01513 CP 0DH 01514 JR NZ,D2 01515 D3 POP HL 01516 RET 01517 PRINT LD DE,PDCB$ 01518 JR D1 01519 DOS LD A,(LVLFLG) 01520 CP 50H 01521 BASIC JP Z,BASIC3 01522 JP @EXIT 01523 ENDIF 01524 ENDIF 01525 ; 01526 ;***** 01527 ; Reserved space for patch code 01528 ;***** 2D23 D5 01529 PATCH1 PUSH DE 2D24 CD162C 01530 CALL GETARG 2D27 D1 01531 POP DE 2D28 C9 01532 RET 2D29 FE61 01533 PATCH2 CP 'a' 2D2B 3806 01534 JR C,PATCH2A 2D2D FE7B 01535 CP 'z'+1 2D2F 3002 01536 JR NC,PATCH2A 2D31 CBAF 01537 RES 5,A 2D33 C36402 01538 PATCH2A JP WRBYT 2D36 01539 DS 13 01540 ;***** 01541 ; Loader routines 01542 ;***** 2D43 03 01543 BNCOFF DEFB 3 2D44 04 01544 DEFB 4 2D45 1640 01545 DEFW KDCB$+1 2D47 2430 01546 KIHOOK DEFW KIADR3 2D49 01 01547 LOADER DEFB 1 ;Start of block 2D4A 11 01548 DEFB 17 ;Block length 2D4B 0000 01549 LDADR DEFW 0 ;Load address 2D4D 00 01550 DINOP NOP ;Possible DI 2D4E 210000 01551 LDHL LD HL,0 ;Relocator routine 2D51 110000 01552 LDDE LD DE,0 2D54 010000 01553 LDBC LD BC,0 2D57 EDB0 01554 LDMOV LDIR ;LDIR or LDDR 2D59 C30000 01555 LDJP JP 0 01557 ;***** 01558 ; DATA AREA 01559 ;***** 2D5C 1C 01560 HELLO$ DM 28,31,'MISOSYS Command File Utility ' 1F 4D 49 53 4F 53 59 53 20 43 6F 6D 6D 61 6E 64 20 46 69 6C 65 20 55 74 69 6C 69 74 79 20 01561 ; 01562 IF EXPAND 01563 DB '- Version 1.5',LF 01564 ENDIF 01565 ; 01566 IF EDAS 01567 DB '- EDAS Version 1.5',LF 01568 ENDIF 01569 ; 01570 IF LDOS 2D7B 2D 01571 DB '- LDOS Version 5.1',LF 20 4C 44 4F 53 20 56 65 72 73 69 6F 6E 20 35 2E 31 0A 01572 ENDIF 01573 ; 01574 IF SIMUTEK 01575 DB '- SIMUTEK Version 1.5',LF 01576 ENDIF 01577 ; 2D8E 43 01578 DB 'Copyright (C) 1979 by Roy Soltoff, ' 6F 70 79 72 69 67 68 74 20 28 43 29 20 31 39 37 39 20 62 79 20 52 6F 79 20 53 6F 6C 74 6F 66 66 2C 20 2DB1 41 01579 DB 'All rights reserved',LF,CR 6C 6C 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 0A 0D 2DC6 45 01580 FIL1PR DM 'Enter input file filespec >',3 6E 74 65 72 20 69 6E 70 75 74 20 66 69 6C 65 20 66 69 6C 65 73 70 65 63 20 3E 03 2DE2 42 01581 BLKMSG DM 'Block loads from ' 6C 6F 63 6B 20 6C 6F 61 64 73 20 66 72 6F 6D 20 2DF3 58 01582 BLKM1 DM 'XXXX to ' 58 58 58 20 74 6F 20 2DFB 58 01583 BLKM2 DM 'XXXX',CR 58 58 58 0D 2E00 46 01584 STAMSG DB 'FILNAM: ',3 49 4C 4E 41 4D 3A 20 03 2E09 54 01585 TRAMSG DM 'Transfer address (entry point) is ' 72 61 6E 73 66 65 72 20 61 64 64 72 65 73 73 20 28 65 6E 74 72 79 20 70 6F 69 6E 74 29 20 69 73 20 2E2B 58 01586 TRAM1 DM 'XXXX',CR 58 58 58 0D 2E30 4F 01587 MEMMSG DM 'Out of memory!',CR 75 74 20 6F 66 20 6D 65 6D 6F 72 79 21 0D 2E3F 52 01588 LODMSG DM 'Requested file is not a Command ' 65 71 75 65 73 74 65 64 20 66 69 6C 65 20 69 73 20 6E 6F 74 20 61 20 43 6F 6D 6D 61 6E 64 20 2E5F 6F 01589 DB 'or System file!',CR 72 20 53 79 73 74 65 6D 20 66 69 6C 65 21 0D 2E6F 41 01590 PRTREQ DM 'Address load log to printer (Y,N,E)? >',3 64 64 72 65 73 73 20 6C 6F 61 64 20 6C 6F 67 20 74 6F 20 70 72 69 6E 74 65 72 20 28 59 2C 4E 2C 45 29 3F 20 3E 03 2E96 45 01591 NEWTRA DM 'Enter new transfer address or to use ' 6E 74 65 72 20 6E 65 77 20 74 72 61 6E 73 66 65 72 20 61 64 64 72 65 73 73 20 6F 72 20 3C 45 4E 54 45 52 3E 20 74 6F 20 75 73 65 20 2EC3 58 01592 NEWT1 DM 'XXXX >',3 58 58 58 20 3E 03 2ECA 45 01593 OUTSPC DM 'Enter filespec to write output >',3 6E 74 65 72 20 66 69 6C 65 73 70 65 63 20 74 6F 20 77 72 69 74 65 20 6F 75 74 70 75 74 20 3E 03 2EEB 4D 01594 FINMSG DM 'Module write is complete - ' 6F 64 75 6C 65 20 77 72 69 74 65 20 69 73 20 63 6F 6D 70 6C 65 74 65 20 2D 20 2F06 77 01595 DB 'write another (Y,N,E,C)? >',3 72 69 74 65 20 61 6E 6F 74 68 65 72 20 28 59 2C 4E 2C 45 2C 43 29 3F 20 3E 03 2F21 2A 01596 NOINP DM '*** No file input *** ' 2A 2A 20 4E 6F 20 66 69 6C 65 20 69 6E 70 75 74 20 2A 2A 2A 20 2F37 4E 01597 DB 'No file to output ***',CR 6F 20 66 69 6C 65 20 74 6F 20 6F 75 74 70 75 74 20 2A 2A 2A 0D 2F4D 54 01598 CHKSUM DM 'Tape checksum error detected - ' 61 70 65 20 63 68 65 63 6B 73 75 6D 20 65 72 72 6F 72 20 64 65 74 65 63 74 65 64 20 2D 20 2F6C 72 01599 DB 'reread tape!',CR 65 72 65 61 64 20 74 61 70 65 21 0D 2F79 52 01600 CASMSG DB 'Ready cassette and enter ',3 65 61 64 79 20 63 61 73 73 65 74 74 65 20 61 6E 64 20 65 6E 74 65 72 20 3C 48 2C 4C 3E 03 2F98 49 01601 INPMPT DM 'Input disk or tape (D,T,E,C' 6E 70 75 74 20 64 69 73 6B 20 6F 72 20 74 61 70 65 20 28 44 2C 54 2C 45 2C 43 01602 ; 01603 IF EXPAND!LDOS 2FB3 2C 01604 DB ',Q' 51 01605 ENDIF 01606 ; 2FB5 29 01607 DB ') or to end reads? >',3 20 6F 72 20 3C 45 4E 54 45 52 3E 20 74 6F 20 65 6E 64 20 72 65 61 64 73 3F 20 3E 03 2FD2 45 01608 FILMSG DM 'Enter tape file name >',3 6E 74 65 72 20 74 61 70 65 20 66 69 6C 65 20 6E 61 6D 65 20 3E 03 2FE9 4F 01609 OUTDT DM 'Output to disk or tape (D,T,E,C) or ' 75 74 70 75 74 20 74 6F 20 64 69 73 6B 20 6F 72 20 74 61 70 65 20 28 44 2C 54 2C 45 2C 43 29 20 6F 72 20 300D 3C 01610 DB ' to restart? >',3 45 4E 54 45 52 3E 20 74 6F 20 72 65 73 74 61 72 74 3F 20 3E 03 3023 50 01611 PGMLOD DM 'Program loads from base address ' 72 6F 67 72 61 6D 20 6C 6F 61 64 73 20 66 72 6F 6D 20 62 61 73 65 20 61 64 64 72 65 73 73 20 3043 58 01612 PGML1 DM 'XXXX to ' 58 58 58 20 74 6F 20 304B 58 01613 PGML2 DM 'XXXX',CR 58 58 58 0D 3050 45 01614 MOVREQ DM 'Enter new base address or >',3 6E 74 65 72 20 6E 65 77 20 62 61 73 65 20 61 64 64 72 65 73 73 20 6F 72 20 3C 45 4E 54 45 52 3E 20 3E 03 3074 44 01615 DIMSG DM 'Do you want to disable the interrupts ' 6F 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 64 69 73 61 62 6C 65 20 74 68 65 20 69 6E 74 65 72 72 75 70 74 73 20 309A 28 01616 DB '(Y,N,E,C)? >',3 59 2C 4E 2C 45 2C 43 29 3F 20 3E 03 30A7 44 01617 KBCREQ DM 'Do you want to disable the keyboard ' 6F 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 64 69 73 61 62 6C 65 20 74 68 65 20 6B 65 79 62 6F 61 72 64 20 30CB 64 01618 DB 'debounce (Y,N,E,C)? >',3 65 62 6F 75 6E 63 65 20 28 59 2C 4E 2C 45 2C 43 29 3F 20 3E 03 30E1 44 01619 DVRMSG DM 'Do you want to add the offset driver ' 6F 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 61 64 64 20 74 68 65 20 6F 66 66 73 65 74 20 64 72 69 76 65 72 20 3106 72 01620 DB 'routine (Y,N,E,C)? >',3 6F 75 74 69 6E 65 20 28 59 2C 4E 2C 45 2C 43 29 3F 20 3E 03 311B 50 01621 LOMSG DM 'Program loads below 4200H',LF 72 6F 67 72 61 6D 20 6C 6F 61 64 73 20 62 65 6C 6F 77 20 34 32 30 30 48 0A 3135 20 01622 DB ' Enter address to restrict ' 20 20 20 20 45 6E 74 65 72 20 61 64 64 72 65 73 73 20 74 6F 20 72 65 73 74 72 69 63 74 20 3154 6F 01623 DM 'offset or >',3 66 66 73 65 74 20 6F 72 20 3C 45 4E 54 45 52 3E 20 3E 03 3168 46 01624 ISAM$ DM 'File has ISAM overlays - enter # >',3 69 6C 65 20 68 61 73 20 49 53 41 4D 20 6F 76 65 72 6C 61 79 73 20 2D 20 65 6E 74 65 72 20 23 20 3E 03 318B 4F 01625 NOISAM$ DM 'Overlay beyond end of file!',CR 76 65 72 6C 61 79 20 62 65 79 6F 6E 64 20 65 6E 64 20 6F 66 20 66 69 6C 65 21 0D 31A7 43 01626 DFTEXT DM 'CMD' 4D 44 31AA 01627 DCB DS 32 31CA 01628 IOBUF DS 32 31EA 01629 FILNAM DS 6 31F0 01630 BUFPTR DS 2 31F2 01631 MEMPTR DS 2 31F4 01632 BLKADR DS 2 31F6 01633 BLKEND DS 2 31F8 01634 TRAADR DS 2 31FA 01635 HIADR DS 2 31FC 01636 LOADR DS 2 31FE 01637 OFFSET DS 2 3200 01638 ANSWER DS 2 3202 01639 DIRPTR DS 2 3204 01640 PRTFLG DS 1 3205 01641 NAMLEN DS 1 3206 01642 HLDFLG DS 1 3300 01643 ORG $<-8+1<8 3300 01644 MEMBUF EQU $ 2800 01645 END START 2800 is the transfer address 00000 Total errors
[Copyright 1999,2002 Frank Durda IV, All Rights Reserved. Mirroring of any material on this page in any form is expressly prohibited. The official web site for this material is: http://nemesis.lonestar.org Contact this address for use clearances: clearance at nemesis.lonestar.org Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]