LS-DOS 6.3.1 - CONV Utility 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 21:20:56 CONV - LS-DOS 6.2            Page 00001 

              00001 ;CONV/ASM - Convert TRSDOS 1.2, 1.3 Disks
              00003 ;
001C          00004 HOME    EQU     1CH
001F          00005 CLR     EQU     1FH
0003          00006 ETX     EQU     03H
000D          00007 CR      EQU     0DH
000A          00008 LF      EQU     10
              00009 ;
0040          00010 FLAG    EQU     01000000B
0010          00011 ABB     EQU     00010000B
              00012 ;
0000          00013 *GET    SVCMAC:3                ;SVC Macro equivalents
              00014 ;SVCMAC/ASM - LS-DOS Version VI
              00015 *LIST   OFF
              00407 *LIST   ON
0000          00409 *GET    COPYCOM:3               ;Copyright message
              00410 ; COPYCOM - File for Copyright COMment block
              00411 ;
0000          00412 *GET BUILDVER/ASM:3
              00413 ;
              00414 ;       Buildver/asm is a bit of a kludge since not all utilities can load
              00415 ;       equates from LDOS60 and still compile.  LOWCORE and everybody else
              00416 ;       relies on this setting, and it eventually ends up in LDOS60/EQU
              00417 ;       for programs that can use that.
              00418 ;
FFFF          00419 @BLD631         EQU     -1      ;<631>Build 631 distribution (LEVEL 1B)
              00420 ;       These switches activate patches made since the 1B release.
              00421 ;       It is important that all earlier patches be enabled when a higher
              00422 ;       patch is enabled.
              00423 ;       Patches C thru F were published in TMQ IV.iv, page 32 (NOTE: the
              00424 ;       patch addresses listed for SPOOL in SPOOL1/FIX are 19H high.)
FFFF          00425 @BLD631C        EQU     -1      ;<631>Apply 1C patches (SETKI)
FFFF          00426 @BLD631D        EQU     -1      ;<631>Apply 1D patches (DIR)
FFFF          00427 @BLD631E        EQU     -1      ;<631>Apply 1E patches (DIR & MEMDISK/DCT)
FFFF          00428 @BLD631F        EQU     -1      ;<631>Apply 1F patches (SPOOL)
              00429 ;       Patches G and H were published in TMQ V.i, pages 10 and 18/19.
