LS-DOS 6.3.1 - LBSYSGEN 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:27:38 SYSGEN - LS-DOS 6.2          Page 00001 

              00001 ;LBSYSGEN/ASM - SYSGEN Command
              00003 ;
002C          00004 PAR_ERR EQU     44              ;Parameter Error
000D          00005 CR      EQU     13
4300          00006 MOD3BUF EQU     4300H
0028          00007 RST28   EQU     28H
              00008 ;
0000          00009 *GET    SVCMAC:3                ;SVC Macro equivalents
              00010 ;SVCMAC/ASM - LS-DOS Version VI
              00011 *LIST   OFF
              00403 *LIST   ON
              00405 *LIST   OFF                     ;Get SYS0/EQU
              00858 *LIST   ON
              00859 ;
2400          00860         ORG     2400H
              00861 ;
              00862         IF      @BLD631
2400 ED731B24 00863 SYSGEN  LD      (SAVESP+1),SP   ;<631>Save the stack pointer
2404 E5       00864         PUSH    HL              ;<631>
2405 217C00   00865         LD      HL,SFLAG$       ;<631>
2408 7E       00866         LD      A,(HL)          ;<631>
2409 CBAE     00867         RES     5,(HL)          ;<631>JCL is not active, even if it is
240B 326D25   00868         LD      (L256D),A       ;<631>Save original state
240E E1       00869         POP     HL              ;<631>
240F          00870         @@CKBRKC                ;<631>Break key down?
240F+3E6A     00871         LD      A,106
2411+EF       00872         RST     40
2412 2037     00873         JR      NZ,ABORT        ;<631>abort
              00874         ELSE
              00875 SYSGEN  @@CKBRKC                ;Break key down?
              00876         JR      Z,BEGINA        ;Ok if not
              00877         LD      HL,-1           ;  else abort
              00878         RET
              00879 ;
              00880 ;       Save stack & call the sysgen routine
              00881 ;
              00882 BEGINA  LD      (SAVESP+1),SP   ;Save the stack pointer
              00883         ENDIF
2414 CD5024   00884         CALL    SYSGEN1         ;Do the SYSGEN
2417 210000   00885 EXIT    LD      HL,0            ;Set for no error
241A 310000   00886 SAVESP  LD      SP,$-$          ;P/u original SP
              00887         IF      @BLD631
241D CD6825   00888         CALL    L2568           ;<631>
              00889         ENDIF
2420          00890         @@CKBRKC                ;Clear pending 
2420+3E6A     00891         LD      A,106
2422+EF       00892         RST     40
2423 C9       00893         RET                     ;Back to DOS
              00894 ;
              00895 ;       I/O Error Handler
              00896 ;
2424 3E2C     00897 PRMERR  LD      A,PAR_ERR       ;Parameter Error
2426 6F       00898 IOERR   LD      L,A             ;Error # to HL
2427 2600     00899         LD      H,0
2429 F6C0     00900         OR      0C0H            ;Abbrev, return
242B 4F       00901         LD      C,A
242C          00902         @@ERROR                 ;Display error
242C+3E1A     00903         LD      A,26
242E+EF       00904         RST     40
242F 18E9     00905         JR      SAVESP          ;Exit
              00906 ;
              00907 ;       Internal Error Message Handler
              00908 ;
2431 214D27   00909 NOMDSK  LD      HL,NOMDSK$      ;"Memdisk active
2434 DD       00910         DB      0DDH
2435 216B27   00911 NORTES  LD      HL,NORTES$      ;"File routes active
2438 DD       00912         DB      0DDH
2439 21A526   00913 NOTFND  LD      HL,NOTFND$      ;"No config found
243C DD       00914         DB      0DDH
243D 213127   00915 NOSPL   LD      HL,NOSPL$       ;"Spooler active
2440 DD       00916         DB      0DDH
              00917         IF      @BLD631
2441 21EA26   00918 ISWP:   LD      HL,ISWP$        ;<631>Drive is write protected
              00919         ELSE
              00920 NOINDO  LD      HL,NOINDO$      ;"JCL active
              00921         ENDIF
