[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/11/99 22:05:01 REPAIR - LS-DOS 6.2 Page 00001 00001 ;REPAIR/ASM - Directory Track Repair Program 00003 ; 000A 00004 LF EQU 10 000D 00005 CR EQU 13 4296 00006 BLNKMPW EQU 4296H 0040 00007 FLAG EQU 01000000B 0010 00008 ABB EQU 00010000B 00009 ; 0000 00010 *GET SVCMAC:3 ;SVC Macro equivalents 00011 ;SVCMAC/ASM - LS-DOS Version VI 00012 *LIST OFF 00404 *LIST ON 0000 00406 *GET COPYCOM:3 ;Copyright message 00407 ; COPYCOM - File for Copyright COMment block 00408 ; 0000 00409 *GET BUILDVER/ASM:3 00410 ; 00411 ; Buildver/asm is a bit of a kludge since not all utilities can load 00412 ; equates from LDOS60 and still compile. LOWCORE and everybody else 00413 ; relies on this setting, and it eventually ends up in LDOS60/EQU 00414 ; for programs that can use that. 00415 ; FFFF 00416 @BLD631 EQU -1 ;<631>Build 631 distribution (LEVEL 1B) 00417 ; These switches activate patches made since the 1B release. 00418 ; It is important that all earlier patches be enabled when a higher 00419 ; patch is enabled. 00420 ; Patches C thru F were published in TMQ IV.iv, page 32 (NOTE: the 00421 ; patch addresses listed for SPOOL in SPOOL1/FIX are 19H high.) FFFF 00422 @BLD631C EQU -1 ;<631>Apply 1C patches (SETKI) FFFF 00423 @BLD631D EQU -1 ;<631>Apply 1D patches (DIR) FFFF 00424 @BLD631E EQU -1 ;<631>Apply 1E patches (DIR & MEMDISK/DCT) FFFF 00425 @BLD631F EQU -1 ;<631>Apply 1F patches (SPOOL) 00426 ; Patches G and H were published in TMQ V.i, pages 10 and 18/19. FFFF 00427 @BLD631G EQU -1 ;<631>Apply 1G patches (//KEYIN,DIR,DO *) FFFF 00428 @BLD631H EQU -1 ;<631>Apply 1H patches (MEMORY) 00429 ; 00430 ;End of BUILDVER/ASM 00431 IF @BLD631 00433 ELSE 00434 COM '<*(C) 1982,3,4,6 by LSI*>' 00435 ENDIF 00436 ; 2600 00437 ORG 2600H 00438 BEGIN 2600 00439 @@CKBRKC ;Check for break 2600+3E6A 00440 LD A,106 2602+EF 00441 RST 40 2603 2804 00442 JR Z,BEGINA ;Continue if not 2605 21FFFF 00443 LD HL,-1 ; else abort 2608 C9 00444 RET 00445 ; 00446 BEGINA 2609 ED731C26 00447 LD (STACK),SP ;Save entry stack 260D E5 00448 PUSH HL ;Save ptr to CMD buffer 260E 214A28 00449 LD HL,HELLO$ ;Display the signon 2611 CD9F27 00450 CALL $DSPLY 2614 E1 00451 POP HL 2615 CD2226 00452 CALL PGRM ;Normal exit is via RET 00453 ; 00454 ; Set exit condition.. 00455 ; 2618 210000 00456 $EXIT LD HL,0 ;Init for no error 261B 310000 00457 QUIT$ LD SP,$-$ ;P/u original stack 261C 00458 STACK EQU $-2 261E 00459 @@CKBRKC ;Clear break before exit 261E+3E6A 00460 LD A,106 2620+EF 00461 RST 40 2621 C9 00462 RET 00463 ; 2622 7E 00464 PGRM LD A,(HL) ;Ck for drive entered 2623 FE3A 00465 CP ':' ;Colon indicator? 2625 C2E127 00466 JP NZ,PRMERR ;Quit if not 2628 23 00467 INC HL ;Point to drive # 2629 7E 00468 LD A,(HL) ;P/u drive 262A D630 00469 SUB '0' ;Cvrt to binary 262C FE08 00470 CP 8 ;Bigger than 7? 262E D24528 00471 JP NC,ILLEG ;Quit if so 00472 ; 2631 B7 00473 OR A ;Can't be drive 0 2632 CADD27 00474 JP Z,NOT0 2635 321C27 00475 LD (DRIVE),A ;Stuff for later 2638 23 00476 INC HL ;Bump past the drive 2639 4F 00477 LD C,A 263A 00478 @@GTDCT ;What's its DCT$ 263A+3E51 00479 LD A,81 263C+EF 00480 RST 40 00481 ; 00482 ; Get any parameters 00483 ; 263D 114E29 00484 LD DE,PRMTBL$ ;Pt to parm table 2640 00485 @@PARAM 2640+3E11 00486 LD A,17 2642+EF 00487 RST 40 2643 C2E127 00488 JP NZ,PRMERR ;Exit on parm error 2646 3A5329 00489 LD A,(MRSP) ;MPW parameter entered? 2649 B7 00490 OR A 264A C20627 00491 JP NZ,MPARM ;Go if so 264D FDCB035E 00492 BIT 3,(IY+3) ;Can't "repair" a hard drive 2651 C2D927 00493 JP NZ,NIXHARD ; except for MPW parm 2654 FDCB0466 00494 BIT 4,(IY+4) ;If not alien controller 2658 CC1128 00495 CALL Z,CKDRV ; make sure disk present 265B 110000 00496 LD DE,0 ;Read BOOT to get dir cyl 265E CDB827 00497 CALL RDSEC 2661 AF 00498 XOR A 2662 32002A 00499 LD (BUF1),A ;Set 1st byte to zero 2665 3A022A 00500 LD A,(BUF1+2) ;P/u the dir cyl 2668 E67F 00501 AND 7FH ;Strip bit 7 266A 32022A 00502 LD (BUF1+2),A ;Put it back 266D F5 00503 PUSH AF ;Save dir cyl 266E CDB227 00504 CALL WRSEC ;Rewrite the BOOT 2671 1C 00505 INC E 2672 CDB827 00506 CALL RDSEC ;Get sect 1 also 2675 F1 00507 POP AF 2676 32022A 00508 LD (BUF1+2),A ;Update dir cyl 2679 F5 00509 PUSH AF 267A CDB227 00510 CALL WRSEC ;Write back 267D F1 00511 POP AF ;Dir cyl again 00512 ; 267E 57 00513 LD D,A 267F 1E00 00514 LD E,0 2681 FD7709 00515 LD (IY+9),A ;Set as dir cyl 2684 CDB827 00516 CALL RDSEC ;Read the GAT 00517 ; 2687 FDCB04AE 00518 RES 5,(IY+4) ;Show single sided 268B 2ECB 00519 LD L,0CBH ;Pt to version # byte 268D 7E 00520 LD A,(HL) ;Pick it up 268E FE40 00521 CP 40H ;Earlier than a 4.0? 2690 380E 00522 JR C,LC ;Bypass 2 sided ck if so 2692 FE70 00523 CP 70H ;"Later" than 6.x? 2694 300A 00524 JR NC,LC ;Again, no sides ck 2696 2ECD 00525 LD L,0CDH ;Point to CONFIG byte 2698 CB6E 00526 BIT 5,(HL) ;Check 2-sided 269A 2804 00527 JR Z,LC ;Go if not 269C FDCB04EE 00528 SET 5,(IY+4) ; else update DCT 00529 ; 26A0 2EBF 00530 LC LD L,0BFH ;Pt to end of lockout 26A2 0660 00531 LD B,96 ;Max cylinder count 26A4 7E 00532 ALIEN1 LD A,(HL) ;P/u a lockout byte 26A5 3C 00533 INC A ;Locked out? 26A6 2003 00534 JR NZ,ALIEN2 ;Exit when in use 26A8 2D 00535 DEC L ;Backup by 1 26A9 10F9 00536 DJNZ ALIEN1 26AB 3EDD 00537 ALIEN2 LD A,-35 ;What's in use? 26AD 80 00538 ADD A,B ;Convert to excess 26AE 2ECC 00539 LD L,0CCH 26B0 77 00540 LD (HL),A ;Stuff into GAT 00541 ; 00542 ; Construct config byte 00543 ; 26B1 FD7E04 00544 LD A,(IY+4) ;P/u # sides 26B4 E6A0 00545 AND 80H!20H 26B6 47 00546 LD B,A ;Save tempy 26B7 FD7E03 00547 LD A,(IY+3) ;P/u density 26BA E640 00548 AND 40H 26BC B0 00549 OR B ;Merge with previous 26BD 47 00550 LD B,A 26BE FD7E08 00551 LD A,(IY+8) ;P/u # grans/track 26C1 07 00552 RLCA 26C2 07 00553 RLCA ; to bits 0-2 26C3 07 00554 RLCA 26C4 E607 00555 AND 7 ;Mask off the rest 26C6 B0 00556 OR B ;Merge with previous 26C7 2C 00557 INC L ;Pt to config byte in GAT 26C8 47 00558 LD B,A ;Save for a moment 26C9 7E 00559 LD A,(HL) ;P/u present config byte 26CA E680 00560 AND 80H ;Keep only bit 7 26CC B0 00561 OR B ;Pick up the rest 26CD 77 00562 LD (HL),A ; & stuff 26CE 2E00 00563 LD L,0 26D0 CDA527 00564 CALL WRSYS ;Write the GAT 00565 ; 00566 ; Operate on the HIT 00567 ; 26D3 1C 00568 INC E ;Bump sector ptr to 1 26D4 CDB827 00569 CALL RDSEC ;Read the HIT 26D7 2C 00570 INC L ;Pt to DIR/SYS dec 26D8 36C4 00571 LD (HL),0C4H ;"correct" DEC code 26DA 2D 00572 DEC L 26DB CDA527 00573 CALL WRSYS ;Write out the HIT 26DE 0608 00574 LD B,8 ;Init for 8 sectors 26E0 1C 00575 ALIEN3 INC E ;Bump to next sector 26E1 CDB827 00576 CALL RDSEC ;Get the sector 26E4 CD8F27 00577 CALL UNOPEN ;Reset file open bit 26E7 7B 00578 LD A,E ;If DIR/SYS sector, 26E8 FE03 00579 CP 3 ; then update count & it 26EA 200E 00580 JR NZ,ALIEN4 26EC E5 00581 PUSH HL 26ED 219642 00582 LD HL,BLNKMPW ;Set DIR/SYS password 26F0 22122A 00583 LD (BUF1+12H),HL ;To blanks 26F3 3A142A 00584 LD A,(BUF1+20) ;P/u ERN of DIR/SYS 26F6 D603 00585 SUB 3 ;Account for 1st 3 done 26F8 47 00586 LD B,A ;Update loop counter 26F9 E1 00587 POP HL 26FA CDA527 00588 ALIEN4 CALL WRSYS ;Write back the sector 26FD 10E1 00589 DJNZ ALIEN3 00590 ; 26FF 00591 @@LOGOT ALCAO$ ;Advise complete - now readable 00592 IFEQ 01H,1 26FF+21CF28 00593 LD HL,ALCAO$ 00594 ENDIF 2702+3E0C 00595 LD A,12 2704+EF 00596 RST 40 2705 C9 00597 RET ;Done 00598 ; 00599 ; MPW parameter to change disk password on hard drive 00600 ; 2706 110000 00601 MPARM LD DE,0 ;P/u MPW string address 2709 CB6F 00602 BIT 5,A ;If not string, then error 270B CAE127 00603 JP Z,PRMERR 270E FDCB035E 00604 BIT 3,(IY+3) ;Can't do if not hard 2712 CAE127 00605 JP Z,PRMERR 2715 CD2D27 00606 CALL GETMPW ;Get and hash the entry 2718 C2C227 00607 JP NZ,IOERR 271B 0E00 00608 LD C,0 ;Init to drive requested 271C 00609 DRIVE EQU $-1 271D CDEE27 00610 CALL GATRD ;Read GAT into BUF1 2720 C2C227 00611 JP NZ,IOERR ;Back on error 2723 22CE2A 00612 LD (BUF1+0CEH),HL ;Stuff PW 2726 CDEF27 00613 CALL GATWR ;Write sector 0 from buf 2729 C2C227 00614 JP NZ,IOERR ;Jump on write error 272C C9 00615 RET ;Finished with Repair 00616 ; 00617 ; Enter SYS2 & hash the password 00618 ; 272D CD3427 00619 GETMPW CALL GMPW1 ;Get MPW into buffer 2730 C0 00620 RET NZ 2731 3EE4 00621 LD A,0E4H ;Hash password (DE) to HL 2733 EF 00622 RST 28H ;Ret to what called 00623 ; 00624 ; Place entered password into buffer 00625 ; 2734 215729 00626 GMPW1 LD HL,PSWDBUF ;Point to buffer 2737 E5 00627 PUSH HL 2738 0608 00628 LD B,8 ;Init for 8 chars 273A 1A 00629 GMPW2 LD A,(DE) ;P/u a char 273B FE0D 00630 CP CR ;End of line? 273D 280F 00631 JR Z,GMPW4 273F FE2C 00632 CP ',' ;Comma separator? 2741 280B 00633 JR Z,GMPW4 2743 FE22 00634 CP '"' ;Closing quote? 2745 2807 00635 JR Z,GMPW4 2747 13 00636 INC DE ;Bump input pointer 2748 77 00637 LD (HL),A ;Transfer character 2749 23 00638 INC HL ;Bump output pointer 274A 10EE 00639 DJNZ GMPW2 ;Loop until done 274C 1805 00640 JR CKMPW 274E 3620 00641 GMPW4 LD (HL),' ' ;Buffer with 2750 23 00642 INC HL ; trailing spaces 2751 10FB 00643 DJNZ GMPW4 00644 ; 00645 ; Convert to upper case and check validity 00646 ; 2753 E1 00647 CKMPW POP HL ;Recover buffer start 2754 E5 00648 PUSH HL 2755 0608 00649 LD B,8 2757 7E 00650 LD A,(HL) ;P/u 1st char 2758 180E 00651 JR CKMPW2 ; & check275A 23 00652 CKMPW1 INC HL 275B 7E 00653 LD A,(HL) 275C FE20 00654 CP ' ' ;Got to a space? 275E 2823 00655 JR Z,CKMPW7 2760 FE30 00656 CP '0' ;Less than '0' is error 2762 3823 00657 JR C,INVMPW 2764 FE3A 00658 CP '9'+1 ;<0-9> is okay for 2-n 2766 3812 00659 JR C,CKMPW3 2768 FE41 00660 CKMPW2 CP 'A' ;Less than "A" is error 276A 381B 00661 JR C,INVMPW 276C FE5B 00662 CP 'Z'+1 ; is okay 276E 380A 00663 JR C,CKMPW3 2770 FE61 00664 CP 'a' ; convert to 2772 3813 00665 JR C,INVMPW 2774 FE7B 00666 CP 'z'+1 2776 300F 00667 JR NC,INVMPW 2778 CBAE 00668 RES 5,(HL) ; upper case 277A 10DE 00669 CKMPW3 DJNZ CKMPW1 277C D1 00670 CKMPW4 POP DE ;Point to buffer start 277D AF 00671 XOR A 277E C9 00672 RET 277F 23 00673 CKMPW5 INC HL 2780 BE 00674 CP (HL) ;No imbedded spaces 2781 2004 00675 JR NZ,INVMPW 2783 10FA 00676 CKMPW7 DJNZ CKMPW5 2785 18F5 00677 JR CKMPW4 2787 211C29 00678 INVMPW LD HL,BADMPW$ ;Init "Invalid PW 278A 3E3F 00679 LD A,63 ;Set extended error 278C B7 00680 OR A ;Set NZ condition 278D D1 00681 POP DE ;Clean up stack 278E C9 00682 RET 00683 ; 00684 ; Reset any file open bits 00685 ; 278F E5 00686 UNOPEN PUSH HL ;Save buffer posn 2790 C5 00687 PUSH BC 2791 0608 00688 LD B,8 ;8 entries 2793 2C 00689 INC L ;Dir + 1 2794 CBAE 00690 ZAP RES 5,(HL) ;Clear file open bit 2796 3E20 00691 LD A,32 2798 85 00692 ADD A,L ;Pt to next Dir+1 2799 6F 00693 LD L,A 279A 10F8 00694 DJNZ ZAP ;Do 8 entries per direc 279C C1 00695 POP BC 279D E1 00696 POP HL 279E C9 00697 RET 00698 ; 279F 00699 $DSPLY @@DSPLY ;Display a line 00700 IFEQ 00H,1 00701 LD HL, 00702 ENDIF 279F+3E0A 00703 LD A,10 27A1+EF 00704 RST 40 27A2 C8 00705 RET Z 27A3 181D 00706 JR IOERR 00707 ; 27A5 00708 WRSYS @@WRSSC ;Write the sector 27A5+3E36 00709 LD A,54 27A7+EF 00710 RST 40 27A8 2018 00711 JR NZ,IOERR 27AA 00712 @@VRSEC ;Verify it 27AA+3E32 00713 LD A,50 27AC+EF 00714 RST 40 27AD FE06 00715 CP 6 ;Must be SYSTEM sector 27AF C8 00716 RET Z 27B0 1810 00717 JR IOERR 00718 ; 27B2 00719 WRSEC @@WRSEC ;Write normal sector 27B2+3E35 00720 LD A,53 27B4+EF 00721 RST 40 27B5 C8 00722 RET Z 27B6 180A 00723 JR IOERR 00724 ; 00725 ; Sector read routine 00726 ; 27B8 21002A 00727 RDSEC LD HL,BUF1 ;Read sector 27BB 00728 @@RDSEC 27BB+3E31 00729 LD A,49 27BD+EF 00730 RST 40 27BE C8 00731 RET Z 27BF FE06 00732 CP 6 27C1 C8 00733 RET Z ;Fall thru to error? 00734 ; 00735 ; Error exits 00736 ; 27C2 FE3F 00737 IOERR CP 63 ;Extended error? 27C4 281F 00738 JR Z,EXTERR ;Log it and quit 27C6 2600 00739 LD H,0 ;Error to HL 27C8 6F 00740 LD L,A 27C9 E5 00741 PUSH HL ;Save error code 27CA F6C0 00742 OR 0C0H ;Set short, return 27CC 4F 00743 LD C,A ;Error to C for 27CD 00744 @@ERROR ; display 27CD+3E1A 00745 LD A,26 27CF+EF 00746 RST 40 00747 ; 27D0 21E828 00748 LD HL,ABTJOB$ ;Init"Job aborted 00749 ; 27D3 00750 @@LOGOT ;Log the msg 00751 IFEQ 00H,1 00752 LD HL, 00753 ENDIF 27D3+3E0C 00754 LD A,12 27D5+EF 00755 RST 40 27D6 E1 00756 POP HL ;Recover error code 27D7 1812 00757 JR QUIT$$ 00758 ; 00759 ; Internal error handler 00760 ; 27D9 213429 00761 NIXHARD LD HL,NIXHARD$ ;"Can't to hard drive 27DC DD 00762 DB 0DDH 27DD 21F728 00763 NOT0 LD HL,NOT0$ ;"Can't do drive 0 27E0 DD 00764 DB 0DDH 27E1 210C29 00765 PRMERR LD HL,PRMERR$ ;"Parm error 27E4 DD 00766 DB 0DDH 27E5 00767 EXTERR @@LOGOT ;Display the error 00768 IFEQ 00H,1 00769 LD HL, 00770 ENDIF 27E5+3E0C 00771 LD A,12 27E7+EF 00772 RST 40 27E8 21FFFF 00773 LD HL,-1 ;Set abort code 27EB C31B26 00774 QUIT$$ JP QUIT$ 00775 ; 00776 ; Read the granule allocation table 00777 ; 27EE F6 00778 GATRD DB 0F6H ;Set NZ for test 27EF AF 00779 GATWR XOR A ;Set Z for test 27F0 E5 00780 PUSH HL 27F1 F5 00781 PUSH AF 27F2 FD5609 00782 LD D,(IY+9) ;Dir cylinder 27F5 21002A 00783 LD HL,BUF1 27F8 5D 00784 LD E,L ;Set to sector 0 27F9 F1 00785 POP AF 27FA 2807 00786 JR Z,GATRW1 ;Go if write 27FC 00787 @@RDSSC 27FC+3E55 00788 LD A,85 27FE+EF 00789 RST 40 27FF 3E14 00790 LD A,14H 2801 180C 00791 JR GATRW3 2803 00792 GATRW1 @@WRSSC 2803+3E36 00793 LD A,54 2805+EF 00794 RST 40 2806 2003 00795 JR NZ,GATRW2 ;Skip verify if error 2808 00796 @@VRSEC ;Verify the write 2808+3E32 00797 LD A,50 280A+EF 00798 RST 40 280B FE06 00799 GATRW2 CP 6 ;Expect error 6 280D 3E15 00800 LD A,15H ;Init "Gat error 280F E1 00801 GATRW3 POP HL 2810 C9 00802 RET 00803 ; 00804 ; Routine to check on floppy present 00805 ; 2811 3E28 00806 CKDRV LD A,40 ;@DCSTAT 2813 EF 00807 RST 28H 2814 202F 00808 JR NZ,ILLEG 2816 3E2C 00809 LD A,44 ;@RSTORE 2818 EF 00810 RST 28H 2819 21002A 00811 LD HL,BUF1 ;Set up for 281C C5 00812 PUSH BC ; mini ckdrv 281D 00813 @@TIME ;P/u timer ptr 281D+3E13 00814 LD A,19 281F+EF 00815 RST 40 2820 C1 00816 POP BC 2821 EB 00817 EX DE,HL ;Pt HL to 2822 2B 00818 DEC HL ; heartbeat counter 2823 3E2F 00819 LD A,47 ;@RSLCT 2825 EF 00820 RST 28H ;Wait till ready 2826 7E 00821 LD A,(HL) ;Get heartbeat count 2827 C614 00822 ADD A,20 ;Init to + 500ms 2829 57 00823 LD D,A ;Store for timeout check 282A CD3A28 00824 CK1 CALL INDEX 282D 20FB 00825 JR NZ,CK1 ;Get no pulse 282F CD3A28 00826 CK2 CALL INDEX 2832 28FB 00827 JR Z,CK2 ;Get pulse 2834 CD3A28 00828 CK3 CALL INDEX 2837 20FB 00829 JR NZ,CK3 ;Get no pulse 2839 C9 00830 RET 00831 ; 283A 7E 00832 INDEX LD A,(HL) ;Get time 283B BA 00833 CP D ;Interval expired? 283C 2806 00834 JR Z,ILLG1 283E 3E2F 00835 LD A,47 ;@RSLCT 2840 EF 00836 RST 28H 2841 CB4F 00837 BIT 1,A ;Test for index pulse 2843 C9 00838 RET 00839 ; 2844 E1 00840 ILLG1 POP HL ;Fix stack 2845 3E20 00841 ILLEG LD A,32 ;'illegal drv #' 2847 C3C227 00842 JP IOERR 00843 ; 00844 ; 00845 ; Messages 00846 ; 284A 52 00847 HELLO$ DB 'REPAIR' 45 50 41 49 52 2850 00848 *GET CLIENT:3 00849 ;CLIENT/ASM - File to establish sign-on headers 00850 ; and version numbers. 00851 ; 00852 ; EACH STRING SHOULD CONTAIN ONLY 63 CHARACTERS !! 00853 ; 00854 IF @BLD631 00855 ; 12345678901234567890123456789012345678901234567890 2850 20 00856 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 2882 49 00857 DB 'Inc., ',10 ;<631> 6E 63 2E 2C 20 20 20 20 20 20 20 0A 00858 ELSE 00859 DB ' - 6.3.0 - Copyright 1982/83/84/86 by Logical Syst' 00860 DB 'ems, Inc. ',10 00861 ENDIF 00862 ; 00863 ; DB 'All Rights Reserved. Licensed 1982/83/84 to Tandy ' 00864 ; DB 'Corporation.',10,13 00865 ; 00866 ; DB 'All Rights Reserved. Beta-TEST Level/AD, DO NOT DI' 00867 ; DB 'STRIBUTE !! ',10,13 00868 ; DB 'All Rights reserved by LSI, 8970 N. 55th St. Milwa' 00869 ; DB 'ukee, Wisc. ',10,13 288F 41 00870 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 28C1 72 00871 DB 'rohibited. ',10,13 6F 68 69 62 69 74 65 64 2E 20 20 0A 0D 00872 ; 28CF 52 00873 ALCAO$ DB 'Repair function complete',CR 65 70 61 69 72 20 66 75 6E 63 74 69 6F 6E 20 63 6F 6D 70 6C 65 74 65 0D 28E8 52 00874 ABTJOB$ DB 'REPAIR aborted',CR 45 50 41 49 52 20 61 62 6F 72 74 65 64 0D 28F7 43 00875 NOT0$ DB 'Can''t REPAIR drive 0',CR 61 6E 27 74 20 52 45 50 41 49 52 20 64 72 69 76 65 20 30 0D 290C 50 00876 PRMERR$ DB 'Parameter error',CR 61 72 61 6D 65 74 65 72 20 65 72 72 6F 72 0D 291C 49 00877 BADMPW$ DB 'Invalid master password',CR 6E 76 61 6C 69 64 20 6D 61 73 74 65 72 20 70 61 73 73 77 6F 72 64 0D 2934 43 00878 NIXHARD$ DB 'Can''t repair a hard drive',CR 61 6E 27 74 20 72 65 70 61 69 72 20 61 20 68 61 72 64 20 64 72 69 76 65 0D 00879 ; 294E 80 00880 PRMTBL$ DB 80H 0020 00881 STR EQU 20H 294F 23 00882 DB STR!3,'MPW' 4D 50 57 2953 00 00883 MRSP DB 0 2954 0727 00884 DW MPARM+1 2956 00 00885 NOP 00886 ; 2957 00887 PSWDBUF DS 8 ;Password buffer 295F 00888 HASHBUF DS 4 ;Owner & user hashes 2963 00889 FCB DS 32 2A00 00890 ORG $<-8+1<+8 2A00 00891 BUF1 DS 256 00892 ; 2600 00893 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]