MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00001 00001 ;MEMDISK/ASM - Memory Disk Driver 00003 ; 0000 00004 *GET SVCMAC:3 ;SVC Macro equivalents 00005 ;SVCMAC/ASM - LS-DOS Version VI 00006 *LIST OFF 00398 *LIST ON 0000 00400 *GET VALUES:3 ;Misc. equates 00401 ;VALUES/ASM - Version 6 00402 *LIST OFF 00429 *LIST ON 0000 00430 *GET COPYCOM:3 ;Copyright message 00431 ; COPYCOM - File for Copyright COMment block 00432 ; 0000 00433 *GET BUILDVER/ASM:3 00434 ; 00435 ; Buildver/asm is a bit of a kludge since not all utilities can load 00436 ; equates from LDOS60 and still compile. LOWCORE and everybody else 00437 ; relies on this setting, and it eventually ends up in LDOS60/EQU 00438 ; for programs that can use that. 00439 ; FFFF 00440 @BLD631 EQU -1 ;<631>Build 631 distribution (LEVEL 1B) 00441 ; These switches activate patches made since the 1B release. 00442 ; It is important that all earlier patches be enabled when a higher 00443 ; patch is enabled. 00444 ; Patches C thru F were published in TMQ IV.iv, page 32 (NOTE: the 00445 ; patch addresses listed for SPOOL in SPOOL1/FIX are 19H high.) FFFF 00446 @BLD631C EQU -1 ;<631>Apply 1C patches (SETKI) FFFF 00447 @BLD631D EQU -1 ;<631>Apply 1D patches (DIR) FFFF 00448 @BLD631E EQU -1 ;<631>Apply 1E patches (DIR & MEMDISK/DCT) FFFF 00449 @BLD631F EQU -1 ;<631>Apply 1F patches (SPOOL) 00450 ; Patches G and H were published in TMQ V.i, pages 10 and 18/19. FFFF 00451 @BLD631G EQU -1 ;<631>Apply 1G patches (//KEYIN,DIR,DO *) FFFF 00452 @BLD631H EQU -1 ;<631>Apply 1H patches (MEMORY) 00453 ; 00454 ;End of BUILDVER/ASM 00455 IF @BLD631 00457 ELSE 00458 COM '<*(C) 1982,3,4,6 by LSI*>' 00459 ENDIF 00460 ; 0A00 00461 SDBPC EQU 5*2*256 ;Single Density Bytes/Cyl 1200 00462 DDBPC EQU 6*3*256 ;Double Density Bytes/Cyl 8000 00463 LOWEST EQU 8000H ;Lowest addr for Bank 0 1300 00464 HIDRVR EQU 1300H ;Highest addr for Driver 2300 00465 BUFFER$ EQU 2300H ;Temporary I/O buffer Add 0003 00466 MINCYL EQU 3 000F 00467 WP EQU 15 ;Write Prot Disk Error # 00468 ; 00469 IF @BLD631 3000 00470 ORG 3000H 00471 ELSE 00472 ORG 2C00H 00473 ENDIF 00474 ; MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00002 00475 START 00476 IF @BLD631 3000 ED731E30 00477 LD (EXIT+1),SP ;<631> 3004 00478 @@CKBRKC ;<631>Check for break 3004+3E6A 00479 LD A,106 3006+EF 00480 RST 40 3007 2011 00481 JR NZ,ABORT1 ;<631>abort 00482 ELSE 00483 @@CKBRKC ;Check for break 00484 JR Z,STARTA ;Continue if not 00485 LD HL,-1 ; else abort 00486 RET 00487 ; 00488 STARTA EQU $ 00489 LD (EXIT+1),SP ;Save SP location 00490 ENDIF 00491 ; 00492 ; Install or Disable MemDISK 00493 ; 3009 CDF230 00494 CALL CALCDRV ;Calculate drive # 300C CD3B34 00495 CALL DOMEM ;Get type of memdisk 300F CD9632 00496 CALL INSTMEM ;Install MemDISK 00497 ; 00498 ; Exit - Clean stack, Set HL, Revector 00499 ; 3012 210000 00500 NORMEX LD HL,0 ;Normal Exit - HL = 0 3015 1806 00501 JR EXIT ;Get SP & RETurn 00502 ; 3017 CD2831 00503 ABORT CALL GETDUP ;Get duplicate DCT 00504 IF @BLD631 00505 ABORT1: 00506 ENDIF 301A 21FFFF 00507 LD HL,-1 ;Abort 00508 ; 301D 310000 00509 EXIT LD SP,$-$ ;P/u SP address 3020 00510 @@CKBRKC ;Clear break 3020+3E6A 00511 LD A,106 3022+EF 00512 RST 40 3023 C9 00513 RET 00514 ; 3024 00515 *GET MEMDISKB:3 00516 ;MEMDISKB/ASM - Miscellaneous Subroutines MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00003 ' DEC ASCII 3069 C9 00581 RET 00582 ; 00583 ; DECHEX - Convert Decimal ASCII to Hex 00584 ; 306A CD7E30 00585 DECHEX CALL GETDIG ;Get digit 306D 23 00586 INC HL ;Next byte in buffer 306E 05 00587 DEC B ;Dec digit counter 306F 280B 00588 JR Z,DONE1 ;All done 3071 57 00589 LD D,A ;Xfer to D 3072 CD7E30 00590 CALL GETDIG ;Get digit 3075 5F 00591 LD E,A ;Save digit 3076 7A 00592 LD A,D ;P/u ten's digit 3077 87 00593 ADD A,A ;Multiply 3078 87 00594 ADD A,A ; A times 10 3079 82 00595 ADD A,D ; and add it 307A 87 00596 ADD A,A ; to the ones digit 307B 83 00597 ADD A,E ;A = number of tracks 307C BF 00598 DONE1 CP A ;Set Z flag 307D C9 00599 RET ; and RETurn 00600 ; 307E 7E 00601 GETDIG LD A,(HL) ;P/u second digit 307F D630 00602 SUB '0' ;Cvt to binary 3081 3803 00603 JR C,ILLEGAL ;Clr stack & RETurn NZ 3083 FE0A 00604 CP 10 ;Legal digit 3085 D8 00605 RET C ;Yes - A = digit 3086 3C 00606 ILLEGAL INC A ;Reset Z flag 3087 E1 00607 POP HL ;Clear stack 3088 C9 00608 RET ; and RETurn 00609 ; 00610 ; Verify Error - P/u Bank / Address & display 00611 ; 3089 E5 00612 ERROR PUSH HL ;L = lsb of Address 308A 3EC9 00613 LD A,0C9H ;Modify GETADR routine 308C 326E32 00614 LD (STFRET),A ;HL <= page from DE 308F CD5932 00615 CALL GETADR 3092 D1 00616 POP DE ;E = lsb of address 3093 6B 00617 LD L,E ;HL = Bad RAM address 00618 ; 00619 ; Stuff Bank # and Address into string 00620 ; 3094 3E30 00621 LD A,'0' ;Cvt BANK # to ASCII 3096 81 00622 ADD A,C MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00006 ' string destination 309E 00626 @@HEX16 ;Cvt DE to Hex ASCII @ HL 309E+3E63 00627 LD A,99 30A0+EF 00628 RST 40 00629 ; 00630 ; Display string & restore hi/low mem 00631 ; 30A1 212F3B 00632 LD HL,BADRAM ;"BAD RAM ... 30A4 00633 @@LOGOT ;Display it 00634 IFEQ 00H,1 00635 LD HL, 00636 ENDIF 30A4+3E0C 00637 LD A,12 30A6+EF 00638 RST 40 30A7 C3EA32 00639 JP OLDRVR ;Leave & clear stack 00640 ; 00641 ; SAVEREG - Save All Primary Registers 00642 ; 30AA E3 00643 SAVEREG EX (SP),HL 30AB 22C030 00644 LD (RETADDR+1),HL 30AE E1 00645 POP HL 30AF E5 00646 PUSH HL 30B0 ED53B636 00647 LD (SAVEDE),DE 30B4 D5 00648 PUSH DE 30B5 C5 00649 PUSH BC 30B6 F5 00650 PUSH AF 30B7 11C230 00651 LD DE,RESTREG 30BA D5 00652 PUSH DE 30BB ED5BB636 00653 LD DE,(SAVEDE) 30BF C30000 00654 RETADDR JP $-$ 30C2 F1 00655 RESTREG POP AF 30C3 C1 00656 POP BC 30C4 D1 00657 POP DE 30C5 E1 00658 POP HL 30C6 C9 00659 RET 00660 ; 00661 ; CKBANK - Check if Bank C is in use 00662 ; 30C7 C5 00663 CKBANK PUSH BC ;Save BC 30C8 0602 00664 LD B,2 ;Bank in use ? 30CA 00665 @@BANK ;Check it out 30CA+3E66 00666 LD A,102 30CC+EF 00667 RST 40 30CD C1 00668 POP BC ;Recover BC 30CE C8 00669 RET Z ;RETurn if available 30CF C3D836 00670 JP BNKUSE ; else - display "in use" 00671 ; 00672 ; INPUT - Input a line to the input buffer 00673 ; 30D2 21003D 00674 INPUT LD HL,BUFFER ;HL => Input buffer MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00007 ' hit 30DB 04 00679 INC B ;Set Z if no chars 30DC 05 00680 DEC B 30DD C9 00681 RET ; else RETurn 00682 ; 00683 ; GETCYL - Get max # of cylinders in A 00684 ; 30DE D5 00685 GETCYL PUSH DE ;Save regs 30DF E5 00686 PUSH HL 00687 ; 00688 ; Init DE = # bytes/cyl, A = dividend (-1) 00689 ; 30E0 110012 00690 BPC LD DE,DDBPC ;P/u bytes/cyl 30E3 3EFF 00691 LD A,-1 ;Init avail cyl cnt = -1 00692 ; 00693 ; Divide total bytes available by Bytes/cyl 00694 ; 30E5 3C 00695 DIVLP INC A ;Bump cyl count 30E6 B7 00696 OR A 30E7 ED52 00697 SBC HL,DE ;Take off 1 cyl 30E9 30FA 00698 JR NC,DIVLP ;Loop until carry 00699 ; 00700 ; A = # of cyls avail, Restore regs 00701 ; 30EB E1 00702 POP HL ;Recover regs 30EC D1 00703 POP DE 00704 ; 00705 ; Set Z flag if more than 1 cylinder available 00706 ; 30ED FE02 00707 CP 2 ;0 or 1 ? 30EF D8 00708 RET C ;Yes - RETurn NZ 30F0 BF 00709 CP A ;Set Z flag 30F1 C9 00710 RET ; and RETurn 00711 ; 00712 ; CALCDRV - Calculate drive Number for MemDISK 00713 ; 00714 ; DE => DCT block for Drive 00715 ; 30F2 00716 CALCDRV EQU $ 30F2 EB 00717 EX DE,HL ;Xfer to HL 30F3 22B836 00718 LD (SAVEDCT),HL ;Save DCT pointer 30F6 CD1C31 00719 CALL SAVDCT ;Save DCT 30F9 7C 00720 LD A,H ;Drive number issued ? 30FA B5 00721 OR L 30FB CABC36 00722 JP Z,NODRV ;No drive entered 00723 ; 00724 ; Get Start of Drive Code Table 00725 ; 30FE 0E00 00726 LD C,0 ;Get start of DCT MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00008 ' Flags 3118+3E65 00755 LD A,101 311A+EF 00756 RST 40 311B C9 00757 RET ;Later 00758 ; 00759 ; SAVDCT - Save Old DCT setup 00760 ; 311C CDAA30 00761 SAVDCT CALL SAVEREG ;Save registers 311F 11003E 00762 LD DE,DUPDCT ;Destination 3122 010A00 00763 DOXFER1 LD BC,10 ;10 bytes to xfer 3125 EDB0 00764 LDIR 3127 C9 00765 RET 00766 ; 00767 ; GETDUP - Get Duplicate of original DCT setup 00768 ; 3128 ED5BB836 00769 GETDUP LD DE,(SAVEDCT) ;DE => DCT+0 312C 21003E 00770 LD HL,DUPDCT ;Source 312F 18F1 00771 JR DOXFER1 ;Transfer back 00772 ; 00773 ; GTDRV - P/u Next available Driver Address 00774 ; 00775 ; IX <= Driver Address Pointer 00776 ; DE <= Current Address 00777 ; 3131 E5 00778 GTDRV PUSH HL ;Save HL MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00009 ' free area 3139 E5 00784 PUSH HL ;Xfer to IX 313A DDE1 00785 POP IX 313C 56 00786 LD D,(HL) ;P/u address in DE 313D 2B 00787 DEC HL 313E 22F432 00788 LD (KIDCB$+1),HL ;Save address to stuff 3141 5E 00789 LD E,(HL) 3142 E1 00790 POP HL ;Recover HL 3143 C9 00791 RET 00792 ; 00793 ; INSTDRV - Relocate & Install Disk Driver 00794 ; 3144 EB 00795 INSTDRV EX DE,HL ;Xfer dest to HL 3145 11BA31 00796 LD DE,DRIVER ;Start of driver 3148 E5 00797 PUSH HL ;Save Source & Dest ptrs 3149 D5 00798 PUSH DE 314A B7 00799 OR A ;Clear carry 314B ED52 00800 SBC HL,DE ;Get offset 00801 ; 00802 ; Relocate internal references in driver 00803 ; 314D DD216C31 00804 LD IX,RELTBL ;Point to relocation tbl 3151 44 00805 LD B,H ;Move to BC 3152 4D 00806 LD C,L 3153 DD6E00 00807 RLOOP LD L,(IX) ;Get address to change 3156 DD6601 00808 LD H,(IX+1) 3159 7C 00809 LD A,H 315A B5 00810 OR L 315B 2829 00811 JR Z,RELDUN 315D 5E 00812 LD E,(HL) ;P/U address 315E 23 00813 INC HL 315F 56 00814 LD D,(HL) 3160 EB 00815 EX DE,HL ;Offset it 3161 09 00816 ADD HL,BC 3162 EB 00817 EX DE,HL 3163 72 00818 LD (HL),D ;Put it back 3164 2B 00819 DEC HL 3165 73 00820 LD (HL),E 3166 DD23 00821 INC IX 3168 DD23 00822 INC IX 316A 18E7 00823 JR RLOOP ;Loop till done 00824 ; 00825 ; Relocation Table for Driver 00826 ; 316C FC31 00827 RELTBL DW REL1+1,REL2+1,REL3+1,REL4+1 0C32 3D32 4332 3174 7632 00828 DW REL5+1,REL6+2,REL7+1,REL8+1,REL8A+1 DE31 E231 E831 3232 MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00010 ' Source DE => Dest 3187 D1 00834 POP DE 3188 D5 00835 PUSH DE ;Save start 3189 01DC00 00836 LD BC,LENGTH ;# bytes to move 318C EDB0 00837 LDIR ;Block move 318E D1 00838 POP DE ;Restore start 318F C9 00839 RET ;RETurn 00840 ; 00841 ; SETDCT - Set up Drive Code Table for MemDISK 00842 ; 3190 DD2AB836 00843 SETDCT LD IX,(SAVEDCT) ;IX => DCT address 3194 DD3600C3 00844 LD (IX+0),0C3H ;Enable 3198 DD7301 00845 LD (IX+1),E ;Lsb of driver 319B DD7202 00846 LD (IX+2),D ;Msb of driver 319E DD360340 00847 SDEND LD (IX+3),40H ;DD,5",floppy,step=6 31A2 DD360450 00848 SDENE LD (IX+4),50H ;DDC=Y, 1 side, ALIEN 31A6 DD360500 00849 LD (IX+5),0 ;Current Cyl = 0 31AA DD7706 00850 LD (IX+6),A ;# of tracks rel from 0 31AD DD360711 00851 SDENF LD (IX+7),17 ;18 spt (DD), 10 spt (SD) 31B1 DD360845 00852 SDENG LD (IX+8),45H ;2/3 G/C, 5/6 S/G 31B5 DD360901 00853 LD (IX+9),1 ;Directory Cyl = 1 31B9 C9 00854 RET ;RETurn 31BA 00855 *GET MEMDISKC:3 00856 ;MEMDISKC/ASM - MemDISK Driver Code MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00011 ' MemDISK Sector MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00013 ' User I/O buffer 3206 180D 00915 JR CHKDIR2 ;Check if directory cyl 00916 ; 00917 ; Transfer MemDISK sector to Temporary Buffer 00918 ; 3208 D5 00919 DOXFER PUSH DE ;DE => Temporary Buffer 3209 EDB0 00920 LDIR ;Xfer to system area 00921 ; 00922 ; Xfer data from temporary to User Buffer 00923 ; 320B CD7F32 00924 REL2 CALL GETOLD ;Get original bank 320E E1 00925 POP HL ;HL => Temporary buffer 320F D1 00926 POP DE ;DE => User I/O buffer 3210 010001 00927 LD BC,256 ;BC = 256 bytes to xfer 3213 EDB0 00928 LDIR ;Xfer to user buffer 00929 ; 00930 ; Set A = Error #6 if Cylinder 1 (Directory) 00931 ; 3215 F1 00932 CHKDIR2 POP AF ;Get Z 3216 2004 00933 CHKDIR JR NZ,NOTDIR ;Not a directory read 3218 3E06 00934 LD A,6 ;Error Code = 6 321A B7 00935 OR A ;NZ condition 321B C9 00936 RET ;And RETurn 321C AF 00937 NOTDIR XOR A ;Set Z flag 321D C9 00938 RET ;And return 00939 ; 321E FE0A 00940 B10 CP 10 ;Verify sector ? 3220 2003 00941 JR NZ,B13 ;Check more if not 00942 ; 00943 ; Verify a sector 00944 ; 3222 15 00945 DEC D ;Directory Cylinder 3223 18F1 00946 JR CHKDIR ;Check if Directory cyl 00947 ; 3225 FE0D 00948 B13 CP 13 ;Write a sector? 3227 201E 00949 JR NZ,B14 ;Check further if not 00950 ; 00951 ; Write A Sector 00952 ; 3229 3E0F 00953 WRITES LD A,WP ;WP error X'0F' 322B FDCB037E 00954 BIT 7,(IY+3) ;Software Write Protect? 322F C0 00955 RET NZ ;Return with error 00956 ; 00957 ; Set up for Tranfer to Temporary Buffer 00958 ; 3230 D5 00959 PUSH DE ;Save Cyl/Sector MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00014 ' sector, C = Default bank (0 or 1) 01010 ; 3263 67 01011 LD H,A ;Stuff msb in H MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00015 ' X'7FFF' 01016 ; 3268 07 01017 RLCA ;Address > X'7FFF' ? 3269 3001 01018 JR NC,GOTBANK ;No - got it 326B 0C 01019 INC C ;Yes - Set C = 2 01020 ; 01021 ; Force address > X'7FFF' & Select Bank C 01022 ; 326C CBFC 01023 GOTBANK SET 7,H ;Force Address > X'7FFF' 326E 45 01024 STFRET LD B,L ;Bring in Bank C 326F 01025 @@BANK 326F+3E66 01026 LD A,102 3271+EF 01027 RST 40 01028 ; 01029 ; Pick up Bank previously in use & Save 01030 ; 3272 79 01031 LD A,C ;P/u last bank 3273 E67F 01032 AND 7FH ;Ignore Hi-bit 3275 328032 01033 REL5 LD (GETOLD+1),A ; and stuff away 01034 ; 01035 ; Set DE => Overlay Buffer, BC = 256 01036 ; 3278 CD8632 01037 REL8B CALL GETBUF ;Get buffer ptr 327B 010001 01038 LD BC,256 ;Set BC = 256 327E C9 01039 RET 01040 ; 01041 ; OLDBNK - Get original Bank used 01042 ; 327F 010000 01043 GETOLD LD BC,$-$ ;B = 0, C = Bank # 3282 01044 @@BANK ;Get bank 3282+3E66 01045 LD A,102 3284+EF 01046 RST 40 3285 C9 01047 RET 01048 ; 01049 ; GETBUF - Get Buffer ptr to LDIR from or to 01050 ; 3286 E5 01051 GETBUF PUSH HL ;Save source/dest ptr 3287 110000 01052 BUFF LD DE,$-$ ;P/u requested I/O buffer 328A 21007F 01053 LD HL,7F00H ;Use (BUFF+1) if < 7F00H 328D B7 01054 OR A 328E ED52 01055 SBC HL,DE ;Past 7F00H ? 3290 E1 01056 POP HL ;Rcvr ptr 3291 D0 01057 RET NC ;No - use requested buff 3292 110023 01058 LD DE,BUFFER$ ;Yes - use BUFFER$ 3295 C9 01059 RET 01060 ; 00DC 01061 LENGTH EQU $-DRIVER ;Length of Driver 3296 01062 *GET MEMDISKA:3 01063 ;MEMDISKA/ASM - Memdisk Initialization MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00016 ' Destination 32A4 21653B 01082 LD HL,RE_USE ;Set re-use flag 32A7 34 01083 INC (HL) 32A8 21DB00 01084 LD HL,LENGTH-1 ;Set HL = last used 32AB 19 01085 ADD HL,DE ; address of driver 32AC 22BC31 01086 LD (OLDHIGH),HL ;Xfer into driver 32AF 1827 01087 JR DO_INST ;Install driver 01088 ; 01089 ; Driver is not in memory - is there room ? 01090 ; 32B1 CD3131 01091 NOT__IN CALL GTDRV ;P/u low driver ptr 32B4 ED53EB32 01092 LD (OLDRVR+1),DE ;Save it 32B8 21DB00 01093 LD HL,LENGTH-1 ;HL = length of driver 32BB 010013 01094 LD BC,HIDRVR ;BC = 1 + highest avail 32BE 19 01095 ADD HL,DE ;HL => Last used by Mem 32BF 22BC31 01096 LD (OLDHIGH),HL 32C2 23 01097 INC HL 32C3 B7 01098 OR A 32C4 E5 01099 PUSH HL ;Will MemDisk fit ? 32C5 ED42 01100 SBC HL,BC 32C7 E1 01101 POP HL 32C8 3808 01102 JR C,OKTOGO ;Yes - let's do it 01103 ; 01104 ; Insufficient Driver space 01105 ; 32CA 21D036 01106 LD HL,NOMEM ;Alter exit message 32CD 220D33 01107 LD ($NOT+1),HL 32D0 1818 01108 JR OLDRVR ;Reclaim hi mem if bank 0 01109 ; 01110 ; Save next avail mem addr & set Memdisk bit 01111 ; 32D2 DD7400 01112 OKTOGO LD (IX),H ;Stuff msb 32D5 DD75FF 01113 LD (IX-1),L ;Stuff lsb 01114 ; 01115 ; Install MemDISK driver & set up DCT 01116 ; 32D8 CD4431 01117 DO_INST CALL INSTDRV ;Relocate, install driver MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00019 ' I/O buffer 01175 ; 01176 ; Fill BOOT/SYS with Zeroes 01177 ; 3330 77 01178 FILBUF LD (HL),A ;Stuff in byte 3331 2C 01179 INC L ;One sector to 3332 20FC 01180 JR NZ,FILBUF ; fill 01181 ; 01182 ; Write # of Sectors in BOOT 01183 ; 3334 57 01184 LD D,A ;Cylinder 0 3335 5F 01185 LD E,A ;Sector 0 3336 0606 01186 BTSECS LD B,6 ;P/u Sec cnt - 5,6, or 18 3338 CDBD33 01187 BTLP CALL WRSEC ;Write sector 333B 1C 01188 INC E ;Bump 333C 10FA 01189 DJNZ BTLP 01190 ; 01191 ; Write Directory Cylinder byte in Sector Zero 01192 ; 333E 2E02 01193 LD L,2 ;Byte 2 3340 3601 01194 LD (HL),1 ;Directory cyl = 1 01195 ; 01196 ; Write Sector 0 of Cylinder 0 01197 ; 3342 110000 01198 LD DE,0 ;Cylinder 0, Sector 0 3345 CDBD33 01199 CALL WRSEC ;Write Sector 01200 ; 01201 ; Make a duplicate of sector 0 in sector 1 01202 ; 3348 1C 01203 INC E ;Sector 1 3349 CDBD33 01204 CALL WRSEC ;Write sector 01205 ; 01206 ; Write C/R in Auto Buffer in Sector 2 01207 ; 334C 1E02 01208 LD E,2 ;Sector 2 334E 2E20 01209 LD L,20H ;Byte X'20' 3350 360D 01210 LD (HL),CR ;No auto 3352 CDBD33 01211 CALL WRSEC ;Write sector 3355 C9 01212 RET ;RETurn for now 01213 ; 01214 ; WRGAT - Write Granule Allocation Table 01215 ; 01216 ; 3356 21003C 01217 WRGAT LD HL,IOBUFF ;HL => I/O buffer 3359 36F9 01218 GAT0 LD (HL),0F9H ;DD - X'F9', SD - X'FD' 335B 23 01219 INC HL ;Bump 01220 ; 01221 ; Lock out next X'CA' bytes in GAT MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00021 ' next GAT byte 336B 77 01238 LD (HL),A ;GAT + X'CC'= tracks - 35 01239 ; 01240 ; GAT + X'CD' 01241 ; 336C 23 01242 INC HL ;GAT + X'CD' = 336D 364A 01243 GATCD LD (HL),4AH ;DDEN, 1 side, 3 gran/cyl 01244 ; 01245 ; GAT + X'CE' & X'CF' 01246 ; 336F 23 01247 INC HL ;GAT + X'CE' & X'CF' = 3370 36E0 01248 LD (HL),0E0H ;16-bit Hash code of 3372 23 01249 INC HL ;"PASSWORD" 3373 3642 01250 LD (HL),42H ;Hash = X'42E0' 01251 ; 01252 ; GAT + X'D0' - X'D7' 01253 ; 3375 23 01254 INC HL ;HL => next GAT byte 3376 11B638 01255 LD DE,MEMDISK ;"MEMDISK " is Pack name 3379 0E08 01256 LD C,8 ;Eight bytes 337B EB 01257 EX DE,HL ;Swap 'em for LDIR 337C EDB0 01258 LDIR ;Stuff in ID 337E EB 01259 EX DE,HL ;HL => GAT + X'D8' 01260 ; 01261 ; GAT + X'D8' - X'DF' 01262 ; 337F 01263 @@DATE ;Stuff date in GAT 337F+3E12 01264 LD A,18 3381+EF 01265 RST 40 01266 ; 01267 ; Stuff GAT tracks in use with either X'F8' or X'FC' 01268 ; 3382 3EF8 01269 GPC LD A,0F8H ;3 gran/cyl 3384 21023C 01270 LD HL,IOBUFF+2 ;HL => GAT + X'02' 3387 C1 01271 POP BC ;B = # cylinders 3388 05 01272 DEC B ;Subtract 2 to account 3389 05 01273 DEC B ;For BOOT and DIR MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00022 ' Lockout 3390 77 01284 LD (HL),A 3391 2C 01285 INC L 3392 77 01286 LD (HL),A 01287 ; 01288 ; GAT + X'62' - GAT + X'BF' 01289 ; 3393 2E02 01290 LD L,2 ;HL => GAT + X'02' 3395 54 01291 LD D,H ;Xfer to DE 3396 5D 01292 LD E,L 3397 0E60 01293 LD C,60H ;Of X'60' for the 3399 09 01294 ADD HL,BC ; duplicate of top 339A 0D 01295 DEC C ;Only duplicate X'5E' 339B 0D 01296 DEC C ; bytes 339C EB 01297 EX DE,HL ;Prepare for LDIR 339D EDB0 01298 LDIR ;HL => GAT, DE => Lockout 01299 ; 339F 11F53C 01300 LD DE,IOBUFF+255-10 ;6.2 Media Data Block 33A2 21B633 01301 LD HL,LSIID ;Point to header 33A5 010400 01302 LD BC,04 ;Set length 33A8 EDB0 01303 LDIR ;Move it 33AA 2AB836 01304 LD HL,(SAVEDCT) ;The data to move 33AD 23 01305 INC HL 33AE 23 01306 INC HL 33AF 23 01307 INC HL 33B0 0E07 01308 LD C,7 ;Bytes to move 33B2 EDB0 01309 LDIR ;Move it in 33B4 1804 01310 JR WRGAT1 ;Skip around string 01311 IF @BLD631 33B6 03 01312 LSIID DB 03,'631' ;<631> 36 33 31 01313 ELSE 01314 LSIID DB 03,'LSI' 01315 ENDIF 01316 ; 33BA 110001 01317 WRGAT1 LD DE,100H ;D = Cyl 1, E = Sector 0 01318 ; 01319 ; WRSEC - Write A sector to MemDISK drive 01320 ; 33BD 21003C 01321 WRSEC LD HL,IOBUFF ;I/O buffer 33C0 0E00 01322 DRIVE LD C,$-$ ;P/u drive # 33C2 01323 @@WRSEC ;Write Sector 33C2+3E35 01324 LD A,53 MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00023 ' I/O Buffer 33C9 3AC133 01331 LD A,(DRIVE+1) ;P/u drive # 33CC 4F 01332 LD C,A ;Xfer to C 33CD 01333 @@RDSEC ;Read sector 33CD+3E31 01334 LD A,49 33CF+EF 01335 RST 40 33D0 C9 01336 RET ; and RETurn 01337 ; 01338 ; WRHIT - Write HIT sector in directory 01339 ; 33D1 AF 01340 WRHIT XOR A ;Set A = 0 33D2 77 01341 ZEROHIT LD (HL),A ;Zero HIT position 33D3 2C 01342 INC L ;Bump HIT pointer 33D4 20FC 01343 JR NZ,ZEROHIT ;256 positions 33D6 36A2 01344 LD (HL),0A2H ;Hash for BOOT/SYS 33D8 2C 01345 INC L ;HL => HIT + X'01' 33D9 36C4 01346 LD (HL),0C4H ;Hash for DIR/SYS 33DB 1C 01347 INC E ;D = Cyl 1, Sector 1 33DC 18DF 01348 JR WRSEC ;Write Sector & RETurn 01349 ; 01350 ; WRENT - Write DIR/SYS & BOOT/SYS entries 01351 ; 33DE 11FB33 01352 WRENT LD DE,BOOT ;BOOT/SYS byte field 33E1 EB 01353 EX DE,HL ;Swap for LDIR 33E2 012000 01354 LD BC,32 ;32 bytes in entry 33E5 EDB0 01355 LDIR ;Block move 33E7 110201 01356 LD DE,102H ;D = Cyl 1, E = Sector 2 33EA CDBD33 01357 CALL WRSEC ;Write Sector 01358 ; 33ED 012000 01359 LD BC,32 33F0 EB 01360 EX DE,HL ;Xfer buffer ptr to DE 33F1 211B34 01361 LD HL,DIR ;HL => DIR/SYS bytes 33F4 EDB0 01362 LDIR ;Xfer to MemDISK 33F6 110301 01363 LD DE,103H ;D = Cyl 1, E = Sector 3 33F9 18C2 01364 JR WRSEC ;Write sector & RETurn 01365 ; 01366 ; BOOT/SYS directory entry data 01367 ; 33FB 5E 01368 BOOT DB 01011110B ;No access,inv,sys,FPDE 33FC 0000 01369 DW 0 ;Date = 00/00/00 33FE 0000 01370 DW 0 ;EOF offset = 0, LRL=256 3400 42 01371 DB 'BOOT ' ;Name field 4F 4F 54 20 20 20 20 3408 53 01372 DB 'SYS' ;Extension 59 53 01373 IF @BLD631E 340B F471 01374 DW 071F4H ;<631E>Owner password hash MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00024 'Owner password hash 01396 ELSE 01397 DW 037F6H ;Owner password hash 01398 ENDIF 342D 9642 01399 DW 04296H ;User password hash 342F 1200 01400 DIRERN DW 18 ;ERN+1 = 10 or 18 3431 01 01401 DB 1 ;Starts on cylinder 1 3432 02 01402 SDENI DB 00000010B ;St. gran=0, 3 cont grans 3433 FFFF 01403 DW 0FFFFH ;No Second Extent 3435 FFFF 01404 DW 0FFFFH ;No Third Extent 3437 FFFF 01405 DW 0FFFFH ;No Fourth Extent 3439 FF 01406 DB 0FFH ;No further records 343A FF 01407 DB 0FFH 01408 ; 01409 ; DOMEM - Issue Prompts & take inputs for type 01410 ; 343B 21E536 01411 DOMEM LD HL,HELLO$ ;Display message 343E 01412 @@DSPLY 01413 IFEQ 00H,1 01414 LD HL, 01415 ENDIF 343E+3E0A 01416 LD A,10 3440+EF 01417 RST 40 01418 ; 01419 ; Check if entry from SYSTEM (DRIVER= command 01420 ; 3441 01421 @@FLAGS 3441+3E65 01422 LD A,101 3443+EF 01423 RST 40 3444 FDCB025E 01424 BIT 3,(IY+'C'-'A') ;System request? MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00025 ' ? - re-input 01439 ; 01440 ; Convert input A-E to 0-4 01441 ; 3458 7E 01442 LD A,(HL) ;P/u first character 3459 CBAF 01443 RES 5,A ;Convert to U/C 345B D641 01444 SUB 'A' ; - Bank 0 ? 345D 322530 01445 LD (SETBANK+1),A ;Save type of MemDISK 3460 4F 01446 LD C,A ;Xfer to C for @BANK 01447 ; 01448 ; If input is illegal then re-input 01449 ; 3461 38E8 01450 JR C,GETYPE ;Less - re-input 3463 FE04 01451 CP 4 ; - Disable MemDISK 3465 CA8835 01452 JP Z,DISMEM ;Yes - take it out 3468 30E1 01453 JR NC,GETYPE ;>4 - Re-input 01454 ; 01455 ; Check if MemDISK is already active 01456 ; 346A FDCB0366 01457 BIT 4,(IY+DFLAG$) ;MemDISK already active ? 346E C2C836 01458 JP NZ,MEMIN ;Yes - abort 01459 ; 01460 ; If Type A,B,C - Check Bk, D - Check bks 1&2 01461 ; 3471 C5 01462 PUSH BC ;Save Bank # 3472 FE03 01463 CP 3 ;Type "D" ? 3474 2006 01464 JR NZ,A_B_C ;No - "A", "B", or "C" 01465 ; 01466 ; Type "D" - See if both banks 1 & 2 are avail 01467 ; 3476 0E01 01468 TYPED LD C,1 ;Bank #1 active ? 3478 CDC730 01469 CALL CKBANK 347B 0C 01470 INC C ;Bank #2 active ? 347C CDC730 01471 A_B_C CALL CKBANK 347F C1 01472 POP BC ;C = Bank # (0,1,2,3) 01473 ; 01474 ; Stuff Default Bank # and offset into driver 01475 ; 3480 79 01476 LD A,C ;P/u bank # MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00026 ' - use default 01501 ; 01502 ; ouble Density input ? 01503 ; 34A4 7E 01504 LD A,(HL) ;P/u first char 34A5 CBAF 01505 RES 5,A ;Convert to U/C 34A7 FE44 01506 CP 'D' ;ouble Density ? 34A9 2851 01507 JR Z,DEFAULT ;Yes - use 6 sectors/gran 01508 ; 01509 ; ingle Density input ? 01510 ; 34AB FE53 01511 CP 'S' ;ingle Density ? 34AD 20E8 01512 JR NZ,INPDENS ;No - input density again 01513 ; 01514 ; Single Density - Change driver math 01515 ; 34AF 3E82 01516 LD A,82H ;ADD A,D instruction 34B1 325E32 01517 LD (SDENB),A 34B4 3E87 01518 LD A,87H ;ADD A,A instruction 34B6 325F32 01519 LD (SDENC),A 34B9 3E09 01520 LD A,9 34BB 32B031 01521 LD (SDENF+3),A ;DCT + 7 34BE 326835 01522 LD (SPC+1),A ;Save in CALCSIZ routine 34C1 3C 01523 INC A ;SDEN BOOT ERN = 10 34C2 322F34 01524 LD (DIRERN),A ;SDEN DIR/SYS ERN = 10 34C5 3E24 01525 LD A,24H 34C7 32B431 01526 LD (SDENG+3),A ;DCT + 8 34CA 3E32 01527 LD A,'2' ;Change size to 2.50K 34CC 321E38 01528 LD (FRTRK1),A ;Space per cylinder MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00027 ' # BOOT sectors 34F5 35 01545 DEC (HL) ;Use 5 instead of 6 34F6 21000A 01546 LD HL,SDBPC ;Change GETCYL routine 34F9 22E130 01547 LD (BPC+1),HL 01548 ; 01549 ; Calculate # of possible cylinders 01550 ; 34FC 3A2530 01551 DEFAULT LD A,(SETBANK+1) ;P/u type of memdisk 34FF 4F 01552 LD C,A ;Save in C 3500 B7 01553 OR A ;Bank 0 ? 3501 280A 01554 JR Z,PIKUPHI ;Yes - use HIGH$ 01555 ; 01556 ; Bank #1, #2, or #1 & #2 01557 ; 3503 21FF7F 01558 LD HL,7FFFH ;HL = # bytes in 1 bank 3506 FE03 01559 CP 3 ;Bank 1 & 2 ? 3508 201F 01560 JR NZ,CALCYL ;No - use X'7FFF' 350A 65 01561 LD H,L ;Set HL = X'FFFF' 350B 181C 01562 JR CALCYL 01563 ; 01564 ; Bank Zero request - calculate free mem avail 01565 ; 350D AF 01566 PIKUPHI XOR A ;Set A = 0 350E ED62 01567 SBC HL,HL ;HL = 0 3510 47 01568 LD B,A ;B = 0 3511 01569 @@HIGH$ ;P/u HIGH$ 3511+3E64 01570 LD A,100 3513+EF 01571 RST 40 3514 22C438 01572 LD (MDDATA+2),HL ;Save HIGH$ 3517 22C231 01573 LD (OLD_HI),HL ;Save HIGH$ in driver 351A 23 01574 INC HL ;Set HL = last page 351B 25 01575 DEC H 351C 6F 01576 LD L,A 351D 226D35 01577 LD (SAVPAGE+1),HL ;Save page boundary 3520 110080 01578 LD DE,LOWEST ;DE = lowest 3523 AF 01579 XOR A 3524 ED52 01580 SBC HL,DE ;HL = amount free MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00028 ' Destination 3540 72 01599 LD (HL),D ;Msb 3541 23 01600 INC HL 3542 73 01601 LD (HL),E ;Lsb 01602 ; 01603 ; A = # of Cyls poss, put in string if bank 0 01604 ; 3543 0C 01605 INC C ;Bank Zero request ? 3544 0D 01606 DEC C 3545 C0 01607 RET NZ ;No - done prompting 01608 ; 01609 ; Display Cylinders string & input # of cyls 01610 ; 3546 210338 01611 REDO LD HL,FRTRACK ;How many cylinders 3549 01612 @@DSPLY 01613 IFEQ 00H,1 01614 LD HL, 01615 ENDIF 3549+3E0A 01616 LD A,10 354B+EF 01617 RST 40 354C 0602 01618 LD B,2 ;Input # of cyls 354E CDD230 01619 CALL INPUT 3551 28F3 01620 JR Z,REDO ;Reinput it 01621 ; 01622 ; Check if input legal 01623 ; 3553 CD6A30 01624 CALL DECHEX ;Convert # to Hex 3556 20EE 01625 JR NZ,REDO ;Illegal - Re-input 3558 FE03 01626 CP MINCYL ;Less than minimum? 355A 38EA 01627 JR C,REDO 355C FE00 01628 MAXCYL CP $-$ ;P/u max # of cyls 355E 30E6 01629 JR NC,REDO ;Too many - reinput 3560 326633 01630 LD (CYLS+1),A ;New # of cylinders 01631 ; 01632 ; CALCSIZ - Calculate Size of Cyl request MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00029 ' driver add start 35A2 23 01688 INC HL ;Pos'n to length byte 35A3 23 01689 INC HL 35A4 23 01690 INC HL 35A5 23 01691 INC HL 01692 ; 01693 ; P/u length byte & pt to driver name 01694 ; 35A6 46 01695 LD B,(HL) ;P/u length byte 35A7 23 01696 INC HL ;HL => Driver Name 35A8 11BE38 01697 LD DE,MD$ ;DE => MEMDISK 01698 ; 01699 ; Is this REALLY a certified MemDISK ?? 01700 ; 35AB 1A 01701 MEMLP LD A,(DE) ;P/u MemDISK byte 35AC BE 01702 CP (HL) ;Match ? 35AD 23 01703 INC HL ;Bump driver ptr 35AE 13 01704 INC DE ;Bump string ptr 35AF C2CC36 01705 JP NZ,NOTMEM ;No - isn't a MemDISK 35B2 10F7 01706 DJNZ MEMLP ;Yes - check all posns 01707 ; 01708 ; Pick up Old HIGH$ address & stuff for later 01709 ; 35B4 5E 01710 LD E,(HL) ;P/u old HIGH$ 35B5 23 01711 INC HL 35B6 56 01712 LD D,(HL) 35B7 ED53EA35 01713 LD (SAVEOLD+1),DE ;Stuff into LD HL inst 01714 ; 01715 ; P/u BANK information 01716 ; 35BB FDCB03A6 01717 RES 4,(IY+DFLAG$) ;Reset MemDISK bit 35BF 23 01718 INC HL ;HL => Bank image 35C0 7E 01719 LD A,(HL) ;P/u bank image 35C1 4F 01720 LD C,A ;Xfer to C 35C2 FE03 01721 CP 3 ;Both banks 1 & 2 ? 35C4 3805 01722 JR C,FRBANK ;No - free up bank 35C6 0D 01723 DEC C ;Set C = 2 35C7 CD3830 01724 CALL FREBANK ;Free bank #2 35CA 0D 01725 DEC C ;Set C = 1 35CB CD3830 01726 FRBANK CALL FREBANK ;Free Bank in C 01727 ; 01728 ; Is this a Bank Zero MemDISK ? 01729 ; 35CE FD215C3B 01730 LD IY,TYPEDIS ;IY => Disable Type 35D2 0C 01731 INC C ;Is C = 0 ? 35D3 0D 01732 DEC C 35D4 201C 01733 JR NZ,GTDRV2 ;No - check out driver 01734 ; 01735 ; Bank 0 - p/u last HIGH$ from Driver storage 01736 ; MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00031 ' Driver Address 35FC 2016 01771 JR NZ,NORECLM ;No - can't Reclaim 01772 ; 01773 ; Stuff original Address into low driver ptr 01774 ; 35FE DD7400 01775 LD (IX),H ;Msb 3601 DD75FF 01776 LD (IX-1),L ;Lsb 3604 FD3400 01777 INC (IY) ;Change type 3607 FD3400 01778 INC (IY) 01779 ; 01780 ; Clear out Driver 01781 ; 360A 01DB00 01782 LD BC,LENGTH-1 ;BC = # of bytes clr 360D 3600 01783 LD (HL),0 ;Null byte 360F 54 01784 LD D,H ;Set DE = HL+1 3610 5D 01785 LD E,L 3611 13 01786 INC DE 3612 EDB0 01787 LDIR ;Clear area 01788 ; MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00032 ' DCT + 0 3615 36C9 01792 LD (HL),0C9H ;Disable it 01793 ; 01794 ; Calculate Start of Disable string 01795 ; 3617 FDE5 01796 PUSH IY ;Xfer to HL 3619 E1 01797 POP HL 361A 4E 01798 LD C,(HL) ;P/u type 361B CB21 01799 SLA C ;Multiply by 2 361D 0600 01800 LD B,0 ;BC = offset in table 361F 23 01801 INC HL ;HL => Address Table 3620 09 01802 ADD HL,BC ;HL => Add of mess string 3621 5E 01803 LD E,(HL) ;P/u Address 3622 23 01804 INC HL 3623 56 01805 LD D,(HL) 3624 EB 01806 EX DE,HL ;HL => Disable message 3625 01807 @@LOGOT ;Log message 01808 IFEQ 00H,1 01809 LD HL, 01810 ENDIF 3625+3E0C 01811 LD A,12 3627+EF 01812 RST 40 3628 C31D30 01813 JP EXIT ;Go to exit routine 01814 ; 01815 ; FORMAT - Format Memory 01816 ; 362B 21AE3A 01817 FORMAT LD HL,VERIFY ;"Verifying RAM ..." 362E 01818 @@DSPLY ;Display it 01819 IFEQ 00H,1 01820 LD HL, 01821 ENDIF 362E+3E0A 01822 LD A,10 3630+EF 01823 RST 40 3631 1600 01824 LD D,00 ;Track counter 01825 ; 01826 ; Display Current Cylinder Formatting 01827 ; 3633 7A 01828 WIPELP LD A,D ;Get track counter 3634 CD4030 01829 CALL DECASC2 ;Display Dec ASCII equiv. 01830 ; 01831 ; Run 4 different bit tests on each cylinder 01832 ; 3637 3EFF 01833 LD A,11111111B ;All bits on 3639 CD5936 01834 CALL VERCYL ;Verify track w/ bits on 363C 3E55 01835 LD A,01010101B ;Next pattern 363E CD5936 01836 CALL VERCYL 3641 3EAA 01837 LD A,10101010B ;Last pattern 3643 CD5936 01838 CALL VERCYL 3646 3E00 01839 LD A,00000000B ;All bits off 3648 CD5936 01840 CALL VERCYL ;Verify track w/ bits off MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00033 ' I/O buffer 365C 1E00 01863 LD E,0 ;Init to sector 0 01864 ; 01865 ; Fill buffer with specified byte 01866 ; 365E 77 01867 STUFLP LD (HL),A ;Stuff into buffer 365F 2C 01868 INC L ;Bump 3660 20FC 01869 JR NZ,STUFLP ;256 bytes to fill 01870 ; 01871 ; Write the sector & read it back 01872 ; 3662 F5 01873 CYLP PUSH AF ;Save fill byte 3663 CDBD33 01874 CALL WRSEC ;Write Sector 3666 CDC633 01875 CALL RDSEC ;Read into other buff 3669 F1 01876 POP AF ;A = Fill byte 01877 ; 01878 ; Check if sector read back has correct byte 01879 ; 366A BE 01880 CKLP CP (HL) ;Match ? 366B C28930 01881 JP NZ,ERROR ;No - error 366E 2C 01882 INC L ;Done with sector ? 366F 20F9 01883 JR NZ,CKLP ;256 bytes to check 01884 ; 01885 ; Advance to next sector 01886 ; 3671 7B 01887 LD A,E ;P/u sector # 3672 DDBE07 01888 CP (IX+7) ;Finished ? 3675 7E 01889 LD A,(HL) ;P/u cylinder byte 3676 13 01890 INC DE ;Bump E 3677 20E9 01891 JR NZ,CYLP ;DCT+8 sectors to check 3679 C9 01892 RET ;Done - RETurn MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00034 'o ? 36AD 2805 01943 JR Z,RESZF ;RETurn NZ 36AF FE59 01944 CP 'Y' ;es ? MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00035 ' 2D 20 36 2E 33 2E 31 20 MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00036 ' 6E 63 2E 2C 20 20 20 20 20 20 20 0A 01996 ELSE 01997 DB ' - 6.3.0 - Copyright 1982/83/84/86 by Logical Syst' 01998 DB 'ems, Inc. ',10 01999 ENDIF 02000 ; 02001 ; DB 'All Rights Reserved. Licensed 1982/83/84 to Tandy ' 02002 ; DB 'Corporation.',10,13 02003 ; 02004 ; DB 'All Rights Reserved. Beta-TEST Level/AD, DO NOT DI' 02005 ; DB 'STRIBUTE !! ',10,13 02006 ; DB 'All Rights reserved by LSI, 8970 N. 55th St. Milwa' 02007 ; DB 'ukee, Wisc. ',10,13 372B 41 02008 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 375D 72 02009 DB 'rohibited. ',10,13 6F 68 69 62 69 74 65 64 2E 20 20 0A 0D 02010 ; 376B 0A 02011 BANKS DB LF,' Bank 0 (Primary Memory)',LF 3C 41 3E 20 20 42 61 6E 6B 20 30 20 28 50 72 69 6D 61 72 79 20 4D 65 6D 6F 72 79 29 0A 3789 3C 02012 DB ' Bank 1',LF 42 3E 20 20 42 61 6E 6B 20 31 0A 3795 3C 02013 DB ' Bank 2',LF 43 3E 20 20 42 61 6E 6B 20 32 0A 37A1 3C 02014 DB ' Banks 1 and 2',LF 44 3E 20 20 42 61 6E 6B 73 20 31 20 61 6E 64 20 32 0A 37B4 3C 02015 DB ' Disable MemDISK',LF,LF 45 3E 20 20 44 69 73 61 62 6C 65 20 4D 65 6D 44 49 53 4B 0A 0A MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00037 ', , , , or ? ',ETX 41 3E 2C 20 3C 42 3E 2C 20 3C 43 3E 2C 20 3C 44 3E 2C 20 6F 72 20 3C 45 3E 20 3F 20 03 02018 ; 3803 4E 02019 FRTRACK DB 'Note: Each Cylinder equals ' 6F 74 65 3A 20 45 61 63 68 20 43 79 6C 69 6E 64 65 72 20 65 71 75 61 6C 73 20 381E 34 02020 FRTRK1 DB '4.50K of space.',LF 2E 35 30 4B 20 6F 66 20 73 70 61 63 65 2E 0A 382E 4E 02021 DB 'Number of free Cylinders: ',MINCYL+'0'&0FFH,'-' 75 6D 62 65 72 20 6F 66 20 66 72 65 65 20 43 79 6C 69 6E 64 65 72 73 3A 20 33 2D 384A 30 02022 FRTRK2 DB '00 ? ',ETX 30 20 3F 20 03 02023 ; 3850 53 02024 DENSITY DB 'Single or Double Density ? ',ETX 69 6E 67 6C 65 20 6F 72 20 44 6F 75 62 6C 65 20 44 65 6E 73 69 74 79 20 3C 53 2C 44 3E 20 3F 20 03 02025 ; 3872 44 02026 DOFORM DB 'Destination MemDISK contains Data',LF 65 73 74 69 6E 61 74 69 6F 6E 20 4D 65 6D 44 49 53 4B 20 63 6F 6E 74 61 69 6E 73 20 44 61 74 61 0A 02027 ; 3894 44 02028 STILLFM DB 'Do you wish to Format it ? ',ETX 6F 20 79 6F 75 20 77 69 73 68 20 74 6F 20 46 6F 72 6D 61 74 20 69 74 20 3C 59 2F 4E 3E 20 3F 20 03 02029 ; 38B6 4D 02030 MEMDISK DB 'MEMDISK ' 45 4D 44 49 53 4B 20 38BE 24 02031 MD$ DB '$MD',ETX 4D 44 03 MISOSYS EDAS-4.3 04/19/99 21:56:20 MEMDISK/DCT - LS-DOS 6.2 Page 00038 '