2444 DD       00922         DB      0DDH
2445 210D27   00923 NOCANDO LD      HL,NOCANDO$     ;"Sysgen inhibit set
2448 CD0005   00924         CALL    @LOGOT
              00925         IF      @BLD631
              00926 ABORT
              00927         ENDIF
244B 21FFFF   00928         LD      HL,-1           ;Set abort code
244E 18CA     00929         JR      SAVESP          ;Exit
              00930 ;
              00931 ;       SYSGEN1 - Save the state of the system
              00932 ;
2450 118F27   00933 SYSGEN1 LD      DE,PRMTBL$      ;Check for user parameters
2453          00934         @@PARAM
2453+3E11     00935         LD      A,17
2455+EF       00936         RST     40
2456 C22424   00937         JP      NZ,PRMERR       ;Quit on parm error
2459          00938         @@FLAGS
2459+3E65     00939         LD      A,101
245B+EF       00940         RST     40
              00941 ;
              00942 ;       Routine to process DRIVE parameter
              00943 ;
245C 010000   00944 DRIVE   LD      BC,0            ;Drive parm response
245F 79       00945         LD      A,C
2460 FE08     00946         CP      8               ;Drive in range?
2462 D22424   00947         JP      NC,PRMERR       ;Go if > 7
2465 F630     00948         OR      '0'             ;Make it ASCII
2467 323E26   00949         LD      (CFGSPEC),A     ;  & stuff drive spec
246A 328426   00950         LD      (ATRSPEC),A
              00951         IF      @BLD631
246D          00952         @@CKDRV                 ;<631>
246D+3E21     00953         LD      A,33
246F+EF       00954         RST     40
2470 DA4124   00955         JP      C,ISWP          ;<631>
              00956         ENDIF
2473 CDFF25   00957         CALL    NPARM           ;Ck on yes or no entry
2476 CACC25   00958         JP      Z,CFGOFF        ;Jump if SYSGEN=OFF
              00959         IF      @BLD631
              00960         ELSE
              00961         BIT     5,(IY+'S'-'A')  ;Can't sysgen during DO
              00962         JP      NZ,NOINDO
              00963         ENDIF
2479 FDCB0346 00964         BIT     0,(IY+'D'-'A')  ;Can't sysgen if spooler
247D C23D24   00965         JP      NZ,NOSPL        ;  is active
2480 FDCB0366 00966         BIT     4,(IY+'D'-'A')  ;Can't sysgen if memdisk
2484 C23124   00967         JP      NZ,NOMDSK       ;  is active
2487 FDCB026E 00968         BIT     5,(IY+'C'-'A')  ;CK user sysgen inhibit
248B C24524   00969         JP      NZ,NOCANDO      ;Quit if set
248E CD0926   00970         CALL    CKRTES          ;Ck if any route to file
2491 C23524   00971         JP      NZ,NORTES       ;Can't if so
              00972 ;
              00973 ;       Initialize a CONFIG file on disk 0, or user spec'ed drive
              00974 ;
2494 112F26   00975         LD      DE,GENDCB       ;"CONFIG/SYS.CCC
2497 210029   00976         LD      HL,GENBUF       ;Config I/O buffer
249A 0600     00977         LD      B,0             ;Set LRL=256
249C          00978         @@INIT                  ;Create config file
249C+3E3A     00979         LD      A,58
249E+EF       00980         RST     40
249F C22624   00981         JP      NZ,IOERR        ;Quit on init error
              00982 ;
              00983 ;       Generate the file header block
              00984 ;
24A2 3E05     00985         LD      A,5             ;Put file header
24A4 CD2726   00986         CALL    PUTOUT
24A7 3E06     00987         LD      A,6             ;Put header length
24A9 CD2726   00988         CALL    PUTOUT
24AC 0606     00989         LD      B,6             ;Put header name
24AE 214F26   00990         LD      HL,CFGNAM$      ;"CONFIG"
24B1 7E       00991 WRNAM   LD      A,(HL)          ;Write name to
24B2 23       00992         INC     HL              ;  config file header
24B3 CD2726   00993         CALL    PUTOUT
24B6 10F9     00994         DJNZ    WRNAM
              00995 ;
              00996 ;       Generate disabling of all interrupts
              00997 ;
