; UNMDISK.ASM BY ERIK A MCBETH DECEMBER 1986 ; PLEASE DISTRIBUTE BUT DON'T SELL!! ; ONCE MODIFIED AND ASSEMBLED, UNMDISK.COM WILL "REMOVE" THE MEMORY ; DISK SET UP BY MEM?.COM (OR PLAIN MDISK.COM) SINCE MEM?.COM MODIFIES ; THE BIOS JUMP TABLE. THIS SHOULD WORK WITH OTHER PROGRAMS THAT MESS ; WITH THIS JUMP TABLE ; WHAT YOU WILL NEED ; 1) ASM.COM (OR CLONE) ; 2) LOAD.COM (OR CLONE) ; 3) TELL.COM ; 4) AN EDITOR ; 5) TPA.COM (OPTIONAL) ; ; WHAT TO DO ; 1) RUN TELL.COM (GET A HARD COPY USING ^P) ; 2) FIND SECTION OF PROGRAM WITH R????? EQU 0????H AND ENTER VALUES THAT ; TELL.COM GIVES YOU (THE VALUES ARE IN THE ORDER OF TELL, RCONIN IS ; Console Input routine (waits for char.) ; 3) ASSEMBLE WITH ASM (ASM UNMDISK) ; 4) LOAD WITH LOAD (LOAD UNMDISK) ; 5) RUN NM ; 6) RUN TELL.COM AGAIN AND MAKE SURE THE NUMBERS ARE THE SAME AS THOSE ; PREVIOUS ; 7) RUN MEM?.COM ; 8) WHEN YOU DON'T THE MDISK ANY LONGER, RUN UNMDISK.COM ; 9) USE TPA.COM IF YOU WANT TO CONFIRM THAT UNMDISK IS DOING IT'S JOB ; ERIK A MCBETH ; 22635 IRIS AVE ; TORRANCE, CA 90505 ; I'M GOING TO TRY AND REWRITE MEM?.COM SO THAT IT WILL STORE THE ORIGINAL ; BIOS JUMP TABLE AND RESTORE IT WHEN YOU RUN IT AGAIN. BDOS EQU 0005H PSTRING EQU 09H ; SHOULDN'T NEED TO TOUCH THESE ; THE OFFSET SIMPLY ADDS A ONE TO THE ADDRESS SO THAT WE PUT OUR CORRECT ; JUMP ADDRESS DOWN ON THE MODIFIED ADDRESS AND NOT ON JMP (CODE C3) OFFSET EQU 01H CBOOT EQU 00H + OFFSET WBOOT EQU 03H + OFFSET CONST EQU 06H + OFFSET CONIN EQU 09H + OFFSET CONOUT EQU 0CH + OFFSET LIST EQU 0FH + OFFSET PUNCH EQU 12H + OFFSET READER EQU 15H + OFFSET HOME EQU 18H + OFFSET SELDSK EQU 1BH + OFFSET SETTRK EQU 1EH + OFFSET SETSEC EQU 21H + OFFSET SETDMA EQU 24H + OFFSET READ EQU 27H + OFFSET WRITE EQU 2AH + OFFSET LISTST EQU 2DH + OFFSET SECTRAN EQU 30H + OFFSET ; THESE WILL BE CHANGED USING TELL.COM, IF YOU DON'T CHANGE THESE YOU ; MAY END UP EITHER REFORMATING OR SCREWING SOMETHING UP (NOTHING REALLY ; HORRIBLE) ; BY THE WAY, THESE ARE FOR A KAYPRO 84 WITH TURBOROM AND ZCPR3,ZRDOS BIOS EQU 0E200H RCBOOT EQU 0E286H RWBOOT EQU 0E24EH RCONST EQU 0E50CH RCONIN EQU 0E50FH RCONOUT EQU 0E512H RLIST EQU 0E515H RPUNCH EQU 0E518H RREADER EQU 0E51BH RHOME EQU 0E365H RSELDSK EQU 0E369H RSETTRK EQU 0E36DH RSETSEC EQU 0E371H RSETDMA EQU 0E375H RREAD EQU 0E379H RWRITE EQU 0E384H RLISTST EQU 0E51EH RSECTRAN EQU 0E31AH ORG 100H ; IN SIMPLE TERMS, THE FOLLOWING STEPS SIMPLE LOAD IN THE CORRECT ; JUMP ADDRESS AND PLACE IT OVER THE MODIFIED ADDRESS LXI H,RCBOOT ; PICK UP 0E286H SHLD BIOS+CBOOT ; PUT IT AT 0E201H (0E200H SAYS JMP) LXI H,RWBOOT SHLD BIOS+WBOOT LXI H,RCONST SHLD BIOS+CONST LXI H,RCONIN SHLD BIOS+CONIN LXI H,RCONOUT SHLD BIOS+CONOUT LXI H,RLIST SHLD BIOS+LIST LXI H,RPUNCH SHLD BIOS+PUNCH LXI H,RREADER SHLD BIOS+READER LXI H,RHOME SHLD BIOS+HOME LXI H,RSELDSK SHLD BIOS+SELDSK LXI H,RSETTRK SHLD BIOS+SETTRK LXI H,RSETSEC SHLD BIOS+SETSEC LXI H,RSETDMA SHLD BIOS+SETDMA LXI H,RREAD SHLD BIOS+READ LXI H,RWRITE SHLD BIOS+WRITE LXI H,RLISTST SHLD BIOS+LISTST LXI H,RSECTRAN SHLD BIOS+SECTRAN LXI D,UNINMESS ; OUR MESSAGE MVI C,PSTRING ; WE WANT THE BDOS TO PRINT A STRING CALL BDOS ; PRINT IT JMP RWBOOT ; KIND OF SNEAKY, THIS IS THE GENUINE ADDRESS OF ; A WARM BOOT, MIGHT MAKE IT JMP BDOS UNTIL WE GET ; ALL THE NUMBERS RIGHT UNINMESS: DB ' Bios Jumps Restored$'