FFFF          00430 @BLD631G        EQU     -1      ;<631>Apply 1G patches (//KEYIN,DIR,DO *)
FFFF          00431 @BLD631H        EQU     -1      ;<631>Apply 1H patches (MEMORY)
              00432 ;
              00433 ;End of BUILDVER/ASM
              00434         IF      @BLD631
              00436         ELSE
              00437         COM     '<*(C) 1982,3,4,6 by LSI*>'
              00438         ENDIF
              00439 ;
2600          00440         ORG     2600H
              00441 ;
              00442 BEGIN
              00443         IF      @BLD631
2600 ED734226 00444         LD      (STACK),SP      ;<631>Save entry stack
2604          00445         @@CKBRKC                ;<631>Check for break
2604+3E6A     00446         LD      A,106
2606+EF       00447         RST     40
2607 203C     00448         JR      NZ,$ABORT       ;<631>abort
              00449         ELSE
              00450         @@CKBRKC
              00451         JR      Z,BEGINA        ;Continue if no break
              00452         LD      HL,-1
              00453         RET                     ;  else abort
              00454 ;
              00455 BEGINA
              00456         LD      (STACK),SP      ;Save entry stack
              00457         ENDIF
2609 E5       00458         PUSH    HL              ;Save ptr to CMD buffer
260A          00459         @@DSPLY HELLO$          ;Display the signon
              00460         IFEQ    01H,1
260A+21A52A   00461         LD      HL,HELLO$
              00462         ENDIF
260D+3E0A     00463         LD      A,10
260F+EF       00464         RST     40
2610 210000   00465         LD      HL,0            ;Set up to get HIGH$
2613 45       00466         LD      B,L
2614          00467         @@FLAGS                 ;IY => flag table base
2614+3E65     00468         LD      A,101
2616+EF       00469         RST     40
2617 FDCB024E 00470         BIT     1,(IY+'C'-'A')  ;OK if not CMDR
261B 2801     00471         JR      Z,NOTCMDR       ;Use LOW$ otherwise
261D 04       00472         INC     B
261E          00473 NOTCMDR @@HIGH$                 ;P/u HIGH$/LOW$
261E+3E64     00474         LD      A,100
2620+EF       00475         RST     40
2621 22B928   00476         LD      (MYHIGH),HL     ;Store away
2624 FDE5     00477         PUSH    IY              ;Trans to HL
2626 D1       00478         POP     DE
2627 210A00   00479         LD      HL,'K'-'A'      ;Offset to KFLAG$
262A 19       00480         ADD     HL,DE           ;HL=>KFLAG$
262B 222227   00481         LD      (KFLG),HL       ;Store pointer
262E CB86     00482         RES     0,(HL)          ;Kick break bit off
2630 211200   00483         LD      HL,'S'-'A'      ;SFLAG$ offset
2633 19       00484         ADD     HL,DE
2634 22CF27   00485         LD      (SFLG),HL       ;Store away
2637 E1       00486         POP     HL              ;Restore cmd pointer
2638 CD5326   00487         CALL    PGRM            ;  and continue
              00488 ;
              00489 ;       Exit routines
              00490 ;
263B 210000   00491 $EXIT   LD      HL,0            ;Init to no error
263E          00492 $QUIT   @@CKBRKC                ;Clear out break bit
263E+3E6A     00493         LD      A,106
2640+EF       00494         RST     40
2641 310000   00495         LD      SP,$-$          ;P/u original stack
2642          00496 STACK   EQU     $-2
2644 C9       00497         RET
              00498 ;
2645 21FFFF   00499 $ABORT  LD      HL,-1           ;Set abort code
2648 18F4     00500         JR      $QUIT           ;  and quit
              00501 ;
              00502         IF      @BLD631
264A 3E0D     00503 $CR     LD      A,CR            ;<631>
              00504         ENDIF
264C C5       00505 $DSP    PUSH    BC              ;Display a character,
264D 4F       00506         LD      C,A             ;  saving BC
264E          00507         @@DSP
264E+3E02     00508         LD      A,2
2650+EF       00509         RST     40
2651 C1       00510         POP     BC
2652 C9       00511         RET
              00512 ;
              00513 ;       Pick up drive numbers and partial filespec
              00514 ;
              00515 PGRM:
2653 7E       00516         LD      A,(HL)          ;Check for NOT filespec
2654 FE2D     00517         CP      '-'             ;  char used
2656 2006     00518         JR      NZ,MVNAM1       ;Go if not NOT
2658 3EFF     00519         LD      A,0FFH          ;TRUE value
265A 32992A   00520         LD      (NOTPRM),A      ;Set if specified
265D 23       00521         INC     HL
265E 119A2A   00522 MVNAM1  LD      DE,PATTRN       ;Point to possible partspec
2661 0608     00523         LD      B,8             ;Max 8 chars in name
2663 CDA929   00524         CALL    SKIPSP          ;Skip spaces
2666 CDB829   00525         CALL    MOVELT          ;Move letters/digits/$
2669 CDB029   00526         CALL    SKIPLT          ;Skip letters/digits/$
266C 7E       00527         LD      A,(HL)          ;Check for extension
266D FE2F     00528         CP      '/'
266F 200C     00529         JR      NZ,NOEXT        ;Go if none
2671 23       00530         INC     HL
2672 11A22A   00531         LD      DE,PATEXT       ;Point to ext field
2675 0603     00532         LD      B,3             ;Max 3 chars in ext
2677 CDB829   00533         CALL    MOVELT          ;Move letters/digits/$
267A CDB029   00534         CALL    SKIPLT          ;Skip letters/digits/$
267D CD9A29   00535 NOEXT   CALL    GETDRV          ;Get source drive #
2680 32232C   00536         LD      (SDRIVE),A      ;Store drive #
2683 A7       00537         AND     A               ;Be sure not drive 0
2684 11532B   00538         LD      DE,NOT0         ;Error msg
2687 EB       00539         EX      DE,HL
2688 CA3329   00540         JP      Z,PERR1         ;Param error source is 0
268B EB       00541         EX      DE,HL           ;Restore cmd line ptr
268C CDA929   00542         CALL    SKIPSP          ;Skip spaces
268F CD9429   00543         CALL    GETDRV2         ;Get destination drive
2692 32242C   00544         LD      (DDRIVE),A      ;0FFH if no dest drv
2695 CDA929   00545         CALL    SKIPSP          ;Move to '('
              00546 ;
              00547 ;       Scan parameters
              00548 ;
2698 11642A   00549         LD      DE,PRMTBL$      ;Check parameters entered
269B          00550         @@PARAM
269B+3E11     00551         LD      A,17
269D+EF       00552         RST     40
269E C22F29   00553         JP      NZ,PRMERR       ;Quit on parm error
26A1 210000   00554 DPARM   LD      HL,$-$          ;DIR only?
26A4 7C       00555         LD      A,H
26A5 B5       00556         OR      L
26A6 2805     00557         JR      Z,SPARM         ;Go if not
26A8 3EFF     00558         LD      A,0FFH          ;Set flag at DDRIVE
26AA 32242C   00559         LD      (DDRIVE),A      ;If dest is ff, read DIR
26AD 210000   00560 SPARM   LD      HL,$-$          ;Check if no parms S,I,V
26B0 110000   00561 VPARM   LD      DE,$-$
26B3 010000   00562 IPARM   LD      BC,$-$
26B6 7D       00563         LD      A,L
26B7 B3       00564         OR      E
26B8 B1       00565         OR      C
26B9 323927   00566         LD      (SIV+1),A       ;Save S!I!V
26BC 21FFFF   00567 QPARM   LD      HL,0FFFFH       ;P/u Q,N,O parms
26BF 110000   00568 NPARM   LD      DE,0
26C2 010000   00569 OPARM   LD      BC,0
26C5 7B       00570         LD      A,E             ;Form N!O
26C6 B1       00571         OR      C
26C7 32E027   00572         LD      (NORO+1),A      ;Save that
              00573 ;
              00574 ;       Save old DCT
              00575 ;
26CA 3A232C   00576         LD      A,(SDRIVE)      ;Pick up source drive #
26CD 4F       00577         LD      C,A             ;Move to C reg
26CE 3A242C   00578         LD      A,(DDRIVE)      ;Be sure not single drive
26D1 B9       00579         CP      C
26D2 21282B   00580         LD      HL,NOTONE       ;=>error msg
26D5 CA3329   00581         JP      Z,PERR1         ;Go if same
26D8          00582         @@GTDCT                 ;Point to DCT
26D8+3E51     00583         LD      A,81
26DA+EF       00584         RST     40
26DB C5       00585         PUSH    BC              ;Save drive #
26DC FDE5     00586         PUSH    IY              ;Move DCT to HL reg
26DE E1       00587         POP     HL
26DF 112C2C   00588         LD      DE,SAVDCT       ;Point to save area
26E2 010A00   00589         LD      BC,10
26E5 EDB0     00590         LDIR                    ;Move it
26E7 C1       00591         POP     BC
              00592 ;
              00593 ;       Find directory track
              00594 ;
26E8 110100   00595         LD      DE,0001         ;Track 0, sector 1
26EB 21002D   00596         LD      HL,DBUFF        ;Buffer for sector
26EE          00597         @@RDSEC
26EE+3E31     00598         LD      A,49
26F0+EF       00599         RST     40
26F1 2808     00600         JR      Z,OK0           ;Go if no error
26F3 FE06     00601         CP      6               ;Was it DAM error?
26F5 C21429   00602         JP      NZ,IOERR        ;Go if some other
26F8 CD452A   00603         CALL    CKEARLY         ;Can we do this type?
26FB 23       00604 OK0     INC     HL              ;Point to dir cyl #
26FC 56       00605         LD      D,(HL)          ;Get it
26FD 24       00606         INC     H               ;Point to TRSDOS
26FE 2B       00607         DEC     HL              ;  version number
26FF 2B       00608         DEC     HL
2700 2B       00609         DEC     HL
2701 7E       00610         LD      A,(HL)          ;Pick it up
2702 328328   00611         LD      (TRSDOS+1),A    ;Save for later
              00612 ;
              00613 ;       Read directory records into memory
              00614 ;
2705 1E03     00615         LD      E,3             ;Skip GAT and HIT
2707 0610     00616         LD      B,16            ;Read 16 sectors
2709 21002D   00617         LD      HL,DBUFF
270C FD360712 00618 DREAD   LD      (IY+7),18       ;Chg # sectors/trk for
2710          00619         @@RDSEC                 ;  TRSDOS & Read a sector
2710+3E31     00620         LD      A,49
2712+EF       00621         RST     40
2713 2805     00622         JR      Z,OK1           ;Go if no error
2715 FE06     00623         CP      6               ;Ignore record type
2717 C21429   00624         JP      NZ,IOERR        ;Go if error
271A 24       00625 OK1     INC     H               ;Bump buffer pointer
271B 1C       00626         INC     E               ;Bump sector number
271C 10EE     00627         DJNZ    DREAD           ;Loop till done
              00628 ;
              00629 ;       Loop through all entries
              00630 ;
271E 21002D   00631         LD      HL,DBUFF        ;Point to first entry
2721          00632 ELOOP   EQU     $
2721 3A0000   00633         LD      A,($-$)         ;Check system break bit
2722          00634 KFLG    EQU     $-2             ;Address of KFLAG
2724 CB47     00635         BIT     0,A
2726 C24526   00636         JP      NZ,$ABORT       ;Abort if set
2729 46       00637         LD      B,(HL)          ;P/U attributes
272A E5       00638         PUSH    HL
272B DDE1     00639         POP     IX
272D E5       00640         PUSH    HL
272E CB60     00641         BIT     4,B             ;Alive?
2730 CAF128   00642         JP      Z,SKIPIT        ;Skip it if dead
2733 CB78     00643         BIT     7,B             ;FXDE?
2735 C2F128   00644         JP      NZ,SKIPIT       ;Skip it if so
              00645 ;
              00646 ;       Check file's attributes
              00647 ;
2738 3E00     00648 SIV     LD      A,$-$           ;S, I, or V given?
273A A7       00649         AND     A
273B 2821     00650         JR      Z,NOSIV         ;Go if none given
273D CB70     00651         BIT     6,B             ;SYS file?
273F 2809     00652         JR      Z,NOTSYS        ;Go if not
2741 3AAE26   00653         LD      A,(SPARM+1)     ;S parm given?
2744 A7       00654         AND     A
2745 CAF128   00655         JP      Z,SKIPIT        ;Skip file if not
2748 1814     00656         JR      NOSIV           ;  else possible match
274A CB58     00657 NOTSYS  BIT     3,B             ;Visible or invisible?
274C 2009     00658         JR      NZ,INV          ;Go if inv
274E 3AB126   00659         LD      A,(VPARM+1)     ;V parm given?
2751 A7       00660         AND     A
2752 CAF128   00661         JP      Z,SKIPIT        ;Skip file if not
2755 1807     00662         JR      NOSIV           ;  else possible match
2757 3AB426   00663 INV     LD      A,(IPARM+1)     ;I parm given?
275A A7       00664         AND     A
275B CAF128   00665         JP      Z,SKIPIT        ;Skip file if not
              00666 ;
              00667 ;       Check if name matches wildcard
              00668 ;
275E 110500   00669 NOSIV   LD      DE,5            ;Offset to name field
2761 19       00670         ADD     HL,DE
2762 E5       00671         PUSH    HL              ;Compare with pattern
2763 119A2A   00672         LD      DE,PATTRN       ;  of user partspec
2766 060B     00673         LD      B,11
2768 1A       00674 CPLOOP  LD      A,(DE)          ;P/U pattern byte
2769 13       00675         INC     DE
276A FE24     00676         CP      '$'             ;Matchall?
276C 2803     00677         JR      Z,MATCH
276E BE       00678         CP      (HL)            ;Match?
276F 2003     00679         JR      NZ,NMATCH       ;Go if not
2771 23       00680 MATCH   INC     HL
2772 10F4     00681         DJNZ    CPLOOP
2774 E1       00682 NMATCH  POP     HL              ;Z if match, NZ if not
2775 CDE529   00683         CALL    NOTCHK          ;Reverse flag if NOT entered
2778 C2F128   00684         JP      NZ,SKIPIT       ;Skip file if no match
              00685 ;
277B 11E32B   00686         LD      DE,FCB          ;Point to FCB
277E 0608     00687         LD      B,8
2780 7E       00688 MVNAME  LD      A,(HL)          ;Move name
2781 FE20     00689         CP      ' '             ;Space?
2783 2805     00690         JR      Z,GOTNAM        ;Go if hit one
2785 23       00691         INC     HL
2786 12       00692         LD      (DE),A          ;Put to FCB
2787 13       00693         INC     DE
2788 10F6     00694         DJNZ    MVNAME
278A 48       00695 GOTNAM  LD      C,B             ;Offset to ext field
278B 0600     00696         LD      B,0
278D 09       00697         ADD     HL,BC
278E 7E       00698         LD      A,(HL)          ;No extension?
278F FE20     00699         CP      ' '
2791 2810     00700         JR      Z,GOTEXT        ;Go if so
2793 3E2F     00701         LD      A,'/'           ;Put in slash
2795 12       00702         LD      (DE),A
2796 13       00703         INC     DE
2797 0603     00704         LD      B,3
2799 7E       00705 EXLOOP  LD      A,(HL)          ;Move extension
279A 23       00706         INC     HL
279B FE20     00707         CP      ' '             ;Finished?
279D 2804     00708         JR      Z,GOTEXT
279F 12       00709         LD      (DE),A
27A0 13       00710         INC     DE
27A1 10F6     00711         DJNZ    EXLOOP          ;Loop till done
              00712 ;
              00713         IF      @BLD631
27A3 D5       00714 GOTEXT: PUSH    DE              ;<631>Save current spot in FCB
27A4 21C32B   00715         LD      HL,FNAME        ;<631>Move name to buffer
27A7 CD572A   00716         CALL    CPYFCB          ;<631>Do 32 byte LDIR
              00717         ELSE
              00718 GOTEXT  LD      A,ETX           ;Put ETX at end for dsply
              00719         LD      (DE),A
              00720         PUSH    DE              ;Save current spot in FCB
              00721         LD      HL,FCB          ;Move name to buffer
              00722         LD      DE,FNAME        ;  for printing
              00723         LD      BC,32
              00724         LDIR
              00725         ENDIF
27AA D1       00726         POP     DE              ;Get back where we were
              00727 ;
              00728 ;Print filenames if no destination drive (DDRIVE=0FFH)
              00729 ;
27AB 3A242C   00730         LD      A,(DDRIVE)      ;Check for just printing DIR
27AE 3C       00731         INC     A               ;Set Z if FF
27AF 2006     00732         JR      NZ,MOVING       ;Go if not FF
27B1 CDF629   00733         CALL    SHOW            ;Print entry
27B4 C3F128   00734         JP      SKIPIT          ;  and go on to next
              00735 ;
              00736 ;       Check if file exists on destination disk
              00737 ;
27B7 3E3A     00738 MOVING  LD      A,':'           ;Now put the drive separator
27B9 12       00739         LD      (DE),A          ;  in the FCB
27BA 13       00740         INC     DE
27BB 3A242C   00741         LD      A,(DDRIVE)      ;Put in drive spec
27BE F630     00742         OR      '0'             ;Change number to ASCII
27C0 12       00743         LD      (DE),A
27C1 13       00744         INC     DE
              00745         IF      @BLD631
27C2 21032C   00746         LD      HL,FCB2         ;<631>Copy into 2nd FCB
27C5 E5       00747         PUSH    HL              ;<631>
27C6 CD572A   00748         CALL    CPYFCB          ;<631>
27C9 D1       00749         POP     DE              ;<631>
27CA 21003D   00750         LD      HL,TBUFF        ;Point to transfer buffer
              00751         ELSE
              00752         LD      A,ETX           ;Put in ETX to end
              00753         LD      (DE),A
              00754         LD      HL,FCB          ;Copy into 2nd FCB
              00755         LD      DE,FCB2
              00756         LD      BC,32
              00757         LDIR
              00758         LD      DE,FCB2         ;Point to start of FCB
              00759         LD      HL,TBUFF        ;Point to transfer buffer
              00760         LD      B,0             ;LRL=256
              00761         ENDIF
27CD E5       00762         PUSH    HL
27CE 210000   00763         LD      HL,$-$          ;HL => SFLAG
27CF          00764 SFLG    EQU     $-2
27D1 CBC6     00765         SET     0,(HL)          ;Set the open inhibit bit
27D3 E1       00766         POP     HL
27D4          00767         @@OPEN                  ;Do the open
27D4+3E3B     00768         LD      A,59
27D6+EF       00769         RST     40
27D7 47       00770         LD      B,A             ;Save return code
27D8 2805     00771         JR      Z,NORO          ;Go if opened okay
27DA FE18     00772         CP      18H             ;File not found?
27DC C21429   00773         JP      NZ,IOERR        ;  else an error
              00774 ;
              00775 ;       Check New and Old parms
              00776 ;
27DF 3E00     00777 NORO    LD      A,0             ;N or O specified?
27E1 A7       00778         AND     A
27E2 2815     00779         JR      Z,CHECKQ        ;Go if neither
27E4 3AC326   00780         LD      A,(OPARM+1)     ;O parm given?
27E7 A7       00781         AND     A
27E8 2804     00782         JR      Z,CKNEW         ;Go if not
27EA AF       00783         XOR     A
27EB B0       00784         OR      B               ;Did file exist?
27EC 280B     00785         JR      Z,CHECKQ        ;Go if so (ok)
27EE 3AC026   00786 CKNEW   LD      A,(NPARM+1)     ;N parm given?
27F1 A7       00787         AND     A
              00788         IF      @BLD631
27F2 2802     00789         JR      Z,TOSKIP1       ;<631>Skip file if not
              00790         ELSE
              00791         JP      Z,SKIPIT        ;Skip file if not
              00792         ENDIF
27F4 AF       00793         XOR     A
27F5 B0       00794         OR      B               ;Be sure it was new
              00795         IF      @BLD631
              00796 TOSKIP1:                        ;<631>
              00797         ENDIF
27F6 CAF128   00798         JP      Z,SKIPIT        ;Go if it wasn't
              00799 ;
              00800 ;       Ask question if Q parm was given
              00801 ;
27F9 3ABD26   00802 CHECKQ  LD      A,(QPARM+1)     ;Check Q parm
27FC A7       00803         AND     A
27FD 2011     00804         JR      NZ,QUERY        ;Query if so
27FF 21A42B   00805         LD      HL,CONVS        ;"Converting..."
2802          00806         @@DSPLY 
              00807         IFEQ    00H,1
              00808         LD      HL,
              00809         ENDIF
2802+3E0A     00810         LD      A,10
2804+EF       00811         RST     40
2805 21C32B   00812         LD      HL,FNAME        ;Filename
2808          00813         @@DSPLY 
              00814         IFEQ    00H,1
              00815         LD      HL,
              00816         ENDIF
2808+3E0A     00817         LD      A,10
280A+EF       00818         RST     40
              00819         IF      @BLD631
280B CD4A26   00820         CALL    $CR             ;<631>Display carriage return
              00821         ELSE
              00822         LD      A,CR            ;Carriage return
              00823         CALL    $DSP
              00824         ENDIF
280E 1841     00825         JR      TAKEIT1         ;Go & move it
              00826 ;
2810 21B62B   00827 QUERY   LD      HL,CONVQ        ;"Convert file
2813          00828         @@DSPLY                 ;Display it
              00829         IFEQ    00H,1
              00830         LD      HL,
              00831         ENDIF
2813+3E0A     00832         LD      A,10
2815+EF       00833         RST     40
2816 21A12B   00834         LD      HL,QMARK        ;"?"
2819          00835         @@DSPLY 
              00836         IFEQ    00H,1
              00837         LD      HL,
              00838         ENDIF
2819+3E0A     00839         LD      A,10
281B+EF       00840         RST     40
281C 21272C   00841         LD      HL,ABUFF        ;Get answer
281F 010003   00842         LD      BC,3<8          ;3 char max
2822          00843         @@KEYIN
2822+3E09     00844         LD      A,9
2824+EF       00845         RST     40
2825 DA4526   00846         JP      C,$ABORT        ;Abort if BREAK hit
2828 7E       00847         LD      A,(HL)          ;Check for 'Y'
2829 CBAF     00848         RES     5,A             ;Force upper case
282B FE59     00849         CP      'Y'
282D C2F128   00850         JP      NZ,SKIPIT       ;Skip it if not 'Y'
              00851 ;
              00852 ;       If file exists, query user
              00853 ;
2830 3A032C   00854         LD      A,(FCB2)        ;Was file opened ok?
2833 CB7F     00855         BIT     7,A             ;Z = not found
2835 281A     00856         JR      Z,TAKEIT1       ;Go if it does not exist
2837 21862B   00857         LD      HL,EXISTQ       ;"File exists, replace?
283A          00858         @@DSPLY                 ;Print question
              00859         IFEQ    00H,1
              00860         LD      HL,
              00861         ENDIF
283A+3E0A     00862         LD      A,10
283C+EF       00863         RST     40
283D 21272C   00864         LD      HL,ABUFF
2840 010003   00865         LD      BC,3<8
2843          00866         @@KEYIN                 ;Get answer
2843+3E09     00867         LD      A,9
2845+EF       00868         RST     40
2846 DA4526   00869         JP      C,$ABORT        ;Abort if break
2849 7E       00870         LD      A,(HL)          ;Check answer
284A CBAF     00871         RES     5,A             ;Force uppercase
284C FE59     00872         CP      'Y'
284E C2F128   00873         JP      NZ,SKIPIT       ;Skip if 'no'
              00874 ;
              00875 ;       Init file if it didn't exist
              00876 ;
2851 11032C   00877 TAKEIT1 LD      DE,FCB2
2854 1A       00878         LD      A,(DE)          ;Was file opened?
2855 CB7F     00879         BIT     7,A             ;Z = not opened
2857 2803     00880         JR      Z,$+5           ;Remove existing file
2859          00881         @@REMOV                 ;  for new LRL
2859+3E39     00882         LD      A,57
285B+EF       00883         RST     40
285C 11E32B   00884         LD      DE,FCB          ;Use other FCB now
285F 21003D   00885         LD      HL,TBUFF        ;Create file
2862 DD4604   00886         LD      B,(IX+4)        ;P/U Mod III LRL
2865          00887         @@INIT                  ;Create the file
2865+3E3A     00888         LD      A,58
2867+EF       00889         RST     40
              00890         IF      @BLD631
2868 203D     00891         JR      NZ,TOIOERR      ;<631>Go if error
              00892         ELSE
              00893         JP      NZ,IOERR        ;Go if error
              00894         ENDIF
286A D5       00895         PUSH    DE              ;Change LRL to 0 for copy
286B DDE3     00896         EX      (SP),IX         ;IX to FCB start
286D DDCB01BE 00897         RES     7,(IX+1)        ;Show full sector ops
2871 DD360900 00898         LD      (IX+9),0        ;Show LRL=0
2875 DDE3     00899         EX      (SP),IX         ;Switch back
2877 D1       00900         POP     DE
              00901 ;
              00902 ;       Initialize to read from source file
              00903 ;
2878 E1       00904 TAKEIT2 POP     HL              ;Point to dir entry
2879 E5       00905         PUSH    HL
287A 111400   00906         LD      DE,20           ;Point to ERN
287D 19       00907         ADD     HL,DE
287E 5E       00908         LD      E,(HL)          ;P/U ERN
287F 23       00909         INC     HL
2880 56       00910         LD      D,(HL)
2881 23       00911         INC     HL              ;Leave ptg to extents
2882 3E00     00912 TRSDOS  LD      A,0             ;1.3 or later?
2884 FE13     00913         CP      13H
2886 3807     00914         JR      C,EARLY         ;Go if earlier than 1.3
2888 DD7E03   00915         LD      A,(IX+3)        ;Pick up EOF offset
288B A7       00916         AND     A               ;Zero?
288C 2801     00917         JR      Z,EARLY         ;No adjustment if so
288E 13       00918         INC     DE              ;If nonzero, adjust ERN
288F 0600     00919 EARLY   LD      B,0             ;# sectors left in extent
2891 D5       00920         PUSH    DE              ;Save ERN
2892 D9       00921         EXX                     ;Switch to alternate regs
              00922 ;
              00923 ;       Preallocate file
              00924 ;
2893 C1       00925         POP     BC
2894 78       00926         LD      A,B             ;Empty file?
2895 B1       00927         OR      C
2896 281C     00928         JR      Z,READ          ;Go if so
2898 0B       00929         DEC     BC
2899 11E32B   00930         LD      DE,FCB          ;Point to FCB
289C          00931         @@POSN                  ;Position to last sector
289C+3E42     00932         LD      A,66
289E+EF       00933         RST     40
289F 2809     00934         JR      Z,OK3
28A1 FE1C     00935         CP      1CH             ;Ignore EOF errors
28A3 2805     00936         JR      Z,OK3
28A5 FE1D     00937         CP      1DH             ;  or past end errors
              00938         IF      @BLD631
              00939 TOIOERR:
              00940         ENDIF
28A7 C21429   00941         JP      NZ,IOERR        ;Quit on any others
28AA          00942 OK3     @@WRITE                 ;Write it
28AA+3E4B     00943         LD      A,75
28AC+EF       00944         RST     40
              00945         IF      @BLD631
28AD 20F8     00946         JR      NZ,TOIOERR      ;<631>Quit on write error
              00947         ELSE
              00948         JP      NZ,IOERR        ;Quit on write error
              00949         ENDIF
28AF          00950         @@REW                   ;Position to start
28AF+3E44     00951         LD      A,68
28B1+EF       00952         RST     40
              00953         IF      @BLD631
28B2 20F3     00954         JR      NZ,TOIOERR      ;<631>
              00955         ELSE
              00956         JP      NZ,IOERR
              00957         ENDIF
              00958 ;
              00959 ;       Read sectors
              00960 ;
              00961         IF      @BLD631
28B4 21003D   00962 READ    LD      HL,TBUFF        ;<631>Point to transfer buffer
28B7 45       00963         LD      B,L             ;<631>Count sectors read (L=0)
              00964         ELSE
              00965 READ    LD      B,0             ;Count sectors read
              00966         LD      HL,TBUFF        ;Point to transfer buffer
              00967         ENDIF
28B8 110000   00968         LD      DE,$-$
28B9          00969 MYHIGH  EQU     $-2             ;Stuff HIGH$ value
28BB 15       00970         DEC     D               ;256 bytes back
28BC CD3929   00971 GETONE  CALL    GETSEC          ;Get next sector
28BF 200B     00972         JR      NZ,WRITE        ;Go if EOF
28C1 04       00973         INC     B               ;Count sector
28C2 24       00974         INC     H               ;Point to next spot
28C3 CDDF29   00975         CALL    CPHLDE          ;Compare HL and DE
28C6 3E00     00976         LD      A,0             ;No error code
28C8 3002     00977         JR      NC,WRITE        ;Go if mem full
28CA 18F0     00978         JR      GETONE          ;  else loop for more
              00979 ;
              00980 ;       Write sectors to destination file
              00981 ;
28CC F5       00982 WRITE   PUSH    AF              ;Save completion type
28CD 11E32B   00983         LD      DE,FCB          ;Point to file fcb
28D0 21003D   00984         LD      HL,TBUFF        ;Point to transfer buffer
28D3 22E62B   00985 WRLOOP  LD      (FCB+3),HL      ;Point FCB to buffer
28D6 78       00986         LD      A,B             ;Zero to write?
28D7 A7       00987         AND     A
28D8 2808     00988         JR      Z,WRDUN         ;Go if so
28DA          00989         @@WRITE                 ;Write to file
28DA+3E4B     00990         LD      A,75
28DC+EF       00991         RST     40
              00992         IF      @BLD631
28DD 2010     00993         JR      NZ,TOIOER2      ;<631>Quit on write error
              00994         ELSE
              00995         JP      NZ,IOERR        ;Quit on write error
              00996         ENDIF
28DF 24       00997         INC     H
28E0 10F1     00998         DJNZ    WRLOOP          ;Loop till done
              00999 ;
              01000 ;       Were we at EOF?
              01001 ;
28E2 F1       01002 WRDUN   POP     AF              ;Restore completion type
28E3 A7       01003         AND     A               ;At end of file?
28E4 28CE     01004         JR      Z,READ          ;Go if not
              01005 ;
              01006 ;       Copy over EOF offset
              01007 ;
28E6 DD7E03   01008         LD      A,(IX+3)        ;P/U offset from dir
28E9 32EB2B   01009         LD      (FCB+8),A       ;Put into FCB
28EC          01010         @@CLOSE                 ;  and close the file
28EC+3E3C     01011         LD      A,60
28EE+EF       01012         RST     40
              01013         IF      @BLD631
28EF 2023     01014 TOIOER2:JR      NZ,IOERR        ;<631>Quit on close error
              01015         ELSE
              01016         JP      NZ,IOERR        ;Quit on close error
              01017         ENDIF
              01018 ;
              01019 ;       Increment to next entry and loop if not done
              01020 ;
28F1 E1       01021 SKIPIT  POP     HL
28F2 113000   01022         LD      DE,48           ;48 bytes per entry
28F5 19       01023         ADD     HL,DE
28F6 7D       01024         LD      A,L             ;End of sector?
28F7 FEF0     01025         CP      0F0H
28F9 2002     01026         JR      NZ,NOTEOS       ;Go if not
28FB 24       01027         INC     H
              01028         IF      @BLD631
28FC 6A       01029         LD      L,D             ;<631>D==0
              01030         ELSE
              01031         LD      L,0
              01032         ENDIF
28FD 11003D   01033 NOTEOS  LD      DE,TBUFF        ;Done?
2900 CDDF29   01034         CALL    CPHLDE          ;CP HL,DE
2903 DA2127   01035         JP      C,ELOOP         ;Loop back if not done
              01036 ;
              01037 ;       Finished
              01038 ;
              01039         IF      @BLD631
2906 CD4A26   01040         CALL    $CR             ;<631>Blank line
              01041         ELSE
              01042         LD      A,CR            ;Blank line
              01043         CALL    $DSP
              01044         ENDIF
2909 CD2329   01045         CALL    BYEBYE          ;Restore DCT
290C C33B26   01046         JP      $EXIT
              01047 ;
290F CD2329   01048 QUIT    CALL    BYEBYE          ;Restore DCT
              01049         IF      @BLD631
2912 1822     01050         JR      TOABORT         ;<631>
              01051         ELSE
              01052         JP      $ABORT
              01053         ENDIF
              01054 ;
              01055 ;       Error routines
              01056 ;
2914 CD2329   01057 IOERR   CALL    BYEBYE          ;Restore DCT
2917 6F       01058 IOERR1  LD      L,A             ;Entry from PRMERR
2918 2600     01059         LD      H,0
291A F6C0     01060         OR      0C0H            ;Abbrev, return
291C 4F       01061         LD      C,A             ;Error code to C
291D          01062         @@ERROR                 ;  for error display
291D+3E1A     01063         LD      A,26
291F+EF       01064         RST     40
2920 C33E26   01065         JP      $QUIT
              01066 ;
2923 FDE5     01067 BYEBYE  PUSH    IY              ;Move back DCT
2925 D1       01068         POP     DE
2926 212C2C   01069         LD      HL,SAVDCT       ;Point to save area
2929 010A00   01070         LD      BC,10
292C EDB0     01071         LDIR
292E C9       01072         RET
              01073 ;
292F 3E2C     01074 PRMERR  LD      A,44            ;Init "parameter error
2931 18E4     01075         JR      IOERR1
2933          01076 PERR1   @@LOGOT                 ;Display and log
              01077         IFEQ    00H,1
              01078         LD      HL,
              01079         ENDIF
2933+3E0C     01080         LD      A,12
2935+EF       01081         RST     40
              01082         IF      @BLD631
              01083 TOABORT:                        ;<631>
              01084         ENDIF
2936 C34526   01085         JP      $ABORT
              01086 ;
              01087 ;       Sector read routine
              01088 ;
2939 D9       01089 GETSEC  EXX                     ;P/U alt registers
293A 7A       01090         LD      A,D             ;Any records left?
293B B3       01091         OR      E
293C 2005     01092         JR      NZ,NOTEND       ;Go if so
293E D9       01093 BDEXT   EXX
293F 3E1C     01094         LD      A,1CH           ;EOF code
2941 A7       01095         AND     A               ;Set NZ condition
2942 C9       01096         RET
              01097 ;
2943 AF       01098 NOTEND  XOR     A               ;Check if used up ext
2944 B0       01099         OR      B
2945 2021     01100         JR      NZ,MORE         ;Go if not used up
2947 7E       01101         LD      A,(HL)          ;Check next trk#
2948 FEFF     01102         CP      0FFH            ;Non-allocated?
294A 28F2     01103         JR      Z,BDEXT         ;Then consider EOF
294C D5       01104         PUSH    DE              ;Save DE'
294D 56       01105         LD      D,(HL)          ;P/U track number
294E 23       01106         INC     HL
294F 46       01107         LD      B,(HL)          ;P/U other stuff
2950 23       01108         INC     HL
2951 78       01109         LD      A,B             ;Get starting gran
2952 07       01110         RLCA
2953 07       01111         RLCA                    ;Move to bits 0-2
2954 07       01112         RLCA
2955 E607     01113         AND     7               ;Mask off other garbage
2957 5F       01114         LD      E,A             ;Multiply by 3
2958 07       01115         RLCA
2959 83       01116         ADD     A,E
295A 3C       01117         INC     A               ;Offset from 0
295B 5F       01118         LD      E,A             ;  and move to E reg
295C ED53252C 01119         LD      (TRKSEC),DE     ;Save for later
2960 D1       01120         POP     DE              ;Restore DE'
2961 78       01121         LD      A,B             ;Get number of grans
2962 E61F     01122         AND     1FH
2964 47       01123         LD      B,A             ;Multiply by 3
2965 07       01124         RLCA
2966 80       01125         ADD     A,B
2967 47       01126         LD      B,A             ;And put in B reg
              01127 ;
              01128 ;       Read sector
              01129 ;
2968 05       01130 MORE    DEC     B               ;Count down # sec in ext
2969 1B       01131         DEC     DE              ;Count down # records
296A D9       01132         EXX                     ;Restore primary set
296B D5       01133         PUSH    DE              ;Save DE
296C C5       01134         PUSH    BC              ;Save BC
296D ED5B252C 01135         LD      DE,(TRKSEC)     ;P/U track and sector #
2971 3A232C   01136         LD      A,(SDRIVE)      ;P/U source drive
2974 4F       01137         LD      C,A
2975 FD360712 01138         LD      (IY+7),18       ;Reset sec/trk each time
2979          01139         @@RDSEC                 ;Read sector to (HL)
2979+3E31     01140         LD      A,49
297B+EF       01141         RST     40
297C 2805     01142         JR      Z,OK2           ;Go if no errors
297E FE06     01143         CP      6               ;  or address mark differs
2980 C21429   01144         JP      NZ,IOERR        ;Quit on any other
2983 1C       01145 OK2     INC     E               ;Step to next sector
2984 7B       01146         LD      A,E
2985 FE13     01147         CP      19D             ;End of track?
2987 2003     01148         JR      NZ,NOTEOT       ;Go if not
2989 1E01     01149         LD      E,1             ;Reset to sector 1
298B 14       01150         INC     D               ;Next track
298C ED53252C 01151 NOTEOT  LD      (TRKSEC),DE
2990 C1       01152         POP     BC
2991 D1       01153         POP     DE
2992 AF       01154         XOR     A
2993 C9       01155         RET
              01156 ;
              01157 ;       Parsing subroutines
              01158 ;
2994 7E       01159 GETDRV2 LD      A,(HL)
2995 FE3A     01160         CP      ':'
2997 3EFF     01161         LD      A,0FFH          ;'Not entered' value
2999 C0       01162         RET     NZ              ;If no second drive, give DIR
              01163 ;
299A 7E       01164 GETDRV  LD      A,(HL)          ;Parse drivespec
299B FE3A     01165         CP      ':'
299D 2090     01166         JR      NZ,PRMERR       ;Go if missing
299F 23       01167         INC     HL
29A0 7E       01168         LD      A,(HL)          ;P/U drivespec
              01169         IF      @BLD631
29A1 D630     01170         SUB     '0'             ;<631>
29A3 FE08     01171         CP      7+1             ;<631>Be sure it is a digit
29A5 3088     01172         JR      NC,PRMERR       ;<631>
29A7 23       01173         INC     HL              ;<631>Bump cmdline ptr
              01174         ELSE
              01175         CP      '0'             ;Be sure digit
              01176         JR      C,PRMERR
              01177         CP      '7'+1
              01178         JR      NC,PRMERR
              01179         INC     HL              ;Bump cmdline ptr
              01180         AND     7               ;Make drive # binary
              01181         ENDIF
29A8 C9       01182         RET
              01183 ;
29A9 7E       01184 SKIPSP  LD      A,(HL)          ;Skip spaces
29AA FE20     01185         CP      ' '
29AC C0       01186         RET     NZ
29AD 23       01187         INC     HL
29AE 18F9     01188         JR      SKIPSP
              01189 ;
29B0 7E       01190 SKIPLT  LD      A,(HL)          ;Skip letters/digits/$
29B1 CDC229   01191         CALL    CHKLET          ;Check letter/digit/$
29B4 C0       01192         RET     NZ
29B5 23       01193         INC     HL
29B6 18F8     01194         JR      SKIPLT
              01195 ;
29B8 7E       01196 MOVELT  LD      A,(HL)          ;Move letters/digits/$
29B9 CDC229   01197         CALL    CHKLET
29BC C0       01198         RET     NZ
29BD 23       01199         INC     HL              ;Inc from buffer
29BE 12       01200         LD      (DE),A          ;Store
29BF 13       01201         INC     DE              ;Inc to buffer
29C0 18F6     01202         JR      MOVELT
              01203 ;
29C2 CB7F     01204 CHKLET  BIT     7,A             ;Graphic?
29C4 C0       01205         RET     NZ
29C5 FE61     01206         CP      'a'             ;Lowercase?
29C7 3802     01207         JR      C,NOTLC         ;Go if not
29C9 CBAF     01208         RES     5,A             ;  else make upper case
29CB FE24     01209 NOTLC   CP      '$'             ;Dollar sign?
29CD C8       01210         RET     Z
29CE FE30     01211         CP      '0'             ;Digit?
29D0 D8       01212         RET     C               ;Return (NZ) if less
29D1 FE3A     01213         CP      '9'+1
29D3 3002     01214         JR      NC,NOTDIG       ;Go if not digit
29D5 BF       01215         CP      A               ;Mark as letter/digit/$
29D6 C9       01216         RET
29D7 FE41     01217 NOTDIG  CP      'A'             ;Letter?
29D9 D8       01218         RET     C               ;Return (NZ) if less
29DA FE5A     01219         CP      'Z'
29DC D0       01220         RET     NC              ;Z if =Z, NZ if >Z
29DD BF       01221         CP      A               ;Z if name
29FE 7E       01252 NMDSP   LD      A,(HL)          ;Get a character
29FF FE03     01253         CP      ETX             ;Are we done?
2A01 2807     01254         JR      Z,NMEND         ;Finish if so
2A03 CD4C26   01255         CALL    $DSP            ;Print this char
2A06 0C       01256         INC     C               ;Count it
2A07 23       01257         INC     HL              ;=>next char
2A08 18F4     01258         JR      NMDSP           ;Until ETX
              01259 ;
2A0A 210000   01260 NMEND   LD      HL,$-$          ;P/u line/char count
2A0B          01261 CCOUNT  EQU     $-2
2A0D 79       01262         LD      A,C             ;Count for this entry
2A0E 85       01263         ADD     A,L             ;Add to previous
2A0F 6F       01264         LD      L,A             ;Save posn
2A10 3E10     01265         LD      A,16            ;Spaces for entry
2A12 91       01266         SUB     C               ;Less used
2A13 47       01267         LD      B,A             ;Remaining to B
2A14 3E20     01268 SPLP    LD      A,' '           ;Pad remaining w/spaces
2A16 CD4C26   01269         CALL    $DSP
2A19 2C       01270         INC     L               ;Count it
2A1A 7D       01271         LD      A,L             ;Check char posn
2A1B FE4E     01272         CP      78              ;End of line?
2A1D 2809     01273         JR      Z,ELINE         ;Then print CR
2A1F 10F3     01274         DJNZ    SPLP            ;  else keep going
              01275 ;
2A21 220B2A   01276 ESHOW   LD      (CCOUNT),HL     ;Save line/char posn
2A24 C1       01277         POP     BC              ;Restore regs
2A25 D1       01278         POP     DE
2A26 E1       01279         POP     HL
2A27 C9       01280         RET                     ;Done w/entry
              01281 ;
              01282         IF      @BLD631
2A28 CD4A26   01283 ELINE:  CALL    $CR             ;<631>Hit end of line
              01284         ELSE
              01285 ELINE   LD      A,CR            ;Hit end of line
              01286         CALL    $DSP
              01287         ENDIF
2A2B 24       01288         INC     H               ;Bump line posn
2A2C 2E00     01289         LD      L,0             ;Start on next
2A2E 3E17     01290         LD      A,23            ;Max lines
2A30 BC       01291         CP      H               ;There yet?
2A31 20EE     01292         JR      NZ,ESHOW        ;Nope
2A33          01293         @@KEY                   ;Wait for a key
2A33+3E01     01294         LD      A,1
2A35+EF       01295         RST     40
              01296         IF      @BLD631
2A36 3E1C     01297         LD      A,HOME          ;<631>Cursor home
2A38 CD4C26   01298         CALL    $DSP            ;<631>
2A3B 3E1F     01299         LD      A,CLR           ;<631>Clear to end-of-frame
2A3D CD4C26   01300         CALL    $DSP            ;<631>
              01301         ELSE
              01302         CALL    $CLS            ;Clear the display
              01303         ENDIF
2A40 210000   01304         LD      HL,0            ;Restart count
2A43 18DC     01305         JR      ESHOW
              01306 ;
              01307         IF      @BLD631
              01308         ELSE
              01309 $CLS    LD      A,HOME          ;Cursor home
              01310         CALL    $DSP
              01311         LD      A,CLR           ;Clear to end-of-frame
              01312         JP      $DSP
              01313         ENDIF
              01314 ;
2A45 00       01315 CKEARLY DB      0
2A46 3A222D   01316         LD      A,(DBUFF+22H)   ;Get type byte
2A49 FEFF     01317         CP      0FFH            ;Do we know this one?
2A4B C8       01318         RET     Z               ;OK to continue
2A4C 3A242C   01319         LD      A,(DDRIVE)      ;Doesn't matter if
2A4F 3C       01320         INC     A               ;  only doing DIR
2A50 C8       01321         RET     Z
2A51 216C2B   01322         LD      HL,EARLYD       ;Err msg
2A54 C33329   01323         JP      PERR1           ;Quit
              01324 ;
              01325         IF      @BLD631
2A57 3E03     01326 CPYFCB: LD      A,ETX           ;<631>
2A59 12       01327         LD      (DE),A          ;<631>
2A5A EB       01328         EX      DE,HL           ;<631>
2A5B 21E32B   01329         LD      HL,FCB          ;<631>
2A5E 012000   01330         LD      BC,32           ;<631>
2A61 EDB0     01331         LDIR                    ;<631>
2A63 C9       01332         RET                     ;<631>
              01333 ;
              01334         ENDIF
2A64 80       01335 PRMTBL$ DB      80H
2A65 55       01336         DB      ABB!FLAG!5
2A66 51       01337         DB      'QUERY',0
     55 45 52 59 00 
2A6C BD26     01338         DW      QPARM+1
2A6E 53       01339         DB      ABB!FLAG!3
2A6F 53       01340         DB      'SYS',0
     59 53 00 
2A73 AE26     01341         DW      SPARM+1
2A75 53       01342         DB      ABB!FLAG!3
2A76 49       01343         DB      'INV',0
     4E 56 00 
2A7A B426     01344         DW      IPARM+1
2A7C 53       01345         DB      ABB!FLAG!3
2A7D 56       01346         DB      'VIS',0
     49 53 00 
2A81 B126     01347         DW      VPARM+1
2A83 53       01348         DB      ABB!FLAG!3
2A84 4F       01349         DB      'OLD',0
     4C 44 00 
2A88 C326     01350         DW      OPARM+1
2A8A 53       01351         DB      ABB!FLAG!3
2A8B 4E       01352         DB      'NEW',0
     45 57 00 
2A8F C026     01353         DW      NPARM+1
2A91 53       01354         DB      ABB!FLAG!3
2A92 44       01355         DB      'DIR',0
     49 52 00 
2A96 A226     01356         DW      DPARM+1
2A98 00       01357         NOP
              01358 ;
              01359 ;       Messages and buffers
              01360 ;
2A99 00       01361 NOTPRM  DB      0
2A9A 24       01362 PATTRN  DB      '$$$$$$$$'
     24 24 24 24 24 24 24 
2AA2 24       01363 PATEXT  DB      '$$$'
     24 24 
2AA5 43       01364 HELLO$  DB      'CONV'
     4F 4E 56 
2AA9          01365 *GET    CLIENT:3
              01366 ;CLIENT/ASM - File to establish sign-on headers
              01367 ; and version numbers.
              01368 ;
              01369 ; EACH STRING SHOULD CONTAIN ONLY 63 CHARACTERS !!
              01370 ;
              01371         IF      @BLD631
              01372 ;                12345678901234567890123456789012345678901234567890
2AA9 20       01373         DB      ' - 6.3.1 - Copyright 1982/83/84/86/90 by MISOSYS, ';<631>
     2D 20 36 2E 33 2E 31 20
     2D 20 43 6F 70 79 72 69
     67 68 74 20 31 39 38 32
     2F 38 33 2F 38 34 2F 38
     36 2F 39 30 20 62 79 20
     4D 49 53 4F 53 59 53 2C
     20 
2ADB 49       01374         DB      'Inc.,       ',10       ;<631>
     6E 63 2E 2C 20 20 20 20
     20 20 20 0A 
              01375         ELSE
              01376         DB      ' - 6.3.0 - Copyright 1982/83/84/86 by Logical Syst'
              01377         DB      'ems, Inc.   ',10
              01378         ENDIF
              01379 ;
              01380 ;       DB      'All Rights Reserved. Licensed 1982/83/84 to Tandy '
              01381 ;       DB      'Corporation.',10,13
              01382 ;
              01383 ;       DB      'All Rights Reserved. Beta-TEST Level/AD, DO NOT DI'
              01384 ;       DB      'STRIBUTE !! ',10,13
              01385 ;       DB      'All Rights reserved by LSI, 8970 N. 55th St. Milwa'
              01386 ;       DB      'ukee, Wisc. ',10,13
2AE8 41       01387         DB      'All Rights Reserved. Unauthorized duplication is p'
     6C 6C 20 52 69 67 68 74
     73 20 52 65 73 65 72 76
     65 64 2E 20 55 6E 61 75
     74 68 6F 72 69 7A 65 64
     20 64 75 70 6C 69 63 61
     74 69 6F 6E 20 69 73 20
     70 
2B1A 72       01388         DB      'rohibited.  ',10,13
     6F 68 69 62 69 74 65 64
     2E 20 20 0A 0D 
2B28 53       01389 NOTONE  DB      'Source and Destination drives are the same',CR
     6F 75 72 63 65 20 61 6E
     64 20 44 65 73 74 69 6E
     61 74 69 6F 6E 20 64 72
     69 76 65 73 20 61 72 65
     20 74 68 65 20 73 61 6D
     65 0D 
2B53 53       01390 NOT0    DB      'Source cannot be drive 0',CR
     6F 75 72 63 65 20 63 61
     6E 6E 6F 74 20 62 65 20
     64 72 69 76 65 20 30 0D
              01391         IF      @BLD631
2B6C 43       01392 EARLYD  DB      'Can''t CONV Protected Disk',CR
     61 6E 27 74 20 43 4F 4E
     56 20 50 72 6F 74 65 63
     74 65 64 20 44 69 73 6B
     0D 
              01393         ELSE
              01394 EARLYD  DB      'Cannot CONV Protected Diskette',CR
              01395         ENDIF
              01396         IF      @BLD631
2B86 20       01397 EXISTQ  DB      '  File exists -- replace it'   ;<631>
     20 46 69 6C 65 20 65 78
     69 73 74 73 20 2D 2D 20
     72 65 70 6C 61 63 65 20
     69 74 
2BA1 3F       01398 QMARK   DB      '? ',ETX                        ;<631>
     20 03 
              01399         ELSE
              01400 QMARK   DB      '? ',ETX
              01401 EXISTQ  DB      '  File exists -- replace it? ',ETX
              01402         ENDIF
2BA4 43       01403 CONVS   DB      'Converting file: ',ETX
     6F 6E 76 65 72 74 69 6E
     67 20 66 69 6C 65 3A 20
     03 
2BB6 43       01404 CONVQ   DB      'Convert file '
     6F 6E 76 65 72 74 20 66
     69 6C 65 20 
2BC3          01405 FNAME   DS      32              ;Must follow CONVQ
2BE3          01406 FCB     DS      32              ;For INIT/WRITE
2C03          01407 FCB2    DS      32              ;For OPEN (test for already existing)
2C23          01408 SDRIVE  DS      1
2C24          01409 DDRIVE  DS      1
2C25          01410 TRKSEC  DS      2
2C27          01411 ABUFF   DS      5
2C2C          01412 SAVDCT  DS      10
2D00          01413         ORG     $<-8+1<8
2D00          01414 DBUFF   DS      1000H           ;16 sectors of directory
3D00          01415 TBUFF   EQU     $               ;To end of memory
              01416 ;
2600          01417         END     BEGIN
2600 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!