24B8 0601     00998         LD      B,1             ;Set block length
24BA 113800   00999         LD      DE,@RST38       ;Set load address
24BD 21A825   01000         LD      HL,C9FLD        ;Point to block (X'C9')
24C0 CDAA25   01001         CALL    WRBLCK          ;Write the block
              01002 ;
              01003 ;       Dump memory from (DVRHI$) to DVREND$
              01004 ;
24C3 2A0602   01005         LD      HL,(DVRHI$)     ;Point to max memory
24C6 11F40F   01006         LD      DE,DVREND$      ;Point to start
24C9 AF       01007         XOR     A
24CA ED52     01008         SBC     HL,DE           ;How much to save
24CC 44       01009         LD      B,H             ;  into BC
24CD 4D       01010         LD      C,L
24CE C47025   01011         CALL    NZ,DUMP         ;File DVREND$ to top
              01012 ;
              01013 ;       Dump memory from HIGH$ to top-of-memory FIRST
              01014 ;
24D1 ED5B1C00 01015         LD      DE,(PHIGH$)     ;Point to max memory
24D5 210000   01016         LD      HL,0            ;Set up to get current
24D8 45       01017         LD      B,L             ;  HIGH$
24D9          01018         @@HIGH$
24D9+3E64     01019         LD      A,100
24DB+EF       01020         RST     40
24DC EB       01021         EX      DE,HL           ;HIGH$ to DE,
24DD AF       01022         XOR     A               ;  PHIGH to HL
24DE ED52     01023         SBC     HL,DE           ;How much to save?
24E0 44       01024         LD      B,H
24E1 4D       01025         LD      C,L
24E2 13       01026         INC     DE              ;First byte in use
24E3 C47025   01027         CALL    NZ,DUMP         ;File HIGH$+1 to top
              01028 ;
              01029 ;       Generate all data from address table
              01030 ;
24E6 21B427   01031         LD      HL,ADRTBL$      ;Point to grab table
24E9 4E       01032 WRTBL   LD      C,(HL)          ;P/u lo order length
24EA 23       01033         INC     HL
24EB 46       01034         LD      B,(HL)          ;P/u hi order length
24EC 23       01035         INC     HL
24ED 78       01036         LD      A,B
24EE B1       01037         OR      C
24EF 280B     01038         JR      Z,GENDCT        ;Exit on zero length
24F1 5E       01039         LD      E,(HL)          ;P/u lo order address
24F2 23       01040         INC     HL
24F3 56       01041         LD      D,(HL)          ;P/u hi order address
24F4 23       01042         INC     HL
24F5 E5       01043         PUSH    HL              ;Save table pointer
24F6 CD7025   01044         CALL    DUMP            ;P/u the code & file it
24F9 E1       01045         POP     HL              ;Restore table pointer
24FA 18ED     01046         JR      WRTBL
              01047 ;
              01048 ;       Generate the DCT$ (offset)
              01049 ;
24FC 0650     01050 GENDCT  LD      B,80            ;Table is 80 bytes
24FE 110043   01051         LD      DE,MOD3BUF      ;Place to stuff DCT$
2501 0E00     01052         LD      C,0
2503          01053         @@GTDCT                 ;Write out the DCTs
2503+3E51     01054         LD      A,81
2505+EF       01055         RST     40
2506 FDE5     01056         PUSH    IY              ;  handled by SYS0
2508 E1       01057         POP     HL
2509 CDAA25   01058         CALL    WRBLCK
              01059 ;
              01060 ;       Generate the original interrupt vector JP
              01061 ;
250C 0601     01062 INTVEC  LD      B,1             ;File the interrupt
250E 113800   01063         LD      DE,@RST38       ;  vector address
2511 21A925   01064         LD      HL,JPINST       ;  with a JP
2514 CDAA25   01065         CALL    WRBLCK          ;Write the block
              01066 ;
              01067 ;       Generate the transfer address
              01068 ;
