[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 ; & check
275A 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]