LS-DOS 6.3.1 - LBSYSTEM Assembly Listing (HTML format version)

[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 01:29:53 SYSTEM - LS-DOS 6.2          Page 00001 

              00001 ;LBSYSTEM/ASM - SYSTEM Command
              00003 ;
00EC          00004 MODPORT EQU     0ECH
000D          00005 CR      EQU     13
              00006 ;
0000          00007 *GET    SVCMAC:3                ;SVC Macro equivalents
              00008 ;SVCMAC/ASM - LS-DOS Version VI
              00009 *LIST   OFF
              00401 *LIST   ON
              00403 *LIST   OFF                     ;Get SYS0/EQU
              00856 *LIST   ON
              00857 ;
2400          00858         ORG     2400H
              00859 ;
              00860         IF      @BLD631
2400 C3E525   00861         JP      LSYSTEM         ;<631>
2403 4E       00862 NOMEM$  DB      'No memory space available',CR          ;<631>
     6F 20 6D 65 6D 6F 72 79
     20 73 70 61 63 65 20 61
     76 61 69 6C 61 62 6C 65
     0D 
241D 50       00863 PRMERR$ DB      'Parameter error',CR                    ;<631>
     61 72 61 6D 65 74 65 72
     20 65 72 72 6F 72 0D 
242D 43       00864 NOCYL8$ DB      'CYL=c invalid on 8" drive',CR          ;<631>
     59 4C 3D 63 20 69 6E 76
     61 6C 69 64 20 6F 6E 20
     38 22 20 64 72 69 76 65
     0D 
2447 43       00865 BADCYL$ DB      'Cylinder count out of range <35-96>',CR;<631>
     79 6C 69 6E 64 65 72 20
     63 6F 75 6E 74 20 6F 75
     74 20 6F 66 20 72 61 6E
     67 65 20 3C 33 35 2D 39
     36 3E 0D 
246B 43       00866 BADSYS$ DB      'Can''t SYSRES requested module',CR     ;<631>
     61 6E 27 74 20 53 59 53
     52 45 53 20 72 65 71 75
     65 73 74 65 64 20 6D 6F
     64 75 6C 65 0D 
2489 53       00867 MODRES$ DB      'System module already resident',CR     ;<631>
     79 73 74 65 6D 20 6D 6F
     64 75 6C 65 20 61 6C 72
     65 61 64 79 20 72 65 73
     69 64 65 6E 74 0D 
24A8 45       00868 EIPMPT  DM      'Enter DCT driver  : ',3 ;<631>
     6E 74 65 72 20 44 43 54
     20 64 72 69 76 65 72 20
     3C 42 52 45 41 4B 3D 64
     65 66 61 75 6C 74 3E 20
     3A 20 03 
24CC 42       00869 BADBS$  DB      'Boot step out of range <0-3>',CR       ;<631>
     6F 6F 74 20 73 74 65 70
     20 6F 75 74 20 6F 66 20
     72 61 6E 67 65 20 3C 30
     2D 33 3E 0D 
24E9 44       00870 DCTEXT  DM      'DCT'                                   ;<631>
     43 54 
              00871 ;
24EC          00872 PRMTBL$ EQU     $               ;<631>
24EC 41       00873         DB      'ALIVE '        ;<631>
     4C 49 56 45 20 
24F2 7627     00874         DW      ALIVE+1         ;<631>
24F4 41       00875         DB      'AMPM  '        ;<631>
     4D 50 4D 20 20 
24FA 4026     00876         DW      AMPM+1          ;<631>
24FC 42       00877         DB      'BSTEP '        ;<631>
     53 54 45 50 20 
2502 AA26     00878         DW      BSPARM+1        ;<631>
2504 44       00879         DM      'DRIVER'        ;<631>
     52 49 56 45 52 
250A 1F2A     00880         DW      DVRPARM+1       ;<631>
250C 46       00881         DB      'FAST  '        ;<631>
     41 53 54 20 20 
2512 0326     00882         DW      FPARM+1         ;<631>
2514 53       00883         DB      'SLOW  '        ;<631>
     4C 4F 57 20 20 
251A FC25     00884         DW      SLOW+1          ;<631>
251C 53       00885         DB      'SWAP  '        ;<631>
     57 41 50 20 20 
2522 082B     00886         DW      SWAP+1          ;<631>
2524 53       00887         DB      'SYSRES'        ;<631>
     59 53 52 45 53 
252A E427     00888         DW      SYSRES+1        ;<631>
252C 53       00889         DB      'SYSTEM'        ;<631>
     59 53 54 45 4D 
2532 F62A     00890         DW      SYSPRM+1        ;<631>
2534 54       00891         DB      'TYPE  '        ;<631>
     59 50 45 20 20 
253A 1327     00892         DW      TYPE+1          ;<631>
253C 57       00893         DB      'WP    '        ;<631>
     50 20 20 20 20 
2542 4F29     00894         DW      WPARM+1         ;<631>
2544 42       00895         DB      'BLINK '        ;<631>
     4C 49 4E 4B 20 
254A CB26     00896         DW      BLINK+1         ;<631>
254C 42       00897         DB      'BREAK '        ;<631>
     52 45 41 4B 20 
2552 5626     00898         DW      BREAK+1         ;<631>
2554 43       00899         DB      'CYL   '        ;<631>
     59 4C 20 20 20 
255A 6429     00900         DW      CYLPRM+1        ;<631>
255C 44       00901         DB      'DATE  '        ;<631>
     41 54 45 20 20 
2562 7C26     00902         DW      DATE+1          ;<631>
2564 44       00903         DB      'DELAY '        ;<631>
     45 4C 41 59 20 
256A CE29     00904         DW      DELAY+1         ;<631>
256C 43       00905         DB      'CKDRV '        ;<631>
     4B 44 52 56 20 
2572 E629     00906         DW      CKDRV+1         ;<631>
2574 44       00907         DB      'DISABL'        ;<631>
     49 53 41 42 4C 
257A 9629     00908         DW      DISABL+1        ;<631>
257C 44       00909         DB      'DRIVE '        ;<631>
     52 49 56 45 20 
2582 2C29     00910         DW      DRIVE+1         ;<631>
2584 45       00911         DB      'ENABLE'        ;<631>
     4E 41 42 4C 45 
258A A729     00912         DW      ENABLE+1        ;<631>
258C 47       00913         DB      'GRAPHI'        ;<631>
     52 41 50 48 49 
2592 6127     00914         DW      GRAPHI+1        ;<631>
2594 4C       00915         DB      'LARGE '        ;<631>
     41 52 47 45 20 
259A E426     00916         DW      LARGE+1         ;<631>
259C 52       00917         DB      'RESTOR'        ;<631>
     45 53 54 4F 52 
25A2 FC26     00918         DW      RPARM+1         ;<631>
25A4 53       00919         DB      'SMALL '        ;<631>
     4D 41 4C 4C 20 
25AA EE26     00920         DW      SMALPRM+1       ;<631>
25AC 50       00921         DB      'PRTIME'        ;<631>
     52 54 49 4D 45 
25B2 6A26     00922         DW      PRTIME+1        ;<631>
25B4 53       00923         DB      'STEP  '        ;<631>
     54 45 50 20 20 
25BA B329     00924         DW      STEP+1          ;<631>
25BC 54       00925         DB      'TIME  '        ;<631>
     49 4D 45 20 20 
25C2 9326     00926         DW      TIME+1          ;<631>
25C4 54       00927         DB      'TRACE '        ;<631>
     52 41 43 45 20 
25CA 2726     00928         DW      TRACE+1         ;<631>
25CC 53       00929         DB      'SMOOTH'        ;<631>
     4D 4F 4F 54 48 
25D2 2827     00930         DW      SMOOTH+1        ;<631>
25D4 48       00931         DB      'HERTZ5'        ;<631>
     45 52 54 5A 35 
25DA 4727     00932         DW      HERTZ50+1       ;<631>
25DC 48       00933         DB      'HERTZ6'        ;<631>
     45 52 54 5A 36 
25E2 5427     00934         DW      HERTZ60+1       ;<631>
25E4 00       00935         NOP                     ;<631>
25E5 ED73C72A 00936 LSYSTEM:LD      (LSAVESP+1),SP  ;<631>Save the stack
              00937         ELSE
              00938 SYSTEM
              00939         ENDIF
25E9          00940         @@CKBRKC                ;Check for 
25E9+3E6A     00941         LD      A,106
25EB+EF       00942         RST     40
              00943         IF      @BLD631
25EC C2C32A   00944         JP      NZ,ABORT        ;<631>Abort
              00945         ELSE
              00946         JR      Z,SYSTEM1       ;Go if not
              00947         LD      HL,-1           ;  else abort
              00948         RET
              00949 ;
              00950 LSAVESP LD      SP,$-$          ;P/u original stack
              00951         @@CKBRKC                ;Clear any 
              00952         RET                     ;Ret to DOS
              00953 ;
              00954 ;       Internal Error Message Handling
              00955 ;
              00956 NOMEM   LD      HL,NOMEM$       ;"No memroy available
              00957         DB      0DDH
              00958 PRMERR  LD      HL,PRMERR$      ;"Parm error
              00959 SETERR  @@LOGOT
              00960 FRCERR  LD      HL,-1           ;Set abort code
              00961         JR      LSAVESP         ;Exit
              00962 ;
              00963 ;       I/O Error Handler
              00964 ;
              00965 IOERR   LD      L,A             ;Error # to HL
              00966         LD      H,0
              00967         OR      0C0H            ;Set brief to return
              00968         LD      C,A
              00969         @@ERROR                 ;Display the error
              00970         JR      LSAVESP         ;Exit
              00971 ;
              00972 ;       SYSTEM1 - Set the O/S's parameters
              00973 ;
              00974 SYSTEM1
              00975         LD      (LSAVESP+1),SP  ;Save the stack
              00976 ;
              00977         ENDIF
25EF 11EC24   00978         LD      DE,PRMTBL$      ;Get parms
25F2          00979         @@PARAM
25F2+3E11     00980         LD      A,17
25F4+EF       00981         RST     40
25F5 C2E12A   00982         JP      NZ,PRMERR       ;Jump on parm error
25F8          00983         @@FLAGS                 ;Get IY = flagtab
25F8+3E65     00984         LD      A,101
25FA+EF       00985         RST     40
25FB 010000   00986 SLOW    LD      BC,0            ;Test SLOW parm
25FE 78       00987         LD      A,B
25FF B1       00988         OR      C
2600 2013     00989         JR      NZ,SETSLOW      ;Jump if SLOW entered
2602 010000   00990 FPARM   LD      BC,0            ;P/u FAST parm
2605 78       00991         LD      A,B
2606 B1       00992         OR      C
2607 281D     00993         JR      Z,FPEND         ;Neither SLOW nor FAST?
2609 FDCB12DE 00994         SET     3,(IY+'S'-'A')  ;Set fast in flag
              00995         IF      @MOD4
260D FDCB0CF6 00996         SET     6,(IY+'M'-'A')  ;Set bit 6 in port mask
              00997         ENDIF
2611 0655     00998         LD      B,55H           ;Init time slice byte
2613 1808     00999         JR      SETCLK          ;Go set it
              01000 ;
              01001 ;       Turn off FAST
              01002 ;
2615 FDCB129E 01003 SETSLOW RES     3,(IY+'S'-'A')  ;Reset the FAST bit
              01004         IF      @MOD4
2619 FDCB0CB6 01005         RES     6,(IY+'M'-'A')  ;Reset bit in port mask
              01006         ENDIF
261D 78       01007 SETCLK  LD      A,B
261E 322B00   01008         LD      (TIMSL$),A      ;Set 55H=fast, FFH=slow
              01009         IF      @MOD4
2621 FD7E0C   01010         LD      A,(IY+'M'-'A')  ;Update the port
2624 D3EC     01011         OUT     (MODPORT),A
              01012         ENDIF
2626          01013 FPEND   EQU     $
              01014 ;
              01015 ;       Trace entry
              01016 ;
2626 010100   01017 TRACE   LD      BC,1            ;Init to pass by
2629 78       01018         LD      A,B
262A B1       01019         OR      C
262B 280D     01020         JR      Z,TROFF         ;Go if Trace off
262D 3C       01021         INC     A
262E 200F     01022         JR      NZ,TREND        ;Go if not entered
              01023         IF      @MOD4
2630 11B107   01024         LD      DE,TRACE_INT    ;Pt to trace SYSRES rtn
              01025         ENDIF
              01026         IF      @MOD2
              01027         LD      DE,DO_TRACE     ;Address
              01028         ENDIF
2633 0E07     01029         LD      C,7             ;Init to task 7
2635          01030         @@ADTSK                 ;Turn TRACE (ON)
2635+3E1D     01031         LD      A,29
2637+EF       01032         RST     40
2638 1805     01033         JR      TREND
263A 0E07     01034 TROFF   LD      C,7             ;Init to task 7
263C          01035         @@RMTSK                 ;Remove TRACE task
263C+3E1E     01036         LD      A,30
263E+EF       01037         RST     40
263F          01038 TREND   EQU     $
              01039         IF      @BLD631
263F 010100   01040 AMPM:   LD      BC,1            ;<631>
2642 78       01041         LD      A,B             ;<631>
2643 B1       01042         OR      C               ;<631>
2644 280B     01043         JR      Z,L2651         ;<631>
2646 78       01044         LD      A,B             ;<631>
2647 A1       01045         AND     C               ;<631>
2648 3C       01046         INC     A               ;<631>
2649 200A     01047         JR      NZ,BREAK        ;<631>
264B FDCB08A6 01048         RES     4,(IY+'I'-'A')  ;<631>
264F 1804     01049         JR      BREAK           ;<631>
2651 FDCB08E6 01050 L2651:  SET     4,(IY+'I'-'A')  ;<631>
              01051         ENDIF
              01052 ;
              01053 ;       Routine to handle BREAK
              01054 ;
2655 010100   01055 BREAK   LD      BC,1            ;Init BREAK=ON
2658 78       01056         LD      A,B
2659 B1       01057         OR      C
265A 2809     01058         JR      Z,BRKOFF        ;Jump if BREAK=OFF
265C 3C       01059         INC     A               ;Check Break=ON
265D 200A     01060         JR      NZ,BRKEND       ;Go if no parm used
265F FDCB12A6 01061         RES     4,(IY+'S'-'A')  ;Correct system flag
2663 1804     01062         JR      BRKEND
              01063 ;
              01064 ;       Disable  key
              01065 ;
2665 FDCB12E6 01066 BRKOFF  SET     4,(IY+'S'-'A')
2669          01067 BRKEND  EQU     $
              01068 ;
              01069 ;       Date prompt suppression during BOOT
              01070 ;
2669 010100   01071 PRTIME: LD      BC,1            ;Init to pass by
              01072         IF      @BLD631
266C 21290E   01073         LD      HL,@PRTIMO      ;<631>DEC DE opcode in Printer driver
266F 78       01074         LD      A,B             ;<631>
2670 B1       01075         OR      C               ;<631>
2671 2807     01076         JR      Z,DISTIMO       ;<631>Load a NOP over DEC DE
2673 78       01077         LD      A,B             ;<631>
2674 A1       01078         AND     C               ;<631>
2675 3C       01079         INC     A               ;<631>
2676 2003     01080         JR      NZ,DATE         ;<631>
2678 3E1B     01081         LD      A,1BH           ;<631>DEC DE opcode (default)
267A 77       01082 DISTIMO:LD      (HL),A          ;<631>
267B 010100   01083 DATE:   LD      BC,1            ;<631>
              01084         ENDIF
267E 78       01085         LD      A,B
267F B1       01086         OR      C
2680 06FF     01087         LD      B,0FFH          ;Init to DATE Suppress
2682 2804     01088         JR      Z,DOFF          ;Go if suppress
2684 3C       01089         INC     A
2685 200B     01090         JR      NZ,DATEND       ;Go if not entered
2687 47       01091         LD      B,A             ;B=0 on no suppress
2688 CDF52B   01092 DOFF    CALL    GETCFG          ;Get track 0, sector 2
268B 78       01093         LD      A,B             ;Get back the code byte
268C 32C21D   01094         LD      (DTPMT$&0FFH+SBUFF$),A
268F CDF22B   01095         CALL    PUTCFG          ;Write it back
2692          01096 DATEND  EQU     $
              01097 ;
              01098 ;       Time prompt suppression during BOOT
              01099 ;
2692 010100   01100 TIME    LD      BC,1            ;Init to pass by
2695 78       01101         LD      A,B
2696 B1       01102         OR      C
2697 06FF     01103         LD      B,0FFH          ;Init to TIME Suppress
2699 2804     01104         JR      Z,TOFF          ;Go if suppress
269B 3C       01105         INC     A
269C 200B     01106         JR      NZ,TIMEND       ;Go if not entered
269E 47       01107         LD      B,A             ;B=0 on no suppress
269F CDF52B   01108 TOFF    CALL    GETCFG          ;Get track 0, sector 2
26A2 78       01109         LD      A,B             ;Get back the code byte
26A3 32C31D   01110         LD      (TMPMT$&0FFH+SBUFF$),A
26A6 CDF22B   01111         CALL    PUTCFG          ;Write it back
26A9          01112 TIMEND  EQU     $
              01113 ;
              01114 ;       BOOT Step rate adjust
              01115 ;
26A9 01FFFF   01116 BSPARM  LD      BC,-1           ;P/u parm
26AC 04       01117         INC     B               ;User entry?
26AD 281B     01118         JR      Z,BSPEND        ;Go if not entered
26AF 79       01119         LD      A,C             ;Transfer parm
26B0 FE04     01120         CP      4
26B2 3808     01121         JR      C,GUDBS         ;Ok if < 4
26B4 21CC24   01122         LD      HL,BADBS$       ;  else bad step rate
26B7 CDE42A   01123         CALL    SETERR
26BA 180E     01124         JR      BSPEND
26BC 47       01125 GUDBS   LD      B,A             ;Save step
26BD CDF52B   01126         CALL    GETCFG          ;Get System Info Sector
26C0 2E73     01127         LD      L,70H+3         ;Offset to data
26C2 7E       01128         LD      A,(HL)          ;P/u DCT+3 parms
26C3 E6FC     01129         AND     0FCH            ;Strip off boot step
26C5 B0       01130         OR      B               ;Merge new
26C6 77       01131         LD      (HL),A          ;Stuff back
26C7 CDF22B   01132         CALL    PUTCFG          ;Write it back
26CA          01133 BSPEND  EQU     $
              01134 ;
              01135 ;       BLINK parm
              01136 ;
26CA 010100   01137 BLINK   LD      BC,1            ;P/U parm
26CD 78       01138         LD      A,B
26CE B1       01139         OR      C
26CF 3D       01140         DEC     A               ;Specified?
26D0 2829     01141         JR      Z,BLIEND        ;Go if not
26D2 3C       01142         INC     A
26D3 2006     01143         JR      NZ,BLNKON       ;Go if BLINK=ON
26D5 FDCB15F6 01144         SET     6,(IY+'V'-'A')  ;Turn off blinking
              01145         IF      @MOD2
              01146         LD      A,($CRSCHAR)    ;Get current char
              01147         AND     1FH             ;Keep size only
              01148         JR      SETBLK          ;Setup
              01149         ENDIF
              01150         IF      @MOD4
26D9 1820     01151         JR      BLIEND          ;Continue
              01152         ENDIF
26DB FDCB15B6 01153 BLNKON  RES     6,(IY+'V'-'A')  ;Turn on blinking
26DF FEFF     01154         CP      0FFH            ;If not just BLINK,
              01155         IF      @MOD4
26E1 2012     01156         JR      NZ,SETBLK       ;  set user cursor
              01157         ENDIF
              01158         IF      @MOD2
              01159         JR      Z,LARGE         ;Go if not
              01160 BLIADJ  SUB     7               ;Force in range 0-7
              01161         JR      NC,BLIADJ       ;Go till in range
              01162         ADD     A,7             ;Add back last sub
              01163         OR      01000000B       ;Set blink enable 1/16
              01164         JR      SETBLK          ;Continue
              01165         ENDIF
26E3 010000   01166 LARGE   LD      BC,0            ;  else test if large,
26E6 0C       01167         INC     C               ;  small, or default
              01168         IF      @MOD2
              01169         LD      A,01000111B     ;Standard cursor
              01170         ENDIF
              01171         IF      @MOD4
26E7 3E5F     01172         LD      A,'_'           ;Standard cursor
              01173         ENDIF
26E9 2002     01174         JR      NZ,SMALPRM
              01175         IF      @MOD2
              01176         LD      A,01000000B     ;To large
              01177         ENDIF
              01178         IF      @MOD4
26EB 3E8F     01179         LD      A,8FH           ;To large
              01180         ENDIF
26ED 010000   01181 SMALPRM LD      BC,0
26F0 0C       01182         INC     C
26F1 2002     01183         JR      NZ,SETBLK
              01184         IF      @MOD2
              01185         LD      A,01000101B     ;Small
              01186         ENDIF
              01187         IF      @MOD4
26F3 3E88     01188         LD      A,88H           ;Small
              01189         ENDIF
26F5 4F       01190 SETBLK  LD      C,A             ;Xfer cursor char to C
26F6 0608     01191         LD      B,8             ;Cursor update function
26F8          01192         @@VDCTL
26F8+3E0F     01193         LD      A,15
26FA+EF       01194         RST     40
26FB          01195 BLIEND  EQU     $
              01196 ;
              01197 ;       RESTORE parameter
              01198 ;
26FB 010100   01199 RPARM   LD      BC,1            ;P/U parm
26FE 78       01200         LD      A,B
26FF B1       01201         OR      C
2700 3D       01202         DEC     A               ;Specified?
2701 280F     01203         JR      Z,REND          ;Go if not
2703 3C       01204         INC     A
2704 2001     01205         JR      NZ,RSTRON       ;Go if RESTORE=on
2706 3E       01206         DB      3EH             ;Make LD A,n
2707 AF       01207 RSTRON  XOR     A
2708 47       01208         LD      B,A             ;Save step
2709 CDF52B   01209         CALL    GETCFG          ;Get config sector
270C 2EC4     01210         LD      L,RSTOR$&0FFH   ;Pt to RESTORE flag
270E 70       01211         LD      (HL),B          ;Stuff back
270F CDF22B   01212         CALL    PUTCFG          ;Put it back
2712          01213 REND    EQU     $
              01214 ;
              01215 ;       Type ahead processing
              01216 ;
2712 010100   01217 TYPE    LD      BC,1            ;P/u Type parm value
2715 78       01218         LD      A,B
2716 B1       01219         OR      C
2717 3D       01220         DEC     A               ;Was Type used?
2718 280D     01221         JR      Z,TYPEND        ;Jump if TYPE not entered
271A 3C       01222         INC     A
271B 2006     01223         JR      NZ,TYPEON       ;Jump if TYPE=ON
271D FDCB038E 01224         RES     1,(IY+'D'-'A')  ;Turn TYPE off
2721 1804     01225         JR      TYPEND
2723 FDCB03CE 01226 TYPEON  SET     1,(IY+'D'-'A')  ;Turn TYPE on
2727          01227 TYPEND  EQU     $
              01228 ;
              01229 ;       Process SMOOTH
              01230 ;
2727 010100   01231 SMOOTH  LD      BC,1            ;P/u Smooth parm value
272A 78       01232         LD      A,B
272B B1       01233         OR      C
272C 3D       01234         DEC     A               ;Was Smooth used?
272D 2817     01235         JR      Z,SMEND         ;Skip if not entered
272F 3C       01236         INC     A
2730 200B     01237         JR      NZ,SMON         ;Go if Smooth=ON
              01238         IF      @MOD4
2732 FDCB039E 01239         RES     3,(IY+'D'-'A')  ;Show OFF in DFLAG$
2736 3E00     01240         LD      A,00            ;Set to store NOP
2738 320E00   01241         LD      (FDDINT$),A     ;  put it there
              01242         ENDIF
273B 1809     01243         JR      SMEND
273D          01244 SMON    EQU     $
              01245         IF      @MOD4
273D FDCB03DE 01246         SET     3,(IY+'D'-'A')  ;Show ON in DFLAG$
2741 3EF3     01247         LD      A,0F3H          ;DI opcode
2743 320E00   01248         LD      (FDDINT$),A     ;  put it there
              01249         ENDIF
2746          01250 SMEND   EQU     $
              01251 ;
              01252 ;       Routine to process HERTZ selection
              01253 ;
2746 010100   01254 HERTZ50 LD      BC,1            ;P/u H50 parm value
2749 78       01255         LD      A,B
274A B1       01256         OR      C
274B 3D       01257         DEC     A               ;Check if parm entered
274C 2805     01258         JR      Z,HZ50END       ;Go if not
274E 3E19     01259         LD      A,25            ;Init 25 ints/sec
2750 325007   01260         LD      (HERTZ$),A      ;Put value in timer code
2753          01261 HZ50END EQU     $
2753 010100   01262 HERTZ60 LD      BC,1            ;P/u H60 parm value
2756 78       01263         LD      A,B
2757 B1       01264         OR      C
2758 3D       01265         DEC     A               ;Check if parm entered
2759 2805     01266         JR      Z,HZ60END       ;Go if not
275B 3E1E     01267         LD      A,30            ;Init 30 ints/sec
275D 325007   01268         LD      (HERTZ$),A      ;  & load it to timer
2760          01269 HZ60END EQU     $
              01270 ;
              01271 ;       Routine to process GRAPHIC
              01272 ;
2760 010100   01273 GRAPHI  LD      BC,1            ;Init for bypass
2763 78       01274         LD      A,B
2764 B1       01275         OR      C
2765 3D       01276         DEC     A               ;Check if parm entered
2766 280D     01277         JR      Z,GRAEND        ;Go if not entered
2768 3C       01278         INC     A               ;Test of GRAPHIC=off
2769 2806     01279         JR      Z,GROFF         ;Go if off
276B FDCB03FE 01280         SET     7,(IY+'D'-'A')  ;  else turn on
276F 1804     01281         JR      GRAEND
2771 FDCB03BE 01282 GROFF   RES     7,(IY+'D'-'A')  ;Turn graphic off
2775          01283 GRAEND  EQU     $
              01284 ;
              01285 ;       Routine to process ALIVE
              01286 ;
2775 010100   01287 ALIVE   LD      BC,1            ;P/u Alive parm value
2778 78       01288         LD      A,B
2779 B1       01289         OR      C
277A 3D       01290         DEC     A               ;Check if entered
277B 2866     01291         JR      Z,ALVEND        ;Bypass if parm omitted
277D 3C       01292         INC     A
277E 2007     01293         JR      NZ,ALIVEON      ;Jump if ALIVE=ON
              01294         IF      @MOD2
              01295         LD      C,6             ;Slot alive
              01296         ENDIF
              01297         IF      @MOD4
2780 0E03     01298         LD      C,3             ;Slot alive
              01299         ENDIF
2782          01300         @@RMTSK                 ;Remove it if OFF
2782+3E1E     01301         LD      A,30
2784+EF       01302         RST     40
2785 185C     01303         JR      ALVEND
              01304 ;
2787          01305 ALIVEON EQU     $
              01306         IF      @MOD2
              01307         LD      C,6             ;Slot alive
              01308         LD      DE,DO_ALIVE     ;Task address
              01309         @@ADTSK                 ;Add task
              01310         ENDIF
              01311         IF      @MOD4
2787 CD0C2C   01312         CALL    GOTMEM?         ;Is HIGH$ frozen?
278A DADD2A   01313         JP      C,NOMEM         ;Quit if so
278D CD042C   01314         CALL    GETHI$          ;Get address for Alive
2790 22BC27   01315         LD      (ALVBGN+2),HL   ;Stuff last byte used
2793 012900   01316         LD      BC,ALVEND-ALVBGN        ;Get len of code
2796 AF       01317         XOR     A
2797 ED42     01318         SBC     HL,BC           ;Calc new HIGH$
2799 0600     01319         LD      B,0
279B          01320         @@HIGH$                 ;Stuff new HIGH$
279B+3E64     01321         LD      A,100
279D+EF       01322         RST     40
279E 23       01323         INC     HL              ;Point to module start
279F E5       01324         PUSH    HL              ;Save start
27A0 0E10     01325         LD      C,ALVTCB-ALVBGN+2
27A2 09       01326         ADD     HL,BC           ;Point to alive task
27A3 22C827   01327         LD      (ALVTCB),HL     ;  & stuff ALIVE TCB
27A6 E3       01328         EX      (SP),HL         ;Rcvr start of module
27A7 EB       01329         EX      DE,HL           ;  into DE
27A8 21BA27   01330         LD      HL,ALVBGN
27AB 012900   01331         LD      BC,ALVEND-ALVBGN
27AE EDB0     01332         LDIR                    ;Move to high memory
27B0 D1       01333         POP     DE              ;Rcvr start of task
27B1 1B       01334         DEC     DE              ;Back up to TCB
27B2 1B       01335         DEC     DE
27B3 0E03     01336         LD      C,3             ;Add as task 3
27B5          01337         @@ADTSK
27B5+3E1D     01338         LD      A,29
27B7+EF       01339         RST     40
27B8 1829     01340         JR      ALVEND
              01341         ENDIF
              01342 ;
              01343 ;       ALIVE high memory module
              01344 ;
              01345         IF      @MOD4
27BA 18FE     01346 ALVBGN  JR      $
27BC 0000     01347         DW      $-$
27BE 05       01348         DB      5,'ALIVE'
     41 4C 49 56 45 
27C4 0000     01349         DW      0,0
     0000 
27C8 0000     01350 ALVTCB  DW      0
27CA 214F00   01351         LD      HL,79           ;Get character at 0,79
27CD E5       01352         PUSH    HL
27CE 0601     01353         LD      B,1             ;Set function 1
27D0 CD990B   01354         CALL    @VDCTL          ;P/u character currently
27D3 FEA3     01355         CP      0A3H            ;  on the screen and
27D5 3E93     01356         LD      A,93H           ;  exchange it
27D7 2802     01357         JR      Z,ALIVE1
27D9 3EA3     01358         LD      A,0A3H
27DB E1       01359 ALIVE1  POP     HL
27DC 0602     01360         LD      B,2             ;Function to put char
27DE 4F       01361         LD      C,A
27DF CD990B   01362         CALL    @VDCTL          ;  at row,col
27E2 C9       01363         RET
              01364         ENDIF
27E3          01365 ALVEND  EQU     $
              01366 ;
              01367 ;       Routine to process SYSRES
              01368 ;
27E3 01FFFF   01369 SYSRES  LD      BC,-1           ;P/u Sysres parm value
27E6 04       01370         INC     B               ;Test if parm entered
27E7 CA2429   01371         JP      Z,RESEND        ;Go if not
27EA CD0C2C   01372         CALL    GOTMEM?         ;Is high memory available
27ED DADD2A   01373         JP      C,NOMEM         ;Quit if not
27F0 79       01374         LD      A,C             ;Get module to reside
27F1 B7       01375         OR      A
27F2 2837     01376         JR      Z,BADSYS        ;Cannot sysres 0
27F4 FE02     01377         CP      2               ;Check if it is SYS2
27F6 2005     01378         JR      NZ,TEST6        ;Go if not
27F8 217404   01379         LD      HL,DCT$+4       ;Point to SYSTEM DCT
27FB CBBE     01380         RES     7,(HL)          ;  & allow CKDRV now
27FD FE06     01381 TEST6   CP      6
27FF 3808     01382         JR      C,GUDSYS        ;Can sysres 1-5
2801 FE09     01383         CP      9
2803 3826     01384         JR      C,BADSYS        ;Cannot sysres 6-8
2805 FE0D     01385         CP      13
2807 3022     01386         JR      NC,BADSYS       ;Nothing > 12 yet
2809 F5       01387 GUDSYS  PUSH    AF              ;Save sysres req
280A 216D1A   01388         LD      HL,HKRES$+1     ;Check if the driver
280D 5E       01389         LD      E,(HL)          ;  is already resident
280E 23       01390         INC     HL
280F 56       01391         LD      D,(HL)
2810 217F1A   01392         LD      HL,CKMOD@       ;Standard address
2813 B7       01393         OR      A               ;Reset carry
2814 ED52     01394         SBC     HL,DE           ;No driver if =
2816 2871     01395         JR      Z,PUTDVR        ;Go and install driver
2818 21E0FF   01396         LD      HL,-32          ;Find restab$ pos
281B 19       01397         ADD     HL,DE           ;Pt to vector table
281C 07       01398         RLCA                    ;Request x 2
281D 85       01399         ADD     A,L
281E 6F       01400         LD      L,A
281F 3001     01401         JR      NC,$+3
2821 24       01402         INC     H               ;RESTAB$ + entry index
2822 23       01403         INC     HL              ;Pt to hi order
2823 7E       01404         LD      A,(HL)          ;P/u hi order
2824 B7       01405         OR      A
2825 281B     01406         JR      Z,MOVITIN       ;Go if not there
2827 218924   01407         LD      HL,MODRES$      ;  else show already res'ed
282A DD       01408         DB      0DDH
282B 216B24   01409 BADSYS  LD      HL,BADSYS$
282E CDE42A   01410         CALL    SETERR          ;Log & Set error
2831 F1       01411         POP     AF
2832 C32429   01412         JP      GETSEC2
2835 18FE     01413 RES1    JR      $               ;No real entry
2837 0000     01414         DW      $-$             ;Last used
2839 04       01415         DB      4,'SYS '
     53 59 53 20 
283E 0000     01416         DW      0,0
     0000 
2841          01417 RES1E   EQU     $-1
2842 326900   01418 MOVITIN LD      (OVRLY$),A      ;Show no overlay res
2845 F1       01419         POP     AF              ;Rcvr requested SYS
2846 F5       01420         PUSH    AF
2847 C602     01421         ADD     A,2             ;Adjust for dec
2849 F680     01422         OR      80H             ;Set Sys request
284B E5       01423         PUSH    HL              ;Save restab$ addr
284C CD7F1A   01424         CALL    CKMOD@          ;Load SYSn, no exec
284F CD042C   01425         CALL    GETHI$          ;P/u HIGH$
2852 223728   01426         LD      (RES1+2),HL     ;Save in header
2855 EB       01427         EX      DE,HL
2856 ED4BFE23 01428         LD      BC,(MAXCOR$-2)  ;P/u length of SYSx
285A 21001E   01429         LD      HL,1E00H        ;Pt to start of overlay
285D 09       01430         ADD     HL,BC
285E 2B       01431         DEC     HL              ;Point to last byte
285F C5       01432         PUSH    BC              ;Save length
2860 EDB8     01433         LDDR
2862 C1       01434         POP     BC              ;Rcvr length of SYSx
2863 78       01435         LD      A,B             ;  & stuff in front
2864 12       01436         LD      (DE),A          ;  of SYSRESed module
2865 1B       01437         DEC     DE
2866 79       01438         LD      A,C
2867 12       01439         LD      (DE),A
2868 E1       01440         POP     HL              ;Rcvr RESTAB ptr
2869 72       01441         LD      (HL),D          ;Save hi order addr
286A 2B       01442         DEC     HL
286B 73       01443         LD      (HL),E          ;Save low order addr
286C F1       01444         POP     AF              ;Rcvr module requested
286D FE0A     01445         CP      10              ;Convert to ASCII
286F 3802     01446         JR      C,$+4
2871 C607     01447         ADD     A,7
2873 C630     01448         ADD     A,'0'
2875 213D28   01449         LD      HL,RES1+8
2878 77       01450         LD      (HL),A          ;Stuff module name
2879 1B       01451         DEC     DE              ;Pt to 1st free byte
              01452                                 ;  & move in the
287A 010D00   01453         LD      BC,13           ;  linkage protocol
287D 214128   01454         LD      HL,RES1E
2880 EDB8     01455         LDDR
2882 EB       01456         EX      DE,HL
2883          01457         @@HIGH$                 ;Stuff new HIGH$ (B=0)
2883+3E64     01458         LD      A,100
2885+EF       01459         RST     40
2886 C32429   01460         JP      RESEND
              01461 ;
2889 CD042C   01462 PUTDVR  CALL    GETHI$          ;P/u high mem
288C 22B828   01463         LD      (RESBGN+2),HL   ;Stuff last used
288F 016E00   01464         LD      BC,RESEND-RESBGN
2892 ED42     01465         SBC     HL,BC           ;Make space for driver
2894 0600     01466         LD      B,0
2896          01467         @@HIGH$                 ;Stuff new value
2896+3E64     01468         LD      A,100
2898+EF       01469         RST     40
2899 E5       01470         PUSH    HL              ;Save new HIGH$
289A 110D00   01471         LD      DE,13           ;Pt to RESTAB$-3
289D 19       01472         ADD     HL,DE
289E 22F128   01473         LD      (RESD1+1),HL    ;Stuff ptr to RESTAB$-3
28A1 E1       01474         POP     HL
28A2 23       01475         INC     HL              ;Resbgn
28A3 E5       01476         PUSH    HL
28A4 EB       01477         EX      DE,HL           ;Where it goes to DE
28A5 21B628   01478         LD      HL,RESBGN       ;Where it's now
28A8 EDB0     01479         LDIR                    ;Move up to high
28AA E1       01480         POP     HL              ;Rcvr where it got to
28AB 112F00   01481         LD      DE,32+RESTAB$-RESBGN    ;Index start of dvr
28AE 19       01482         ADD     HL,DE           ;Pt to driver entry
28AF 226D1A   01483         LD      (HKRES$+1),HL   ;Hook into SYS0
28B2 F1       01484         POP     AF              ;Rcvr code & loop
28B3 C30928   01485         JP      GUDSYS          ;  to get the request
              01486 ;
28B6 18FE     01487 RESBGN  JR      $               ;No real entry
28B8 0000     01488         DW      $-$
28BA 06       01489         DB      6,'SYSRES'
     53 59 53 52 45 53 
28C1 0000     01490         DW      0,0
     0000 
28C5 0100     01491 RESTAB$ DW      1,0,0,0,0,0,1,1
     0000 0000 0000 0000 0000 0100 0100 
28D5 0000     01492         DW      0,0,0,0,0,0,0,0
     0000 0000 0000 0000 0000 0000 0000 
              01493 ;
28E5 E5       01494 RESDVR  PUSH    HL
28E6 F5       01495         PUSH    AF              ;Save SYS needed
28E7 216900   01496         LD      HL,OVRLY$       ;Check if already in
28EA AE       01497         XOR     (HL)            ;  overlay area
28EB E60F     01498         AND     0FH             ;Strip garbage
28ED 2830     01499         JR      Z,NOTRES
28EF F1       01500         POP     AF
28F0 21C628   01501 RESD1   LD      HL,RESTAB$+1    ;P/u table ptr
28F3 F5       01502         PUSH    AF
28F4 E60F     01503         AND     0FH             ;Check if in high mem
28F6 07       01504         RLCA                    ;X 2
28F7 85       01505         ADD     A,L
28F8 6F       01506         LD      L,A
28F9 3001     01507         JR      NC,$+3
28FB 24       01508         INC     H
28FC 7E       01509         LD      A,(HL)          ;P/u hi order
28FD B7       01510         OR      A
28FE 281F     01511         JR      Z,NOTRES        ;Go if not in high
2900 2B       01512         DEC     HL              ;Pt to low
2901 6E       01513         LD      L,(HL)          ;P/u lo order vector
2902 67       01514         LD      H,A             ;Xfer hi order
2903 D5       01515         PUSH    DE              ;Save these regs
2904 C5       01516         PUSH    BC
2905 4E       01517         LD      C,(HL)          ;P/u module length
2906 23       01518         INC     HL              ;  into BC
2907 46       01519         LD      B,(HL)
2908 23       01520         INC     HL              ;Point to module start
2909 11001E   01521         LD      DE,1E00H        ;Point to overlay region
290C ED53751A 01522         LD      (HKRES$+9),DE   ;Upd TRAADR
2910 C5       01523         PUSH    BC              ;Save the length
2911 EDB0     01524         LDIR
2913 E1       01525         POP     HL              ;Rcvr the length
2914 22FE23   01526         LD      (MAXCOR$-2),HL  ;Stuff pointer
2917 C1       01527         POP     BC              ;Restore regs
2918 D1       01528         POP     DE
2919 F1       01529         POP     AF
291A 32701A   01530         LD      (HKRES$+4),A    ;Show its resident
291D E1       01531         POP     HL              ;  in tempy loc'n
291E C9       01532         RET
291F F1       01533 NOTRES  POP     AF
2920 E1       01534         POP     HL
2921 C37F1A   01535         JP      CKMOD@
2924          01536 RESEND  EQU     $
              01537 ;
              01538 ;       Routine to process DRIVE parameter
              01539 ;
2924 3A6429   01540 GETSEC2 LD      A,(CYLPRM+1)    ;If CYL=c entered,
2927 B7       01541         OR      A               ;  get config sector
2928 C4F52B   01542         CALL    NZ,GETCFG
292B 01FFFF   01543 DRIVE   LD      BC,-1
292E DD21701D 01544         LD      IX,SBUFF$+70H   ;Pt to DCT sector fields
2932 FD217004 01545         LD      IY,DCT$         ;Init to do all DCT$'s *
2936 04       01546         INC     B
2937 280B     01547         JR      Z,CKEI          ;Go if Drive not entered
2939 79       01548         LD      A,C
293A FE08     01549         CP      8               ;Drive in range?
293C D2E12A   01550         JP      NC,PRMERR       ;Go if > 7
293F          01551         @@GTDCT                 ;Get its DCT
293F+3E51     01552         LD      A,81
2941+EF       01553         RST     40
2942 FDE5     01554         PUSH    IY              ;Save the DCT address
2944          01555 CKEI    EQU     $
              01556 ;
2944 FDE5     01557 ADJEI   PUSH    IY              ;Calc IY offset into
2946 E1       01558         POP     HL              ;  DCTs to adjust IX
2947 1190FB   01559         LD      DE,-DCT$        ;  without affecting IY
294A 19       01560         ADD     HL,DE
294B EB       01561         EX      DE,HL
294C DD19     01562         ADD     IX,DE
294E          01563 DRVLOOP EQU     $
              01564 ;
              01565 ;       Routine to process WP parameter
              01566 ;
294E 010100   01567 WPARM   LD      BC,1            ;P/u WP parm value
2951 78       01568         LD      A,B
2952 B1       01569         OR      C
2953 3D       01570         DEC     A               ;Check if entered
2954 280D     01571         JR      Z,WPEND         ;  and go if not
2956 3C       01572         INC     A
2957 2806     01573         JR      Z,WPOFF         ;Go if OFF
2959 FDCB03FE 01574 WPON    SET     7,(IY+3)        ;Turn on write protect
295D 1804     01575         JR      WPEND
295F FDCB03BE 01576 WPOFF   RES     7,(IY+3)        ;Turn off write protect
2963          01577 WPEND   EQU     $
              01578 ;
              01579 ;       Routine to process CYL parameter
              01580 ;
2963 010000   01581 CYLPRM  LD      BC,0            ;P/u Cyl parm value
2966 78       01582         LD      A,B
2967 B1       01583         OR      C
2968 282B     01584         JR      Z,CYLEND        ;Go if parm not entered
296A DDCB036E 01585         BIT     5,(IX+3)        ;If drive is 8",
296E 280C     01586         JR      Z,CYL1          ;  can't do it
2970 3A2C29   01587         LD      A,(DRIVE+1)     ;If drive entered,
2973 B7       01588         OR      A               ;  give error msg
2974 212D24   01589         LD      HL,NOCYL8$      ;'Can't CYL on 8" drive '
2977 C4E42A   01590         CALL    NZ,SETERR       ;Msg if DRIVE=d
297A 1819     01591         JR      DISABL
297C 79       01592 CYL1    LD      A,C             ;P/u user entry
297D 3D       01593         DEC     A
297E FE22     01594         CP      34              ;Not < 35 allowed
2980 3804     01595         JR      C,BADCYL        ;Go if bad
2982 FE60     01596         CP      96              ;Max for 5-1/4" floppy
2984 380C     01597         JR      C,GUDCYL        ;Good if < 96
2986 214724   01598 BADCYL  LD      HL,BADCYL$      ;"Cyl out of range
2989 CDE42A   01599         CALL    SETERR          ;Dsply and quit
298C AF       01600         XOR     A
298D 326429   01601         LD      (CYLPRM+1),A
2990 1803     01602         JR      DISABL
2992 DD7706   01603 GUDCYL  LD      (IX+6),A        ;Stuff default DCT
2995          01604 CYLEND  EQU     $
              01605 ;
              01606 ;       Routine to process DISABL parameter
              01607 ;
2995 010000   01608 DISABL  LD      BC,0            ;P/u parm value
2998 78       01609         LD      A,B
2999 B1       01610         OR      C
299A 280A     01611         JR      Z,ENABLE        ;Go if not DISABLE
299C 3A2C29   01612         LD      A,(DRIVE+1)     ;Don't permit disable
299F 3C       01613         INC     A               ;  if DRIVE parm not
29A0 2810     01614         JR      Z,STEP          ;  entered
29A2 3EC9     01615         LD      A,0C9H          ;Init disable byte
29A4 1809     01616         JR      ENADIS
29A6 010000   01617 ENABLE  LD      BC,0            ;P/u parm value
29A9 78       01618         LD      A,B
29AA B1       01619         OR      C
29AB 2805     01620         JR      Z,STEP          ;Go if not ENABLE
29AD 3EC3     01621         LD      A,0C3H          ;Init enable byte
29AF FD7700   01622 ENADIS  LD      (IY),A          ;Stuff Ena or Dis byte
              01623 ;
              01624 ;       Routine to process STEP parameter
              01625 ;
29B2 01FFFF   01626 STEP    LD      BC,-1           ;P/u Step parm value
29B5 04       01627         INC     B
29B6 2815     01628         JR      Z,STEPEND       ;Go if STEP not entered
29B8 79       01629         LD      A,C
29B9 FE04     01630         CP      4               ;Step must be < 4
29BB D2E12A   01631         JP      NC,PRMERR       ;Quit if out of range
29BE FDCB0466 01632         BIT     4,(IY+4)        ;Alien controller?
29C2 2039     01633         JR      NZ,WDESD        ;Bypass if alien
29C4 FD7E03   01634         LD      A,(IY+3)        ;P/u DCT byte and
29C7 E6FC     01635         AND     0FCH            ;  mask out old step
29C9 B1       01636         OR      C               ;Or in the new value
29CA FD7703   01637         LD      (IY+3),A        ;  and put back in DCT
29CD          01638 STEPEND EQU     $
              01639 ;
              01640 ;       Routine to process DELAY parameter
              01641 ;
29CD 010100   01642 DELAY   LD      BC,1            ;P/u the parm value
29D0 78       01643         LD      A,B
29D1 B1       01644         OR      C
29D2 3D       01645         DEC     A               ;Check if entered
29D3 2810     01646         JR      Z,CKDRV         ;Go if no delay entered
29D5 3C       01647         INC     A               ;Check if OFF
29D6 0600     01648         LD      B,0             ;Init delay=on
29D8 2002     01649         JR      NZ,DELAY1       ;Go if ON
29DA 0604     01650         LD      B,4             ;Init delay=off
29DC FD7E03   01651 DELAY1  LD      A,(IY+3)        ;Update delay
29DF E6FB     01652         AND     0FBH            ;  in DCT
29E1 B0       01653         OR      B
29E2 FD7703   01654         LD      (IY+3),A
              01655 ;
              01656 ;       Routine to process CKDRV parameter
              01657 ;
29E5 010100   01658 CKDRV   LD      BC,1            ;P/u Ckdrv parm value
29E8 78       01659         LD      A,B
29E9 B1       01660         OR      C
29EA 3D       01661         DEC     A               ;Check if entered
29EB 2810     01662         JR      Z,WDESD         ;Go if not entered
29ED 3C       01663         INC     A               ;See if OFF or ON
29EE 0600     01664         LD      B,0             ;Init ckdrv=on
29F0 2002     01665         JR      NZ,CKDRV1       ;Go if ON
29F2 0680     01666         LD      B,80H           ;Set bit 7, ckdrv off
29F4 FD7E04   01667 CKDRV1  LD      A,(IY+4)        ;Update ckdrv bit
29F7 E67F     01668         AND     7FH             ;  by removing old state,
29F9 B0       01669         OR      B               ;  merging 0 or 80H
29FA FD7704   01670         LD      (IY+4),A        ;  and putting back in DCT
29FD 3A2C29   01671 WDESD   LD      A,(DRIVE+1)     ;Drive parm used prev ?
2A00 3C       01672         INC     A
2A01 2014     01673         JR      NZ,PUTSEC2      ;Go if DRIVE entered
2A03 110A00   01674         LD      DE,10           ;  else loop thru all DCTs
2A06 DD19     01675         ADD     IX,DE           ;Advance to next DCT
2A08 FD19     01676         ADD     IY,DE
2A0A FDE5     01677         PUSH    IY
2A0C E1       01678         POP     HL              ;Xfer DCT start to HL
2A0D 7D       01679         LD      A,L             ;Ck on end of DCTs
2A0E FEC0     01680         CP      80+70H          ;Offset is 70H
2A10 DA4E29   01681         JP      C,DRVLOOP       ;Loop until done
2A13 210000   01682         LD      HL,0            ;Show no DCT given
2A16 E5       01683         PUSH    HL
2A17 3A6429   01684 PUTSEC2 LD      A,(CYLPRM+1)    ;If CYL=c entered
2A1A B7       01685         OR      A               ;  put config sector
2A1B C4F22B   01686         CALL    NZ,PUTCFG
              01687 ;
              01688 ;       Routine to process DRIVER parameter
              01689 ;
2A1E 110000   01690 DVRPARM LD      DE,0            ;P/u parm value
2A21 7A       01691         LD      A,D
2A22 B3       01692         OR      E
2A23 CAF42A   01693         JP      Z,DVR4          ;Go if DRIVER not entered
2A26 3C       01694         INC     A               ;Full name given?
2A27 2823     01695         JR      Z,GETN3         ;Go if not & prompt
2A29 21FB2C   01696         LD      HL,FCB1+1       ;  else pick it up
2A2C E5       01697         PUSH    HL              ;Save ptr to start
2A2D 1A       01698 GETN1   LD      A,(DE)          ;P/u name char
2A2E FE0D     01699         CP      CR
2A30 2815     01700         JR      Z,GETN2         ;Exit on eol
2A32 FE2C     01701         CP      ','
2A34 2811     01702         JR      Z,GETN2         ;Exit on end of parm
2A36 FE22     01703         CP      '"'
2A38 280D     01704         JR      Z,GETN2         ;Exit on closing quote
2A3A FE29     01705         CP      ')'
2A3C 2809     01706         JR      Z,GETN2         ;Exit on end of parms
2A3E FE03     01707         CP      3
2A40 2805     01708         JR      Z,GETN2         ;Exit on JCL line end
2A42 77       01709         LD      (HL),A          ;  else xfer the char
2A43 13       01710         INC     DE
2A44 23       01711         INC     HL
2A45 18E6     01712         JR      GETN1           ;Loop
2A47 360D     01713 GETN2   LD      (HL),CR         ;End with CR
2A49 E1       01714         POP     HL              ;Recover name ptr
2A4A 1845     01715         JR      DVR2
2A4C          01716 GETN3   @@DSPLY EIPMPT          ;"Enter dct dvr name
              01717         IFEQ    01H,1
2A4C+21A824   01718         LD      HL,EIPMPT
              01719         ENDIF
2A4F+3E0A     01720         LD      A,10
2A51+EF       01721         RST     40
2A52 21FB2C   01722         LD      HL,FCB1+1       ;Pt to buffer
2A55 010018   01723         LD      BC,24<8         ;24 char max
2A58          01724         @@KEYIN                 ;Get filespec
2A58+3E09     01725         LD      A,9
2A5A+EF       01726         RST     40
2A5B 3034     01727         JR      NC,DVR2         ;Go if not BREAK
              01728 ;
              01729 ;       BREAK entered on DRIVER request
              01730 ;       Reset all drive code table positions
              01731 ;       if DRIVE not entered
              01732 ;
2A5D CDF52B   01733         CALL    GETCFG          ;Get SIS
2A60 210019   01734         LD      HL,SBUFF$+70H-DCT$      ;Pt to tables "offset"
2A63 3A2C29   01735 DDCT1   LD      A,(DRIVE+1)     ;Was Drive entered?
2A66 3C       01736         INC     A
2A67 D1       01737         POP     DE              ;Rcvr drive #
2A68 2003     01738         JR      NZ,DDCT2
2A6A 117004   01739         LD      DE,DCT$         ;Else use all 8
2A6D 19       01740 DDCT2   ADD     HL,DE           ;Index the specific DCT
2A6E 7B       01741 DVRA    LD      A,E
2A6F FE98     01742         CP      40+70H
2A71 3EC9     01743         LD      A,0C9H          ;Disable drives 4-7
2A73 3002     01744         JR      NC,DVRB
2A75 3EC3     01745         LD      A,0C3H
2A77 77       01746 DVRB    LD      (HL),A          ;Stuff vector (JP/RET)
2A78 2C       01747         INC     L               ;Pt to default DCT+3
2A79 2C       01748         INC     L
2A7A 2C       01749         INC     L
2A7B 1C       01750         INC     E               ;Pt to resident DCT+3
2A7C 1C       01751         INC     E
2A7D 1C       01752         INC     E
2A7E 010700   01753         LD      BC,7            ;Shift defaults to
2A81 EDB0     01754         LDIR                    ;  resident DCT
2A83 3A2C29   01755 DVRC    LD      A,(DRIVE+1)     ;Test if drive entered
2A86 3C       01756         INC     A
              01757         IF      @BLD631
2A87 2005     01758         JR      NZ,SYSPRM$      ;<631>
              01759         ELSE
              01760         JR      NZ,SYSPRM       ;Go if yes
              01761         ENDIF
2A89 7B       01762         LD      A,E             ;Ck on end of DCTs
2A8A FEC0     01763         CP      80+70H
2A8C 30E0     01764         JR      NC,DVRA         ;Loop until all 8
              01765         IF      @BLD631
2A8E C3F52A   01766 SYSPRM$:JP      SYSPRM          ;<631>
              01767         ELSE
              01768         JR      SYSPRM
              01769         ENDIF
2A91 7E       01770 DVR2    LD      A,(HL)          ;Is first char ?
2A92 FE0D     01771         CP      CR
2A94 285E     01772         JR      Z,DVR4          ;Bypass if default
2A96 CD0C2C   01773         CALL    GOTMEM?
2A99 D1       01774         POP     DE              ;Pop to keep stack
2A9A DADD2A   01775         JP      C,NOMEM         ;  straight if error
2A9D D5       01776         PUSH    DE
2A9E 11FA2C   01777         LD      DE,FCB1         ;Else fetch spec
2AA1          01778         @@FSPEC
2AA1+3E4E     01779         LD      A,78
2AA3+EF       01780         RST     40
2AA4 21E924   01781         LD      HL,DCTEXT       ;Use /DCT as the
2AA7          01782         @@FEXT                  ;  default extension
2AA7+3E4F     01783         LD      A,79
2AA9+EF       01784         RST     40
2AAA          01785         @@FLAGS
2AAA+3E65     01786         LD      A,101
2AAC+EF       01787         RST     40
2AAD FDCB12D6 01788         SET     2,(IY+'S'-'A')  ;Set RUN bit
2AB1          01789         @@LOAD                  ;Load the prog
2AB1+3E4C     01790         LD      A,76
2AB3+EF       01791         RST     40
2AB4 D1       01792         POP     DE              ;Recover drive table
2AB5 C2E92A   01793         JP      NZ,IOERR        ;Quit on load error
2AB8 D5       01794         PUSH    DE
2AB9 E5       01795         PUSH    HL              ;Save prog's traadr
2ABA 21F42A   01796         LD      HL,DVR4         ;Pt to our return
2ABD E3       01797         EX      (SP),HL         ;Exch with his
2ABE FDCB02DE 01798         SET     3,(IY+'C'-'A')  ;Set system request
2AC2 E9       01799         JP      (HL)            ;Go to prog
              01800         IF      @BLD631
2AC3 21FFFF   01801 ABORT:  LD      HL,0FFFFH       ;<631>
              01802 ;
2AC6 310000   01803 LSAVESP LD      SP,$-$          ;<631>P/u original stack
2AC9          01804         @@CKBRKC                ;<631>Clear any 
2AC9+3E6A     01805         LD      A,106
2ACB+EF       01806         RST     40
2ACC C9       01807         RET                     ;<631>Ret to DOS
              01808 ;
              01809 ;       Internal Error Message Handling
              01810 ;
2ACD 21C42C   01811 MANABT: LD      HL,MANABT$      ;<631>
2AD0 DD       01812         DB      0DDH            ;<631>
2AD1 21112C   01813 JCLON:  LD      HL,JCLON$       ;<631>
2AD4 DD       01814         DB      0DDH            ;<631>
2AD5 21A32C   01815 SPCERR: LD      HL,SPCERR$      ;<631>
2AD8 DD       01816         DB      0DDH            ;<631>
2AD9 217A2C   01817 SAMDRV: LD      HL,SAMDRV$      ;<631>
2ADC DD       01818         DB      0DDH            ;<631>
2ADD 210324   01819 NOMEM   LD      HL,NOMEM$       ;<631>"No memory available
2AE0 DD       01820         DB      0DDH            ;<631>
2AE1 211D24   01821 PRMERR: LD      HL,PRMERR$      ;<631>
2AE4          01822 SETERR  @@LOGOT                 ;<631>
              01823         IFEQ    00H,1
              01824         LD      HL,
              01825         ENDIF
2AE4+3E0C     01826         LD      A,12
2AE6+EF       01827         RST     40
2AE7 18DA     01828         JR      ABORT           ;<631>Exit
              01829 ;
              01830 ;       I/O Error Handler
              01831 ;
2AE9 6F       01832 IOERR   LD      L,A             ;<631>Error # to HL
2AEA 2600     01833         LD      H,0             ;<631>
2AEC F6C0     01834         OR      0C0H            ;<631>Set brief to return
2AEE 4F       01835         LD      C,A             ;<631>
2AEF          01836         @@ERROR                 ;<631>Display the error
2AEF+3E1A     01837         LD      A,26
2AF1+EF       01838         RST     40
2AF2 18D2     01839         JR      LSAVESP         ;<631>Exit
              01840         ENDIF
2AF4 D1       01841 DVR4    POP     DE              ;Rcvr drive table
              01842 ;
              01843 ;       System = new system drive
              01844 ;
2AF5 01FFFF   01845 SYSPRM  LD      BC,-1           ;P/u parm value
2AF8 78       01846         LD      A,B
              01847         IF      @BLD631
2AF9 A1       01848         AND     C               ;<631>
2AFA 3C       01849         INC     A               ;<631>
2AFB 280A     01850         JR      Z,SWAP          ;<631>
2AFD ED43082B 01851         LD      (SWAP$),BC      ;<631>
2B01 210000   01852         LD      HL,0            ;<631>
2B04 222C29   01853         LD      (DRIVE+1),HL    ;<631>
2B08          01854 SWAP$:  EQU     $+1
2B07 01FFFF   01855 SWAP:   LD      BC,0FFFFH       ;<631>
2B0A 78       01856         LD      A,B             ;<631>
2B0B A1       01857         AND     C               ;<631>
2B0C 3C       01858         INC     A               ;<631>
2B0D 286E     01859         JR      Z,L2B7D         ;<631>
2B0F 79       01860         LD      A,C             ;<631>
2B10 FE08     01861         CP      8               ;<631>
2B12 D2D52A   01862         JP      NC,SPCERR       ;<631>
2B15 32482B   01863         LD      (L2B48),A       ;<631>
2B18 21582B   01864         LD      HL,L2B58        ;<631>
2B1B B7       01865         OR      A               ;<631>
2B1C 2804     01866         JR      Z,L2B22         ;<631>
2B1E 77       01867         LD      (HL),A          ;<631>
2B1F 21482B   01868         LD      HL,L2B48        ;<631>
2B22 C630     01869 L2B22:  ADD     A,30H           ;<631>
2B24 32652C   01870         LD      (SRCDRV$),A     ;<631>
2B27 3A2C29   01871         LD      A,(DRIVE+1)     ;<631>
2B2A FE08     01872         CP      8               ;<631>
2B2C D2D52A   01873         JP      NC,SPCERR       ;<631>
2B2F 77       01874         LD      (HL),A          ;<631>
2B30 C630     01875         ADD     A,'0'           ;<631>
2B32 326C2C   01876         LD      (DSTDRV$),A     ;<631>
2B35 7E       01877         LD      A,(HL)          ;<631>
2B36 A9       01878         XOR     C               ;<631>
2B37 CAD92A   01879         JP      Z,SAMDRV        ;<631>
2B3A 3A482B   01880 L2B3A:  LD      A,(L2B48)       ;<631>
2B3D B7       01881         OR      A               ;<631>
2B3E 3A582B   01882         LD      A,(L2B58)       ;<631>
2B41 CCA32B   01883         CALL    Z,L2BA3         ;<631>
2B44 CD812B   01884         CALL    L2B81           ;<631>
2B48          01885 L2B48:  EQU     $+1             ;<631>
2B47 0E00     01886         LD      C,0             ;<631>
2B49          01887         @@GTDCT                 ;<631>
2B49+3E51     01888         LD      A,81
2B4B+EF       01889         RST     40
2B4C FDCB047E 01890         BIT     7,(IY+4)        ;<631>
2B50 FDCB04BE 01891         RES     7,(IY+4)        ;<631>
2B54 F5       01892         PUSH    AF              ;<631>
2B55 FDE5     01893         PUSH    IY              ;<631>
2B58          01894 L2B58:  EQU     $+1             ;<631>
2B57 0E00     01895         LD      C,0             ;<631>
2B59          01896         @@GTDCT                 ;<631>
2B59+3E51     01897         LD      A,81
2B5B+EF       01898         RST     40
2B5C E1       01899         POP     HL              ;<631>
2B5D F1       01900         POP     AF              ;<631>
2B5E FDCB04BE 01901         RES     7,(IY+4)        ;<631>
2B62 2804     01902         JR      Z,L2B68         ;<631>
2B64 FDCB04FE 01903         SET     7,(IY+4)        ;<631>
2B68 FDE5     01904 L2B68:  PUSH    IY              ;<631>
2B6A D1       01905         POP     DE              ;<631>
2B6C          01906 L2B6C:  EQU     $+1             ;<631>
2B6B 010A00   01907         LD      BC,000AH        ;<631>
2B6E 1A       01908 L2B6E:  LD      A,(DE)          ;<631>
2B6F EDA0     01909         LDI                     ;<631>
2B71 2B       01910         DEC     HL              ;<631>
2B72 77       01911         LD      (HL),A          ;<631>
2B73 23       01912         INC     HL              ;<631>
2B74 EA6E2B   01913         JP      PE,L2B6E        ;<631>
2B77 215D2C   01914         LD      HL,ARESWP$      ;<631>
2B7A          01915         @@DSPLY                 ;<631>
              01916         IFEQ    00H,1
              01917         LD      HL,
              01918         ENDIF
2B7A+3E0A     01919         LD      A,10
2B7C+EF       01920         RST     40
2B7D 210000   01921 L2B7D:  LD      HL,0            ;<631>
2B80 C9       01922         RET                     ;<631>
2B81 217C00   01923 L2B81:  LD      HL,SFLAG$       ;<631>
2B84 CB6E     01924         BIT     5,(HL)          ;<631>
2B86 C8       01925         RET     Z               ;<631>
2B87 21C600   01926         LD      HL,JFCB$+6      ;<631>
2B8A 3A482B   01927         LD      A,(L2B48)       ;<631>
2B8D 47       01928         LD      B,A             ;<631>
2B8E AE       01929         XOR     (HL)            ;<631>
2B8F E607     01930         AND     07H             ;<731>
2B91 3A582B   01931         LD      A,(L2B58)       ;<631>
2B94 2007     01932         JR      NZ,L2B9D        ;<631>
2B96 47       01933         LD      B,A             ;<631>
2B97 7E       01934 L2B97:  LD      A,(HL)          ;<631>
2B98 E6F8     01935         AND     0F8H            ;<631>
2B9A B0       01936         OR      B               ;<631>
2B9B 77       01937         LD      (HL),A          ;<631>
2B9C C9       01938         RET                     ;<631>
2B9D AE       01939 L2B9D:  XOR     (HL)            ;<631>
2B9E E607     01940         AND     07H             ;<631>
2BA0 28F5     01941         JR      Z,L2B97         ;<631>
2BA2 C9       01942         RET                     ;<631>
2BA3 32AC2B   01943 L2BA3:  LD      (L2BAC),A       ;<631>
2BA6 C630     01944         ADD     A,'0'           ;<631>
2BA8 325A2C   01945         LD      (NDRIVE$),A     ;<631>
              01946         ELSE
              01947         JP      PATCH1          ;Set HL=0, no abort if exit
              01948 ;
              01949 CONT1   DEC     A
              01950         CP      8               ;Drive in range?
              01951         JP      NC,PRMERR       ;Go if > 7
              01952         ENDIF
              01953         IF      @BLD631
2BAC          01954 L2BAC:  EQU     $+1
2BAB 0E00     01955 L2BAB:  LD      C,0             ;<631>
              01956         ENDIF
              01957 ;
              01958 ;       Check on diskette in place
              01959 ;
2BAD          01960         @@CKDRV
2BAD+3E21     01961         LD      A,33
2BAF+EF       01962         RST     40
2BB0 2024     01963         JR      NZ,SYSP2        ;Prompt if no diskette
2BB2          01964         @@GTDCT                 ;Get its DCT
2BB2+3E51     01965         LD      A,81
2BB4+EF       01966         RST     40
              01967 ;
              01968 ;       Perform minimal check for SYSTEM disk
              01969 ;
2BB5 FD5609   01970 SYSP1   LD      D,(IY+9)        ;P/u the dir cyl
2BB8 21001D   01971         LD      HL,SBUFF$
2BBB 5D       01972         LD      E,L             ;Init for GAT read
2BBC          01973         @@RDSSC                 ;Read the sector
2BBC+3E55     01974         LD      A,85
2BBE+EF       01975         RST     40
2BBF C2E92A   01976         JP      NZ,IOERR        ;Quit on read error
2BC2 2ECD     01977         LD      L,0CDH          ;Check the SYSTEM bit
2BC4 CB7E     01978         BIT     7,(HL)
2BC6 200E     01979         JR      NZ,SYSP2        ;Not system? Go prompt
2BC8 21001D   01980         LD      HL,SBUFF$       ;Point to buffer
2BCB 1E05     01981         LD      E,5             ;Point to dir sec #5
2BCD          01982         @@RDSSC                 ;Read the sector
2BCD+3E55     01983         LD      A,85
2BCF+EF       01984         RST     40
2BD0 7E       01985         LD      A,(HL)          ;P/u the byte
2BD1 E650     01986         AND     01010000B       ;Check for a system file
2BD3 FE50     01987         CP      01010000B       ;  and not killed
              01988                                 ;  in this slot, (SYS1)
              01989         IF      @BLD631
2BD5 C8       01990         RET     Z               ;<631>
2BD6 217C00   01991 SYSP2:  LD      HL,SFLAG$       ;<631>
2BD9 CB6E     01992         BIT     5,(HL)          ;<631>
2BDB C2D12A   01993         JP      NZ,JCLON        ;<631>
2BDE 213A2C   01994         LD      HL,NDSYS$       ;<631>
2BE1          01995         @@DSPLY                 ;<631>
              01996         IFEQ    00H,1
              01997         LD      HL,
              01998         ENDIF
2BE1+3E0A     01999         LD      A,10
2BE3+EF       02000         RST     40
2BE4 21FA2C   02001         LD      HL,FCB1         ;<631>
2BE7 010000   02002         LD      BC,0            ;<631>
2BEA          02003         @@KEYIN                 ;<631>
2BEA+3E09     02004         LD      A,9
2BEC+EF       02005         RST     40
2BED 30BC     02006         JR      NC,L2BAB        ;<631>
2BEF C3CD2A   02007         JP      MANABT          ;<631>
              02008         ELSE
              02009         JR      Z,SYSP3         ;Alive and a SYS file
              02010 ;
              02011 ;       Diskette is not a SYSTEM diskette
              02012 ;
              02013 SYSP2   LD      A,C             ;Stuff drive # in msg
              02014         ADD     A,'0'           ;Cvrt drive to ASCII
              02015         LD      (NDRIVE$),A
              02016         @@DSPLY NDSYS$          ;"Need system diskette..
              02017         LD      HL,FCB1         ;Create response buffer
              02018         LD      BC,0<8          ;Only  BREAK or ENTER
              02019         @@KEYIN                 ;Wait for entry
              02020         RET     C               ;Exit on 
              02021         JR      SYSPRM          ;Continue to check
              02022 ;
              02023 SYSP3   LD      HL,DCT$+4
              02024         BIT     7,(HL)          ;Check Ckdrv bit in DCT
              02025         RES     7,(HL)          ;Enable it for now
              02026         LD      HL,DCT$
              02027         LD      DE,FCB1         ;Use FCB space
              02028         PUSH    DE              ;Save where temp
              02029         PUSH    HL              ;Save where new SYSTEM
              02030         LD      BC,10           ;Save current SYS's DCT
              02031         LDIR
              02032         RES     7,(IY+4)        ;Make sure OFF
              02033         JR      Z,NOSET         ;Only set if it was set
              02034                                 ;  on the SYSTEM drive
              02035         SET     7,(IY+4)        ;CKDRV inhibit drive 0
              02036 NOSET   PUSH    IY              ;New DCT to HL
              02037         POP     HL
              02038         POP     DE              ;Rcvr SYS DCT now
              02039         PUSH    HL              ;Save where it goes
              02040         LD      C,10
              02041         LDIR                    ;New DCT into SYSTEM
              02042         POP     DE              ;P/u where old SYS goes
              02043         POP     HL              ;P/u temp address
              02044         LD      C,10            ;Move old SYS to new DCT
              02045         LDIR
              02046         LD      HL,NWSYS$       ;"New sys drive installed
              02047         JP      SETERR          ;Display and exit w/abort
              02048                                 ;  in case JCL active
              02049         ENDIF
              02050 ;
              02051 ;       Routines to read/write the config sector
              02052 ;
2BF2 3E35     02053 PUTCFG  LD      A,53            ;@WRSEC
              02054 ;
              02055         IF      @MOD4
2BF4 21       02056         DB      21H             ;Ignore next with LD HL,
              02057         ENDIF
              02058         IF      @MOD2
              02059         JR      PUTGETC         ;Jump over if mod2
              02060         ENDIF
              02061 ;
2BF5          02062 GETCFG  EQU     $
              02063         IF      @MOD4
2BF5 3E31     02064         LD      A,49            ;@RDSEC
2BF7 110200   02065         LD      DE,0<8+2        ;Config sector
              02066         ENDIF
              02067 ;
              02068         IF      @MOD2
              02069         LD      A,(DCT$+3)      ;Drive 0 dct data
              02070         AND     28H             ;Bit 5/3
              02071         CP      20H             ;8" floppy?
              02072         JR      NZ,SETSYS1      ;Go if not
              02073         LD      A,(DCT$+4)      ;Get data
              02074         AND     50H             ;Bit 6/4
              02075         CP      40H             ;DD not alien?
              02076         JR      NZ,SETSYS1      ;Go if not
              02077 ;
              02078         LD      HL,SBUFF$       ;System buffer
              02079         LD      A,(DCT$+9)      ;Get dir cylinder
              02080         LD      D,A             ;Pass to D
              02081         LD      E,0             ;Init sector 0
              02082         LD      C,E             ;Init drive 0
              02083         @@RDSSC                 ;Read directory
              02084         JR      NZ,PUTGETE      ;Go on disk error
              02085         LD      A,(SBUFF$+0CDH) ;Get gat data byte
              02086         BIT     7,A             ;Is data disk?
              02087 SETSYS1 LD      DE,0<8+2        ;Init sysinfo sector
              02088         JR      NZ,$+3          ;Go if data disk
              02089         INC     D               ;Else new sysinfo
              02090         LD      A,49            ;Init RDSEC
              02091         ENDIF
              02092 ;
2BFA 21001D   02093 PUTGETC LD      HL,SBUFF$       ;System buffer
              02094         IF      @BLD631
2BFD 4D       02095         LD      C,L             ;<631>
              02096         ELSE
              02097         LD      C,0             ;  in system drive
              02098         ENDIF
2BFE EF       02099         RST     40              ;Read or Write
2BFF C8       02100         RET     Z               ;Back if good i/o
2C00 E1       02101 PUTGETE POP     HL
2C01 C3E92A   02102         JP      IOERR           ;  else abort
              02103 ;
              02104 ;       Routine to get HIGH$
              02105 ;
2C04 0600     02106 GETHI$  LD      B,0             ;Init to get HIGH$
2C06 60       02107         LD      H,B
2C07 68       02108         LD      L,B
2C08          02109         @@HIGH$                 ;Get current HIGH$
2C08+3E64     02110         LD      A,100
2C0A+EF       02111         RST     40
2C0B C9       02112         RET
              02113 ;
              02114 ;       Routine to test if HIGH$ is frozen
              02115 ;
2C0C 3A6C00   02116 GOTMEM? LD      A,(CFLAG$)      ;Check if memory can
2C0F 0F       02117         RRCA                    ;  be altered
2C10 C9       02118         RET
              02119 ;
              02120         IF      @BLD631
2C11 43       02121 JCLON$: DB      'Can''t prompt for SYSTEM disk during JCL!',CR  ;<631>
     61 6E 27 74 20 70 72 6F
     6D 70 74 20 66 6F 72 20
     53 59 53 54 45 4D 20 64
     69 73 6B 20 64 75 72 69
     6E 67 20 4A 43 4C 21 0D
2C3A 49       02122 NDSYS$: DB      'Insert SYSTEM diskette in drive '      ;<631>
     6E 73 65 72 74 20 53 59
     53 54 45 4D 20 64 69 73
     6B 65 74 74 65 20 69 6E
     20 64 72 69 76 65 20 
2C5A 58       02123 NDRIVE$:DB      'X ',CR                                 ;<631>
     20 0D 
2C5D 44       02124 ARESWP$:DB      'Drives :'                              ;<631>
     72 69 76 65 73 20 3A 
2C65 53       02125 SRCDRV$:DB      'S and :'                               ;<631>
     20 61 6E 64 20 3A 
2C6C 44       02126 DSTDRV$:DB      'D now swapped',CR                      ;<631>
     20 6E 6F 77 20 73 77 61
     70 70 65 64 0D 
2C7A 53       02127 SAMDRV$:DB      'Source & Destination are the same drive!',CR   ;<631>
     6F 75 72 63 65 20 26 20
     44 65 73 74 69 6E 61 74
     69 6F 6E 20 61 72 65 20
     74 68 65 20 73 61 6D 65
     20 64 72 69 76 65 21 0D
2CA3 44       02128 SPCERR$:DB      'Drive specification error <0-7>!',CR   ;<631>
     72 69 76 65 20 73 70 65
     63 69 66 69 63 61 74 69
     6F 6E 20 65 72 72 6F 72
     20 3C 30 2D 37 3E 21 0D
2CC4 4D       02129 MANABT$:DB      'Manual  abort!',CR              ;<631>
     61 6E 75 61 6C 20 3C 42
     52 45 41 4B 3E 20 61 62
     6F 72 74 21 0D 
              02130         ELSE
              02131 NOMEM$  DB      'No memory space available',CR
              02132 PRMERR$ DB      'Parameter error',CR
              02133 NOCYL8$ DB      'CYL=c invalid on 8" drive',CR
              02134 BADCYL$ DB      'Cylinder count out of range <35-96>',CR
              02135 BADSYS$ DB      'Can''t SYSRES requested module',CR
              02136 MODRES$ DB      'System module already resident',CR
              02137 EIPMPT  DM      'Enter DCT driver  : ',3
              02138 NWSYS$  DB      'New SYSTEM drive installed',CR
              02139 NDSYS$  DB      'Insert SYSTEM diskette in drive X ',CR
              02140 BADBS$  DB      'Boot step out of range <0-3>',CR
              02141 DCTEXT  DM      'DCT'
              02142 ;
              02143 PRMTBL$ EQU     $
              02144         DB      'ALIVE '
              02145         DW      ALIVE+1
              02146         DB      'BSTEP '
              02147         DW      BSPARM+1
              02148         DM      'DRIVER'
              02149         DW      DVRPARM+1
              02150         DB      'FAST  '
              02151         DW      FPARM+1
              02152         DB      'SLOW  '
              02153         DW      SLOW+1
              02154         DB      'SYSRES'
              02155         DW      SYSRES+1
              02156         DB      'SYSTEM'
              02157         DW      SYSPRM+1
              02158         DB      'TYPE  '
              02159         DW      TYPE+1
              02160         DB      'WP    '
              02161         DW      WPARM+1
              02162         DB      'BLINK '
              02163         DW      BLINK+1
              02164         DB      'BREAK '
              02165         DW      BREAK+1
              02166         DB      'CYL   '
              02167         DW      CYLPRM+1
              02168         DB      'DATE  '
              02169         DW      DATE+1
              02170         DB      'DELAY '
              02171         DW      DELAY+1
              02172         DB      'CKDRV '
              02173         DW      CKDRV+1
              02174         DB      'DISABL'
              02175         DW      DISABL+1
              02176         DB      'DRIVE '
              02177         DW      DRIVE+1
              02178         DB      'ENABLE'
              02179         DW      ENABLE+1
              02180         DB      'GRAPHI'
              02181         DW      GRAPHI+1
              02182         DB      'LARGE '
              02183         DW      LARGE+1
              02184         DB      'RESTOR'
              02185         DW      RPARM+1
              02186         DB      'SMALL '
              02187         DW      SMALPRM+1
              02188         DB      'STEP  '
              02189         DW      STEP+1
              02190         DB      'TIME  '
              02191         DW      TIME+1
              02192         DB      'TRACE '
              02193         DW      TRACE+1
              02194         DB      'SMOOTH'
              02195         DW      SMOOTH+1
              02196         DB      'HERTZ5'
              02197         DW      HERTZ50+1
              02198         DB      'HERTZ6'
              02199         DW      HERTZ60+1
              02200         NOP
              02201         ENDIF
              02202 ;
              02203         IF      @BLD631
2CDA 53       02204         DC      32,'S'          ;<631>Patch space (Roys special edition?)
     53 53 53 53 53 53 53 53
     53 53 53 53 53 53 53 53
     53 53 53 53 53 53 53 53
     53 53 53 53 53 53 53 
              02205         ELSE
              02206 PATCH1  LD      HL,0            ;Set HL=0 "NO ERRORS"
              02207         OR      C
              02208         INC     A               ;Parm entered?
              02209         RET     Z               ;Exit if not
              02210         JP      CONT1           ;Continue on now
              02211 ;
              02212         DC      16,0            ;Patch space
              02213         ENDIF
2CFA 00       02214 FCB1    DC      32,0
     00 00 00 00 00 00 00 00
     00 00 00 00 00 00 00 00
     00 00 00 00 00 00 00 00
     00 00 00 00 00 00 00 
              02215 ;
25E5          02216         END     LSYSTEM
25E5 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]

Valid HTML 4.01!