2517 3E02     01069         LD      A,2             ;Transfer address
2519 CD2726   01070         CALL    PUTOUT
251C 3E02     01071         LD      A,2
251E CD2726   01072         CALL    PUTOUT
2521 AF       01073         XOR     A               ;Xfer address is 0000
2522 CD2726   01074         CALL    PUTOUT
2525 AF       01075         XOR     A
2526 CD2726   01076         CALL    PUTOUT
2529          01077         @@CLOSE                 ;Close config file
2529+3E3C     01078         LD      A,60
252B+EF       01079         RST     40
252C C22624   01080         JP      NZ,IOERR        ;Quit on close error
              01081 ;
              01082 ;       Let the config sector know there's a CONFIG/SYS
              01083 ;
              01084         IF      @MOD2
              01085 ;
              01086         LD      A,(DRIVE+1)     ;Drive #
              01087         LD      C,A             ;Pass drive #
              01088         LD      HL,SBUFF$       ;I/O buffer
              01089         @@GTDCT                 ;Fetch DCT
              01090 ;
              01091         LD      A,(IY+3)        ;Get DCT data
              01092         AND     28H             ;Bit 5/3
              01093         CP      20H             ;8" floppy?
              01094         JR      NZ,SETSYS1      ;Go if not
              01095         LD      A,(IY+4)        ;Get DCT data
              01096         AND     50H             ;Bit 6/4
              01097         CP      40H             ;DD and not alien?
              01098         JR      NZ,SETSYS1      ;Go if not
              01099 ;
              01100         LD      D,(IY+9)        ;Get GAT address
              01101         LD      E,0             ;DE=>gat
              01102         @@RDSEC                 ;Read sector
              01103         CP      6               ;Directory?
              01104         JP      NZ,IOERR        ;Go on disk error
              01105         LD      A,(SBUFF$+0CDH) ;Get gat data byte
              01106         BIT     7,A             ;Data disk?
              01107 SETSYS1 LD      D,0             ;Init sys info sector
              01108         JR      NZ,$+3          ;Go if not 8" floppy sys
              01109         INC     D               ;  else sysinfo on cyl 1
              01110         LD      E,2             ;Sysinfo sector
              01111 ;
              01112         ENDIF
              01113 ;
252F 21001D   01114         LD      HL,SBUFF$       ;Use this as disk buffer
              01115 ;
              01116         IF      @MOD4
2532 110200   01117         LD      DE,0<8+2        ;Trk 0, sect 2 (SIS)
              01118         ENDIF
              01119 ;
2535 3A5D24   01120         LD      A,(DRIVE+1)     ;P/u logical drive #
2538 4F       01121         LD      C,A             ;  of drive (DRIVE)
2539          01122         @@RDSEC                 ;Read System Info Sector
2539+3E31     01123         LD      A,49
253B+EF       01124         RST     40
253C C22624   01125         JP      NZ,IOERR        ;Quit on read error
253F AF       01126         XOR     A               ;Turn on standard config
2540 32011D   01127         LD      (SBUFF$+1),A
2543          01128         @@WRSEC                 ;Write it back
2543+3E35     01129         LD      A,53
2545+EF       01130         RST     40
2546 C22624   01131         JP      NZ,IOERR        ;Quit on write error
2549 2EC0     01132         LD      L,0C0H          ;Pt to SYS/DATA byte
254B B6       01133         OR      (HL)            ;Check if System disk
254C 21C126   01134         LD      HL,WARN$        ;  and inform in not
254F 2003     01135         JR      NZ,$+5
2551          01136         @@LOGOT
              01137         IFEQ    00H,1
              01138         LD      HL,
              01139         ENDIF
2551+3E0C     01140         LD      A,12
2553+EF       01141         RST     40
              01142 ;
              01143 ;       Let user know it's done
              01144 ;
2554          01145         @@LOGOT CFGBLT          ;Log completion
              01146         IFEQ    01H,1
2554+215526   01147         LD      HL,CFGBLT
              01148         ENDIF
2557+3E0C     01149         LD      A,12
2559+EF       01150         RST     40
              01151         IF      @BLD631
255A CD6825   01152         CALL    L2568           ;<631>
              01153         ENDIF
255D 216E26   01154         LD      HL,ATRBIT       ;Make CONFIG invisible
2560 3E18     01155         LD      A,24            ;Init for CMNDI
2562 C32800   01156         JP      RST28           ;  & execute
2565          01157         @@CMNDI
2565+3E18     01158         LD      A,24
2567+EF       01159         RST     40
              01160         IF      @BLD631
