MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00001 00001 ;BACKUP/ASM - File/disk copy utility 00003 ; 0000 00004 *GET BUILDVER:3 00005 ; 00006 ; Buildver/asm is a bit of a kludge since not all utilities can load 00007 ; equates from LDOS60 and still compile. LOWCORE and everybody else 00008 ; relies on this setting, and it eventually ends up in LDOS60/EQU 00009 ; for programs that can use that. 00010 ; FFFF 00011 @BLD631 EQU -1 ;<631>Build 631 distribution (LEVEL 1B) 00012 ; These switches activate patches made since the 1B release. 00013 ; It is important that all earlier patches be enabled when a higher 00014 ; patch is enabled. 00015 ; Patches C thru F were published in TMQ IV.iv, page 32 (NOTE: the 00016 ; patch addresses listed for SPOOL in SPOOL1/FIX are 19H high.) FFFF 00017 @BLD631C EQU -1 ;<631>Apply 1C patches (SETKI) FFFF 00018 @BLD631D EQU -1 ;<631>Apply 1D patches (DIR) FFFF 00019 @BLD631E EQU -1 ;<631>Apply 1E patches (DIR & MEMDISK/DCT) FFFF 00020 @BLD631F EQU -1 ;<631>Apply 1F patches (SPOOL) 00021 ; Patches G and H were published in TMQ V.i, pages 10 and 18/19. FFFF 00022 @BLD631G EQU -1 ;<631>Apply 1G patches (//KEYIN,DIR,DO *) FFFF 00023 @BLD631H EQU -1 ;<631>Apply 1H patches (MEMORY) 00024 ; 00025 ;End of BUILDVER/ASM 0000 00026 *GET BACKUP1:3 00027 ;BACKUP1/ASM - Backup utility module MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00002 'Build 631 distribution (LEVEL 1B) 00450 ; These switches activate patches made since the 1B release. 00451 ; It is important that all earlier patches be enabled when a higher 00452 ; patch is enabled. 00453 ; Patches C thru F were published in TMQ IV.iv, page 32 (NOTE: the 00454 ; patch addresses listed for SPOOL in SPOOL1/FIX are 19H high.) FFFF 00455 @BLD631C EQU -1 ;<631>Apply 1C patches (SETKI) FFFF 00456 @BLD631D EQU -1 ;<631>Apply 1D patches (DIR) FFFF 00457 @BLD631E EQU -1 ;<631>Apply 1E patches (DIR & MEMDISK/DCT) FFFF 00458 @BLD631F EQU -1 ;<631>Apply 1F patches (SPOOL) 00459 ; Patches G and H were published in TMQ V.i, pages 10 and 18/19. FFFF 00460 @BLD631G EQU -1 ;<631>Apply 1G patches (//KEYIN,DIR,DO *) FFFF 00461 @BLD631H EQU -1 ;<631>Apply 1H patches (MEMORY) 00462 ; 00463 ;End of BUILDVER/ASM 00464 IF @BLD631 00466 ELSE 00467 COM '<*(C) 1982,3,4,6 by LSI*>' 00468 ENDIF 00469 ; 2600 00470 ORG 2600H 00471 ; 00472 IF @MOD2 00473 BOOTST$ DB 03H MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00003 '' 00501 ; 00503 ENDIF 00504 ; 00505 ; 00506 ; Normal exit - no errors 00507 ; 2685 216B2A 00508 EXIT1 LD HL,BUCAO$ ;"Backup complete... 2688 E5 00509 PUSH HL ;Save msg ptr 2689 CDC926 00510 CALL EXIT5 ;Ck if prompt for sys disk 268C E1 00511 POP HL 268D 00512 @@DSPLY 00513 IFEQ 00H,1 00514 LD HL, 00515 ENDIF 268D+3E0A 00516 LD A,10 268F+EF 00517 RST 40 2690 182B 00518 JR EXIT 00519 ; 00520 ; Error exit 00521 ; 2692 3E11 00522 DIRERR LD A,17 ;Init "Dir read error 2694 01 00523 DB 1 ;Ignore next inst 2695 3E20 00524 EXIT2 LD A,20H ;Init illegal drive # MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00004 ' 0 26FE B7 00604 OR A ; then no need to prompt 26FF C0 00605 RET NZ 2700 3E00 00606 SYSDRV$ LD A,0 ;P/u drive 0 indicator 2702 F620 00607 OR 20H ;Set bit 5 for sys test 2704 E5 00608 PUSH HL 2705 216D29 00609 LD HL,PMTSYS$ ;"insert system... 2708 F5 00610 PUSH AF ;Save drive # 2709 3AFC27 00611 LD A,(CURDSK+1) ;Save cur disk 270C 323B27 00612 LD (TDSK),A 270F F1 00613 POP AF 2710 CDFB27 00614 CALL CURDSK ;get wanted disk 2713 3AFC27 00615 LD A,(CURDSK+1) 2716 E607 00616 AND 7 ;Mask all but drive 2718 4F 00617 LD C,A ;Drive # to C 2719 00618 @@GTDCT ;Get the DCT this drive 2719+3E51 00619 LD A,81 271B+EF 00620 RST 40 271C FD7E04 00621 LD A,(IY+4) ;Get ckdrv bit 271F F5 00622 PUSH AF 2720 E67F 00623 AND 7FH ;Mask ckdrv, force on 2722 FD7704 00624 LD (IY+4),A 2725 FDE5 00625 PUSH IY 2727 00626 @@CKDRV 2727+3E21 00627 LD A,33 2729+EF 00628 RST 40 MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00006 ' dest 275D CD9228 00663 CALL RESTOR ;Restore to cyl 0 2760 C5 00664 PUSH BC 2761 D5 00665 PUSH DE ;Save registers 2762 E5 00666 PUSH HL 2763 21002D 00667 LD HL,BUF3$ ;Use this for I/O buffer 2766 110000 00668 LD DE,0 ;Read the BOOT 2769 CDA628 00669 CALL RDSEC 276C E1 00670 POP HL 276D D1 00671 POP DE ;Restore the registers 276E C1 00672 POP BC 276F C29726 00673 JP NZ,EXIT3 ;Quit on read error 2772 3A002D 00674 LD A,(BUF3$) ;P/u 1st byte of BOOT 2775 B7 00675 OR A ;If source, s/b 0 2776 2030 00676 JR NZ,PSRC3 ;Jump if not this disk 2778 C5 00677 PUSH BC 2779 D5 00678 PUSH DE 277A E5 00679 PUSH HL 277B FD5609 00680 LD D,(IY+9) ;P/u dir cyl MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00007 ' dest 27CA CD9228 00731 CALL RESTOR ; else restore to cyl 0 27CD C5 00732 PUSH BC MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00008 ' dest 00773 ; 00774 ; Routine to flash the prompt 00775 ; 2807 C5 00776 FLASH PUSH BC 2808 D5 00777 PUSH DE 2809 E5 00778 PUSH HL 280A 00779 @@FLAGS ;IY => flag table base 280A+3E65 00780 LD A,101 280C+EF 00781 RST 40 280D 0E0D 00782 LD C,CR ;Write a new line 280F 00783 @@DSP 280F+3E02 00784 LD A,2 MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00009 '',3 1E 49 6E 73 65 72 74 20 53 59 53 54 45 4D 20 64 69 73 6B 20 20 3C 45 4E 54 45 52 3E 03 298B 1D 00970 PMTSRC$ DB 29,30,'Insert SOURCE disk ',3 1E 49 6E 73 65 72 74 20 MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00013 '',3 45 4E 54 45 52 3E 03 29CC 1D 00973 DIFSRC$ DB 29,30,'* A L E R T * That',27H 1E 2A 20 41 20 4C 20 45 20 52 20 54 20 2A 20 20 54 68 61 74 27 29E2 73 00974 DB 's not the same source disk ',CR 20 6E 6F 74 20 74 68 65 20 73 61 6D 65 20 73 6F 75 72 63 65 20 64 69 73 6B 20 0D 29FE 1D 00975 DIFDST$ DB 29,30,'* A L E R T * That',27H 1E 2A 20 41 20 4C 20 45 20 52 20 54 20 2A 20 20 54 68 61 74 27 2A14 73 00976 DB 's not the same destination disk ',CR 20 6E 6F 74 20 74 68 65 20 73 61 6D 65 20 64 65 73 74 69 6E 61 74 69 6F 6E 20 64 69 73 6B 20 0D 2A35 53 00977 CCMOD$ DB 'Source disk is write protected; ' 6F 75 72 63 65 20 64 69 73 6B 20 69 73 20 77 72 69 74 65 20 70 72 6F 74 65 63 74 65 64 3B 20 2A55 4D 00978 DB 'MOD flags not updated',CR 4F 44 20 66 6C 61 67 73 20 6E 6F 74 20 75 70 64 61 74 65 64 0D 2A6B 0A 00979 BUCAO$ DB LF,'Backup complete',CR 42 61 63 6B 75 70 20 63 6F 6D 70 6C 65 74 65 0D 2A7C 0A 00980 ABRTBU$ DB LF,'Command aborted',14,CR 43 6F 6D 6D 61 6E 64 20 61 62 6F 72 74 65 64 0E 0D 2A8E 43 00981 CANTBU$ DB 'Can''t Backup - source disk write protected',LF 61 6E 27 74 20 42 61 63 6B 75 70 20 2D 20 73 6F 75 72 63 65 20 64 69 73 6B 20 77 72 69 74 65 20 70 72 6F 74 65 63 74 65 64 0A 2AB9 44 00982 PROT$ DB 'Disk contains protected files ',CR MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00014 ' flag table 2E1A+3E65 01020 LD A,101 2E1C+EF 01021 RST 40 2E1D FDE5 01022 PUSH IY 2E1F D1 01023 POP DE 2E20 211800 01024 LD HL,'Y'-'A' ;Get year type locn 2E23 19 01025 ADD HL,DE 2E24 223743 01026 LD (YFLAG1),HL ;Save for ckdrv 2E27 CD8028 01027 CALL RESKFLG ;Reset KFLAG bits 2E2A FDCB024E 01028 BIT 1,(IY+'C'-'A') ;Check on CMNDR active 2E2E 219A44 01029 LD HL,LDOS$ 2E31 C2AF26 01030 JP NZ,EXIT4 ; and exit if so 2E34 E1 01031 POP HL 2E35 7E 01032 BCK1 LD A,(HL) ;Bypass cmdline spaces 2E36 23 01033 INC HL 2E37 FE20 01034 CP ' ' 2E39 28FA 01035 JR Z,BCK1 01036 ; 01037 ; Scan for source partial spec 01038 ; 2E3B 110226 01039 LD DE,SPCFLD$ ;Pt to filespec field 2E3E 0608 01040 LD B,8 ;Init for file name 2E40 FE2D 01041 CP '-' ;Exclude matches? 2E42 2005 01042 JR NZ,BCK2 ;If '-', set flag 2E44 320D26 01043 LD (MFLG$),A MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00016 ' 2E8B 324227 01087 LD (SRCDRV$+1),A ;Stuff source drive 2E8E 7E 01088 BCK5 LD A,(HL) ;P/u char or separator 2E8F 23 01089 INC HL ;Bump ptr 2E90 FE3A 01090 CP ':' ;Find dest drive? 2E92 281F 01091 JR Z,BCK6 ;Get drive # if : 2E94 FE30 01092 CP 30H ; let prepositions thru 2E96 30F6 01093 JR NC,BCK5 2E98 FE20 01094 CP 20H ;Or a space separator 2E9A 28F2 01095 JR Z,BCK5 MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00017 ' 2EBC 32AF27 01118 LD (DSTDRV$+1),A ;Stuff dest drive 01119 ; 2EBF 117043 01120 LD DE,PRMTBL$ ;P/u parm table ptr 2EC2 D5 01121 PUSH DE ;Also in IX to check 2EC3 DDE1 01122 POP IX ; responses 2EC5 01123 @@PARAM ;Get parms if any 2EC5+3E11 01124 LD A,17 2EC7+EF 01125 RST 40 2EC8 21BF44 01126 LD HL,PRMERR$ ;Init "parm error 2ECB 2005 01127 JR NZ,$EX4 ;Quit on parm error 2ECD DD7E30 01128 LD A,(IX+DATRSP) ;Date can only be STR 2ED0 E6C0 01129 AND VAL!SW ;This must be string 2ED2 C2AF26 01130 $EX4 JP NZ,EXIT4 ;Quit if not 01131 ; 01132 ; Check on Source = Destination 01133 ; 2ED5 3A4227 01134 LD A,(SRCDRV$+1) ;P/u source drive 2ED8 21AF27 01135 LD HL,DSTDRV$+1 2EDB AE 01136 XOR (HL) ;Match against dest 2EDC 320328 01137 LD (SXORD+1),A ;0 if S=D, <>0 if S<>D 2EDF 200D 01138 JR NZ,DATPRM ;Bypass if source <> dest 2EE1 01139 @@FLAGS ;Else test if proc 2EE1+3E65 01140 LD A,101 2EE3+EF 01141 RST 40 2EE4 FDCB126E 01142 BIT 5,(IY+'S'-'A') 2EE8 21B243 01143 LD HL,NOINDO$ ;"can't do single... 2EEB C2AF26 01144 JP NZ,EXIT4 ;Abort if from 01145 ; 01146 ; Check on date entries 01147 ; MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00018 ' 0 if partspec 2F48 47 01195 LD B,A ;Hold in reg B 01196 ; 01197 ; Merge all "CLASS" parms together 01198 ; 2F49 DD7E0C 01199 LD A,(IX+SYSRSP) ;System files MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00019 'Is this year a leap year? 3163 FE0C 01531 CP 0CH ;<631> 3165 3003 01532 JR NC,LPBLW ;<631> 3167 C664 01533 ADD A,64H ;<631> 3169 77 01534 LD (HL),A ;<631> 316A E603 01535 LPBLW: AND 3 ;<631> 01536 ELSE 01537 LD A,(LILBUF$) ;Is year a leap year? 01538 AND 3 01539 ENDIF 316C 210846 01540 LD HL,MAXDAYS+1 ;Set Feb to have 29 days 316F 2001 01541 JR NZ,$+3 ; if so 3171 34 01542 INC (HL) 3172 3A5A26 01543 LD A,(LILBUF$+2) ;P/u month 3175 3D 01544 DEC A ;Range check 3176 FE0C 01545 CP 12 3178 302C 01546 JR NC,BADFMT ;Go if 0 or >12 317A 2B 01547 DEC HL ;Point to Jan entry 317B 85 01548 ADD A,L ;Index the month 317C 6F 01549 LD L,A 317D 7C 01550 LD A,H 317E CE00 01551 ADC A,0 3180 67 01552 LD H,A 3181 3A5926 01553 LD A,(LILBUF$+1) ;P/u day entry 3184 3D 01554 DEC A ;Reduce for test (0->FF) 3185 BE 01555 CP (HL) 3186 301E 01556 JR NC,BADFMT ;Go if too large (or 0) 3188 215A26 01557 LD HL,LILBUF$+2 ;Pt to month 318B 46 01558 LD B,(HL) 318C 0E00 01559 LD C,0 318E CB38 01560 SRL B ;Split month between 3190 CB19 01561 RR C ; B and C 3192 2B 01562 DEC HL 3193 7E 01563 LD A,(HL) ;Get the day MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00026 'Loop countdown 31B9 C8 01594 RET Z ;<631> 31BA 1B 01595 DEC DE ;<631>Backup the pointer 01596 ELSE 01597 DEC DE ;Backup the pointer 01598 DEC B ;Loop countdown 01599 RET Z 01600 ENDIF 31BB 7E 01601 LD A,(HL) ;Ck for valid separator 31BC 23 01602 INC HL ;Bump pointer 31BD B9 01603 CP C ;Separator char required 31BE 28F1 01604 JR Z,PRSD1 ;Loop if match 31C0 C9 01605 RET ;Else ret bad (NZ) 01606 ; 01607 ; Routine to parse a digit pair 01608 ; 31C1 CDD831 01609 PRSD2 CALL PRS4 ;Get a digit 31C4 3010 01610 JR NC,PRSD3 ;Jump if bad digit 31C6 5F 01611 LD E,A ;Multiply by ten 31C7 07 01612 RLCA 31C8 07 01613 RLCA 31C9 83 01614 ADD A,E 31CA 07 01615 RLCA MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00027 ' 2E5F 2023 01695 JR NZ,PMTYN ;<631> 01696 ENDIF 01697 ; 01698 ; If MPW = "PASSWORD", just query Y,N 01699 ; 2E61 2ACE2C 01700 LD HL,(BUF2$+0CEH) ;P/u disk MPW 2E64 11E042 01701 LD DE,PASSWORD ;P/u hash for "PASSWORD" 2E67 AF 01702 XOR A 2E68 ED52 01703 SBC HL,DE ;Does it match disk MPW? 2E6A 2818 01704 JR Z,PMTYN ;Go get Y or N if so 01705 ; 01706 ; User must enter Current Pack's MPW to proceed 01707 ; 2E6C 216132 01708 OLDMPW LD HL,OLDMPW$ ;"What's the old MPW? 2E6F 110000 01709 LD DE,0 ;Force prompt of message 2E72 CD6442 01710 CALL GETMPW ;Grab user input to match 01711 ; 01712 ; Routine to test master password for match 01713 ; 2E75 EB 01714 EX DE,HL ;Xfer hashed MPW to DE 2E76 2ACE2C 01715 LD HL,(BUF2$+0CEH) ;Grab pack MPW 2E79 AF 01716 XOR A ;Clear carry flag 2E7A ED52 01717 SBC HL,DE ;Did user enter pack MPW? 2E7C 215529 01718 LD HL,BADMPW$ ;Init "Bad MPW" just in case 2E7F C2AF26 01719 JP NZ,EXIT4 ;Abort if no match 2E82 1820 01720 JR $A1 ;PW good, continue backup 01721 ; 2E84 01722 PMTYN @@DSPLY PMTYN$ ;"Backup anyway?" 01723 IFEQ 01H,1 2E84+219332 01724 LD HL,PMTYN$ 01725 ENDIF 2E87+3E0A 01726 LD A,10 2E89+EF 01727 RST 40 2E8A 215826 01728 LD HL,LILBUF$ ;Prompt to continue 2E8D 010003 01729 LD BC,3<8 ; since ID's differ 2E90 01730 @@KEYIN 2E90+3E09 01731 LD A,9 2E92+EF 01732 RST 40 2E93 DAAC26 01733 JP C,ABRTBU ;Exit on break 2E96 7E 01734 LD A,(HL) 2E97 CBAF 01735 RES 5,A ;Make answer upper case 2E99 FE59 01736 CP 'Y' ;Was answer Yes? 2E9B 2807 01737 JR Z,$A1 ;Go if continue 2E9D C3AC26 01738 PACKNDO JP ABRTBU ; else abort 01739 ; 2EA0 13 01740 IDMATCH INC DE 2EA1 23 01741 INC HL 2EA2 1092 01742 DJNZ CPRID 2EA4 21602C 01743 $A1 LD HL,BUF2$+60H ;Dest lockout table 2EA7 11602B 01744 LD DE,BUF1$+60H ;Source lockout table MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00031 ' 01878 ELSE 01879 LD A,D ;This is the cylinder 01880 ENDIF 2F61 21F031 01881 LD HL,CYL$ ;Message posn to hold 2F64 CDA131 01882 CALL CVTDEC ; ASCII cyl number 01883 IF @BLD631 01884 ELSE 01885 PUSH DE 01886 ENDIF 2F67 01887 @@DSPLY LDCYL$ ;"loading cylinder... 01888 IFEQ 01H,1 2F67+21B131 01889 LD HL,LDCYL$ 01890 ENDIF 2F6A+3E0A 01891 LD A,10 2F6C+EF 01892 RST 40 2F6D 01893 @@DSPLY CYL$ ;"xx... 01894 IFEQ 01H,1 2F6D+21F031 01895 LD HL,CYL$ 01896 ENDIF 2F70+3E0A 01897 LD A,10 2F72+EF 01898 RST 40 2F73 D1 01899 POP DE ;Now set up to 2F74 E1 01900 POP HL ; read the cylinder MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00034 'Save buffer ptr 2FCF D5 01963 PUSH DE ;<631> 01964 ELSE 01965 OR E 01966 PUSH HL ;Save buffer ptr 01967 LD A,D 01968 ENDIF 2FD0 21F031 01969 LD HL,CYL$ ;"xx... 2FD3 CDA131 01970 CALL CVTDEC ;Convert cyl # to ASCII 01971 IF @BLD631 01972 ELSE 01973 PUSH DE 01974 ENDIF 2FD6 01975 @@DSPLY DUCYL$ ;"dumping cyl... 01976 IFEQ 01H,1 2FD6+21C631 01977 LD HL,DUCYL$ 01978 ENDIF 2FD9+3E0A 01979 LD A,10 2FDB+EF 01980 RST 40 2FDC 01981 @@DSPLY CYL$ ;"xx... 01982 IFEQ 01H,1 2FDC+21F031 01983 LD HL,CYL$ 01984 ENDIF 2FDF+3E0A 01985 LD A,10 2FE1+EF 01986 RST 40 2FE2 D1 01987 POP DE ;Recover cyl/sect 2FE3 E1 01988 POP HL ; and buffer posn 2FE4 7A 01989 DUCYL2 LD A,D ;P/u track # & bypass 2FE5 B7 01990 OR A ; if not cyl=0 2FE6 2028 01991 JR NZ,DUCYL2B 01992 ; 01993 IF @MOD2 01994 LD A,(BACKUP0) ;Get system flag 01995 OR A ;System disk? 01996 JR NZ,DUCYL2B ;Yes, bypass! 01997 ENDIF 01998 ; 2FE8 B3 01999 OR E ;Merge to test for sec=2 2FE9 FE02 02000 CP 2 2FEB 200D 02001 JR NZ,CKBOOT ;If not 2, ck 1 or 0 2FED 2EC6 02002 LD L,0C6H ;Point to id byte 2FEF 7E 02003 LD A,(HL) 2FF0 3C 02004 INC A ;If X'FF', leave as is MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00036 'Backup is complete 02274 ELSE 02275 JP EXIT1 ;Backup is complete 02276 ENDIF 02277 ENDIF 02278 IF @MOD2 02279 JR CKWRTK0 ;Check if write cyl 0 02280 ENDIF 3198 1C 02281 RESMF5 INC E ;Bump sector # 3199 7B 02282 LD A,E 319A FE00 02283 RESMF6 CP $-$ ;Compare highest sect this cyl 319C 20CB 02284 JR NZ,RESMF3 ;Do another sector if not 02285 IF @MOD4 02286 IF @BLD631 02287 TXEXIT1: ;<631> 02288 ENDIF 319E C38526 02289 JP EXIT1 ;Backup is complete 02290 ENDIF 02291 IF @MOD2 02292 CKWRTK0 LD A,(BACKUP0) ;Get flag 02293 OR A ;Anything? 02294 JP Z,EXIT1 ;Nope, go! 02295 CALL PMTSRC ;Prompt for source 02296 CALL READ0 ;Read cyl 0 02297 JP NZ,EXIT3 ;Go on error 02298 CALL PMTDST ;Prompt for dest drive 02299 CALL FORMAT0 ;Format cylinder 0 02300 JP NZ,EXIT3 ;Go on disk error 02301 ; 02302 ; Pass original step rate to new disk 02303 ; 02304 LD HL,(BUFFER$) ;Get I/O buffer 02305 INC HL ;Bump to step rate 02306 INC HL 02307 INC HL ;+3 02308 LD A,(BSMIR+1) ;Get step 02309 LD (HL),A ;Pass to buffer 02310 LD BC,80H ;Offset to sector 1 02311 ADD HL,BC ;Point to it 02312 LD (HL),A ;Pass to buffer 02313 CALL PMTDST ;Re-fetch DCT 02314 CALL WRITE0 ;Write cylinder 0 02315 JP NZ,EXIT3 ;Go on disk error 02316 CALL PMTDST ;Fetch DCT MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00042 ' 31A2 1600 02328 LD D,0 ;<631> 31A4 EB 02329 EX DE,HL ;<631> 31A5 0603 02330 LD B,3 ;<631> 31A7 3E5F 02331 LD A,5FH ;<631> 31A9 EF 02332 RST 28H ;<631> 31AA C9 02333 RET ;<631> 02334 ELSE 02335 CVTDEC LD (HL),' ' ;Init to leading blank 02336 LD B,100 02337 CALL CVD1 02338 LD (HL),' ' ;Init to blank 02339 LD B,10 02340 CALL CVD1 02341 LD (HL),'0' ;Init to leading 0 02342 LD B,1 02343 CVD1 LD C,0 ;Init digit counter 02344 CVD2 SUB B ;Sub 10's power until carry 02345 JR C,CVD3 02346 INC C ; and bump count 02347 JR CVD2 02348 CVD3 ADD A,B ;Add back last sub 02349 PUSH AF 02350 LD A,C ;Check the count 02351 OR A 02352 JR Z,CVD7 ;Ignore if 0 02353 ADD A,30H ; else change to ASCII digit 02354 LD (HL),A 02355 CVD7 POP AF 02356 INC HL 02357 RET 02358 ENDIF 02359 ; 02360 ; Message area 02361 ; 31AB 21F431 02362 NOTMIR LD HL,NOTMIR$ 31AE C3AF26 02363 JP EXIT4 31B1 1D 02364 LDCYL$ DB 29,'Reading < cylinder ',3 52 65 61 64 69 6E 67 20 3C 20 63 79 6C 69 6E 64 65 72 20 03 31C6 1D 02365 DUCYL$ DB 29,'Writing > cylinder ',3 MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00043 ' to abort: ',3 6F 72 20 3C 42 52 45 41 4B 3E 20 74 6F 20 61 62 6F 72 74 3A 20 03 3293 41 02374 PMTYN$ DB 'Are you sure you want to backup to it ' 72 65 20 79 6F 75 20 73 75 72 65 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 62 61 63 6B 75 70 20 74 6F 20 69 74 20 32B9 3C 02375 DB ' ? ',3 59 2C 4E 3E 20 3F 20 03 02376 ; 32C2 00 02377 DC 64,0 ;PATCH space 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 00 00 00 00 00 00 00 00 00 MISOSYS EDAS-4.3 04/19/99 21:02:20 BACKUP - LS-DOS 6.3 Page 00044 '