2568 E5       01161 L2568:  PUSH    HL              ;<631>Restore previous SFLAG$
2569 217C00   01162         LD      HL,SFLAG$       ;<631>setting, including
256D          01163 L256D:  EQU     $+1             ;<631>turning JCL back on if
256C 3600     01164         LD      (HL),0          ;<631>it was on before.
256E E1       01165         POP     HL              ;<631>
256F C9       01166         RET                     ;<631>
              01167         ENDIF
              01168 ;
              01169 ;       Routine to DUMP core
              01170 ;
2570 EB       01171 DUMP    EX      DE,HL           ;Load address to HL
2571 112F26   01172         LD      DE,GENDCB       ;Config/sys FCB
2574 E5       01173 DUMP1   PUSH    HL
2575 C5       01174         PUSH    BC              ;Save block length
2576 60       01175         LD      H,B             ;Length of this block
2577 69       01176         LD      L,C             ;  to HL
2578 01FE00   01177         LD      BC,254          ;Write block in groups
257B AF       01178         XOR     A               ;Of 254 bytes max
257C ED42     01179         SBC     HL,BC           ;Sub blk len fm dump len
257E 3006     01180         JR      NC,DUMP2        ;Go if write len > 254
2580 C1       01181         POP     BC              ;Recover block len
2581 210000   01182         LD      HL,0            ;Show block written
2584 1801     01183         JR      DUMP3
2586 F1       01184 DUMP2   POP     AF              ;Remove old len from stack
2587 E3       01185 DUMP3   EX      (SP),HL         ;Xchg len w/address
2588 41       01186         LD      B,C
2589 3E01     01187         LD      A,1             ;Start of block
258B CD2726   01188         CALL    PUTOUT
258E 78       01189         LD      A,B
258F C602     01190         ADD     A,2             ;Add for address
2591 CD2726   01191         CALL    PUTOUT          ;Write block length
2594 7D       01192         LD      A,L
2595 CD2726   01193         CALL    PUTOUT          ;Write lo order address
2598 7C       01194         LD      A,H
2599 CD2726   01195         CALL    PUTOUT          ;Write hi order address
259C 7E       01196 DUMP4   LD      A,(HL)
259D 23       01197         INC     HL
259E CD2726   01198         CALL    PUTOUT          ;Write the block
25A1 10F9     01199         DJNZ    DUMP4
25A3 C1       01200         POP     BC              ;Get remaining length
25A4 78       01201         LD      A,B
25A5 B1       01202         OR      C
25A6 20CC     01203         JR      NZ,DUMP1        ;Loop if block not done
25A8 C9       01204 C9FLD   RET                     ;  else go back
              01205 ;
              01206 ;       Routine to write an offset block
              01207 ;
25A9 C3       01208 JPINST  DB      0C3H            ;JP instruction
25AA E5       01209 WRBLCK  PUSH    HL              ;Save real load address
25AB 62       01210         LD      H,D             ;HL = offset address
25AC 6B       01211         LD      L,E
25AD 112F26   01212         LD      DE,GENDCB       ;Config/sys FCB
25B0 3E01     01213         LD      A,1             ;Start of block
25B2 CD2726   01214         CALL    PUTOUT
25B5 78       01215         LD      A,B
25B6 C602     01216         ADD     A,2             ;Adj for address
25B8 CD2726   01217         CALL    PUTOUT          ;Write block length
25BB 7D       01218         LD      A,L
25BC CD2726   01219         CALL    PUTOUT          ;Write lo order load
25BF 7C       01220         LD      A,H
25C0 CD2726   01221         CALL    PUTOUT          ;Write hi order load
25C3 E1       01222         POP     HL              ;Recover real address
25C4 7E       01223 WRBLK1  LD      A,(HL)          ;  and p/u data from there
25C5 23       01224         INC     HL
25C6 CD2726   01225         CALL    PUTOUT          ;Write the block
25C9 10F9     01226         DJNZ    WRBLK1
25CB C9       01227         RET
              01228 ;
              01229 ;       Perform SYSGEN OFF
              01230 ;
25CC 21001D   01231 CFGOFF  LD      HL,SBUFF$       ;Set disk I/O buffer
              01232 ;
              01233         IF      @MOD2
              01234 ;
              01235         LD      A,(DRIVE+1)     ;Get drive
              01236         LD      C,A             ;Pass to C
              01237         @@GTDCT                 ;Fetch DCT
              01238         LD      D,(IY+9)        ;Dir cylinder
              01239 ;
              01240         LD      A,(IY+3)        ;Get dct data
              01241         AND     28H             ;Bit 5/3
              01242         CP      20H             ;8" floppy?
              01243         JR      NZ,SETSYS2      ;Go if not
              01244         LD      A,(IY+4)        ;Get data
              01245         AND     50H             ;Bit 6/4
              01246         CP      40H             ;DD not alien?
              01247         JR      NZ,SETSYS2      ;Go if not
              01248 ;
              01249         LD      E,0             ;GAT table
              01250         @@RDSEC                 ;Read sector
              01251         CP      6               ;Directory read?
              01252         JP      NZ,IOERR        ;Go if not
              01253         LD      A,(SBUFF$+0CDH) ;Get gat data byte
              01254         BIT     7,A             ;System disk?
              01255 SETSYS2 LD      D,0             ;Cyl 0 if not
              01256         JR      NZ,$+3          ;Go if not
              01257         INC     D               ;Else on cyl 1
              01258         LD      E,2             ;Sysinfo sector
              01259 ;
              01260         ENDIF
              01261 ;
              01262         IF      @MOD4
25CF 110200   01263         LD      DE,0<8+2        ;Trk 0, sect 2 (SIS)
              01264         ENDIF
              01265 ;
25D2 3A5D24   01266         LD      A,(DRIVE+1)     ;P/u drive number
25D5 4F       01267         LD      C,A             ;  & note
25D6          01268         @@RDSEC                 ;  that no config is
25D6+3E31     01269         LD      A,49
25D8+EF       01270         RST     40
25D9 C22624   01271         JP      NZ,IOERR        ;  on the disk
25DC 3EC9     01272         LD      A,0C9H
25DE 32011D   01273         LD      (SBUFF$+1),A    ;A X'C9' indicates
25E1          01274         @@WRSEC                 ;  no config
25E1+3E35     01275         LD      A,53
25E3+EF       01276         RST     40
25E4 C22624   01277         JP      NZ,IOERR        ;Quit if write error
              01278 ;
              01279 ;       Now that none is shown, kill the CONFIG/SYS
              01280 ;
25E7 112F26   01281         LD      DE,GENDCB       ;Pt to FCB
25EA 0600     01282         LD      B,0
25EC          01283         @@OPEN                  ;Try to open the config
25EC+3E3B     01284         LD      A,59
25EE+EF       01285         RST     40
25EF C23924   01286         JP      NZ,NOTFND       ;Jump if not there
25F2          01287         @@REMOV                 ;Kill the config/sys
25F2+3E39     01288         LD      A,57
25F4+EF       01289         RST     40
25F5 C22624   01290         JP      NZ,IOERR        ;Quit if can't be killed
25F8          01291         @@LOGOT CFGDEL$         ;"config deleted..
              01292         IFEQ    01H,1
25F8+218A26   01293         LD      HL,CFGDEL$
              01294         ENDIF
25FB+3E0C     01295         LD      A,12
25FD+EF       01296         RST     40
25FE C9       01297         RET                     ;Done - return
              01298 ;
              01299 ;       Parameter parsing of yes/no
              01300 ;
25FF 010000   01301 NPARM   LD      BC,0            ;P/u "no" parm entry
2602 78       01302         LD      A,B
2603 B1       01303         OR      C               ;If NO, make Z
2604 EEFF     01304         XOR     0FFH
2606 C9       01305         RET
2607 0000     01306 YPARM   DW      0
              01307 ;
              01308 ;       Any devices routed to files?
              01309 ;
2609 114B49   01310 CKRTES  LD      DE,'IK'         ;Point to begin of area
260C          01311         @@GTDCB
260C+3E52     01312         LD      A,82
260E+EF       01313         RST     40
260F E5       01314 CKRT0   PUSH    HL              ;Save pointer
2610 CB66     01315 CKRT1   BIT     4,(HL)          ;Routed device?
2612 280B     01316         JR      Z,CKRT2         ;Jump if not
2614 2C       01317         INC     L               ;Bypass TYPE code
2615 7E       01318         LD      A,(HL)          ;P/u route vector
2616 2C       01319         INC     L               ;  lo-order
2617 66       01320         LD      H,(HL)          ;P/u vector hi-order
2618 6F       01321         LD      L,A
2619 CB7E     01322         BIT     7,(HL)          ;Routed to a file?
261B 28F3     01323         JR      Z,CKRT1         ;Ck further route if not
261D E1       01324         POP     HL              ;  else exit with NZ
261E C9       01325         RET
              01326 ;
              01327 ;       Point to next device
              01328 ;
261F E1       01329 CKRT2   POP     HL              ;Recover DCB pointer
2620 7D       01330         LD      A,L             ;Advance to next DCB area
2621 C608     01331         ADD     A,8             ;Loop through all
2623 6F       01332         LD      L,A             ;  devices while checking
2624 20E9     01333         JR      NZ,CKRT0        ;Loop until table end
2626 C9       01334         RET
              01335 ;
2627 4F       01336 PUTOUT  LD      C,A             ;Byte into C
2628          01337         @@PUT                   ;Do the put
2628+3E04     01338         LD      A,4
262A+EF       01339         RST     40
262B C8       01340         RET     Z               ;Back if good
262C C32624   01341         JP      IOERR           ;  else abort
              01342 ;
262F 43       01343 GENDCB  DB      'CONFIG/SYS.CCC:0',0
     4F 4E 46 49 47 2F 53 59
     53 2E 43 43 43 3A 30 00
263E          01344 CFGSPEC EQU     $-2
2640          01345         DS      32-$+GENDCB
264F 43       01346 CFGNAM$ DB      'CONFIG'
     4F 4E 46 49 47 
2655 55       01347 CFGBLT  DB      'User configuration built',CR
     73 65 72 20 63 6F 6E 66
     69 67 75 72 61 74 69 6F
     6E 20 62 75 69 6C 74 0D
266E 41       01348 ATRBIT  DB      'Attrib CONFIG/SYS.CCC:d (I)',CR
     74 74 72 69 62 20 43 4F
     4E 46 49 47 2F 53 59 53
     2E 43 43 43 3A 64 20 28
     49 29 0D 
2684          01349 ATRSPEC EQU     $-6
268A 55       01350 CFGDEL$ DB      'User configuration deleted',CR
     73 65 72 20 63 6F 6E 66
     69 67 75 72 61 74 69 6F
     6E 20 64 65 6C 65 74 65
     64 0D 
26A5 4E       01351 NOTFND$ DB      'No user configuration found',CR
     6F 20 75 73 65 72 20 63
     6F 6E 66 69 67 75 72 61
     74 69 6F 6E 20 66 6F 75
     6E 64 0D 
26C1 57       01352 WARN$   DB      'Warning: Target drive contains no system',CR
     61 72 6E 69 6E 67 3A 20
     54 61 72 67 65 74 20 64
     72 69 76 65 20 63 6F 6E
     74 61 69 6E 73 20 6E 6F
     20 73 79 73 74 65 6D 0D
              01353         IF      @BLD631
26EA 53       01354 ISWP$   DB      'Specified drive is write protected',CR
     70 65 63 69 66 69 65 64
     20 64 72 69 76 65 20 69
     73 20 77 72 69 74 65 20
     70 72 6F 74 65 63 74 65
     64 0D 
              01355         ELSE
              01356 NOINDO$ DB      'Command invalid during  processing',CR
              01357         ENDIF
270D 2A       01358 NOCANDO$        DB      '** SYSGEN inhibited at this time **',CR
     2A 20 53 59 53 47 45 4E
     20 69 6E 68 69 62 69 74
     65 64 20 61 74 20 74 68
     69 73 20 74 69 6D 65 20
     2A 2A 0D 
2731 43       01359 NOSPL$  DB      'Can''t while SPOOL is active',CR
     61 6E 27 74 20 77 68 69
     6C 65 20 53 50 4F 4F 4C
     20 69 73 20 61 63 74 69
     76 65 0D 
274D 43       01360 NOMDSK$ DB      'Can''t while MEMDISK is active',CR
     61 6E 27 74 20 77 68 69
     6C 65 20 4D 45 4D 44 49
     53 4B 20 69 73 20 61 63
     74 69 76 65 0D 
276B 43       01361 NORTES$ DB      'Can''t while route-to-file is active',CR
     61 6E 27 74 20 77 68 69
     6C 65 20 72 6F 75 74 65
     2D 74 6F 2D 66 69 6C 65
     20 69 73 20 61 63 74 69
     76 65 0D 
              01362 ;
278F 80       01363 PRMTBL$ DB      80H,42H,'ON',0
     42 4F 4E 00 
2794 0726     01364         DW      YPARM
2796 43       01365         DB      43H,'OFF',0
     4F 46 46 00 
279B 0026     01366         DW      NPARM+1
279D 53       01367         DB      53H,'YES',0
     59 45 53 00 
27A2 0726     01368         DW      YPARM
27A4 52       01369         DB      52H,'NO',0
     4E 4F 00 
27A8 0026     01370         DW      NPARM+1
27AA 95       01371         DB      95H,'DRIVE',0
     44 52 49 56 45 00 
27B1 5D24     01372         DW      DRIVE+1
27B3 00       01373         NOP
              01374 ;
              01375 ;       Table of regions to sysgen
              01376 ;
27B4 0200     01377 ADRTBL$ DW      2,HIGH$         ;Save HIGH$
     0E04 
27B8 0200     01378         DW      2,LOW$          ;Lowest user address
     1E00 
27BC 0100     01379         DW      1,TIMSL$        ;Time slice
     2B00 
27C0 FA00     01380         DW      250,DVRHI$      ;Save primary DCBs
     0602 
27C4 0300     01381         DW      3,EXTDBG$       ;Ext DEBUG vector & DBGHK
     A419 
27C8 3200     01382         DW      50,INTIM$       ;Table & TCBs
     3C00 
27CC 2200     01383         DW      34,FLGTAB$      ;Flag table & assorted
     6A00 
27D0 0200     01384         DW      2,75*2+SVCTAB$  ;Save WRITE vector
     9601 
27D4 0300     01385         DW      3,HKRES$        ;Sys overlay hook
     6C1A 
27D8 0200     01386         DW      2,KIDATA$+2
     FE08 
27DC 0100     01387         DW      1,DODATA$
     940B 
27E0 0200     01388         DW      2,DODATA$+3
     970B 
27E4 1000     01389         DW      16,240+SVCTAB$  ;SVCs 120 - 127
     F001 
27E8 1000     01390         DW      16,@RST08       ;RST zones 8 and 10
     0800 
27EC 0100     01391         DW      1,HERTZ$        ;Hertz rate for timer
     5007 
              01392         IF      @BLD631
27F0 0100     01393         DW      1,@PRTIMO       ;<631>Printer time-out patch addr
     290E 
              01394         ENDIF
              01395 ;
              01396         IF      @MOD2
              01397         DW      3,$CRSCHAR      ;Cursor char + column siz
              01398         ENDIF
              01399         IF      @MOD4
27F4 0000     01400         DW      0,0
     0000 
              01401         ENDIF
              01402 ;
27F8 0000     01403         DW      0,0
     0000 
27FC 0000     01404         DW      0,0
     0000 
2800 0000     01405         DW      0,0
     0000 
2804 0000     01406         DW      0,0
     0000 
2808 0000     01407         DW      0,0
     0000 
280C 0000     01408         DW      0,0
     0000 
2810 0000     01409         DW      0,0
     0000 
2814 0000     01410         DW      0               ;End of table
2816 00       01411         DC      20,0            ;Patch space
     00 00 00 00 00 00 00 00
     00 00 00 00 00 00 00 00
     00 00 00 
              01412 ;
2900          01413         ORG     $<-8+1<+8
2900          01414 GENBUF  EQU     $
              01415 ;
2400          01416         END     SYSGEN
2400 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!