------------------------------------ MORIARTY BY: BETS C. ------------------------------------ MORIARTY VERSION 1.2 INSTRUCTIONS: MORIARTY, CURRENTLY AT VERSION 1 RELEASE 2, IS A SYSTEM DUMPING UTILITY DESIGNED TO DUMP TO DISK THE LOWER 48K OF AN APPLE 2 EXACTLY AS IT WAS WHEN RESET WAS PRESSED. MORIARTY CAN BE TRIGGERED BY RESET OR NMI. A 16K RAMCARD IS NECESSARY, AND A SLOT ZERO SWITCH IS DESIRABLE. I DO NOT KNOW HOW WELL IT WORKS ON A 2E, A FULL SCREEN MENU ALLOWS ACCESS TO THE VARIOUS OPTIONS OF MORIARTY. TWO USER EXITS ARE PROVIDED FOR THE AMBITIOUS. PHYSICALLY, MORIARTY IS ONE FILE, AND NEEDS NO OTHERS UNLESS YOU RUN IT FROM AN INTEGER MACHINE, IN WHICH CASE HE NEEDS FPBASIC ON THE SAME DISK. LOGICALLY, HE IS FOUR FILES: THE SETUP PROGRAM THE MEMORY FILL PROGRAM THE RESET OR NMI HANDLER THE SMALL RWTS ITSELF ALL OF THE MODULES ARE IN ONE BINARY LOAD, AND RELOCATED BY THE SETUP PROGRAM ACCORDING TO THE VALUES SPECIFIED BY THE USER. IN ADDITION, IF YOU PUT THE INSPECTOR AT THE END OF MORIARTY, HE WILL FIND IT AND PUT IT IN THE CORRECT LOCATION SO YOU CAN USE THE INSPECTOR WHEN THE DUMP IS TAKEN. TO USE MORIARTY, BRUN THE PROGRAM AND LOOK AT THE MENU. BELOW THE BANNER WILL BE A LINE DESCRIBING WHAT TYPE OF MACHINE HE THINKS YOU HAVE. IF IT ENDS IN A QUESTION MARK, OR IS NOT THE TYPE OF MACHINE YOU HAVE, CHECK YOUR BANK SO WHEN HE DOES NOT KNOW WHAT IS THERE, BECAUSE I THINK TRIGGERING I/O IN SOMEONE ELSE'S MACHINE WITHOUT TELLING HIM IS A ROTTEN THING TO DO. REMEMBER EPOCH? THE REST OF THE MENU IS FAIRLY OBVIOUS. JUST BE SURE NOT TO CONFUSE THE BOOT SLOT WITH THE DUMP SLOT. NOTE THAT HE WILL NOT ALLOW YOU TO ASSIGN THE BOOT SLOT TO THE SAME SLOT AS THE RAMCARD SLOT. THE LEFT AND RIGHT ARROWS MOVE THE CURSOR UP AND DOWN, SO JUST GO BACK AND CHANGE YOUR MISTAKE. SIGN THE STACK IS A VERY USEFUL OPTION IF YOU DO NOT HAVE AN NMI TRIGGER. AT RESET HE WILL PUSH THE P-REG ONTO THE STACK THREE TIMES, THEN THE ACCUMULATOR, THE Y-REG, THE X-REG, AND THE STACK POINTER. THUS, TO FIND THE" REGS, JUST LOOK ON THE STACK FOR THREE REPEATED BYTES, WITH THE FOURTH BYTE BELOW THE LOWEST EQUAL TO ITS DISPLACEMENT INTO THE STACK. SOUNDS COMPLICATED, BUT IF YOU SEE IT ONCE IT IS EASY FOREVER. THE REASON THE P-REG IS PUSHED THREE TIMES IS SO THAT IF YOU DECIDE WHAT THE PROGRAM COUNTER WAS AT RESET, YOU CAN REPLACE THE FIRST TWO PREGS WITH IT AND JUST RELOAD THE REGS FROM THE STACK AND RTI. ONCE YOU HAVE FILLED OUT THE MENU, RUN DOWN TO "USE THIS SETUP" AND PRESS "Y". IN A HUMMINGBIRD'S HEARTBEAT, OR DINOSAUR'S IF YOU LOAD FPBASIC, MORIARTY WILL CONFIGURE TO YOUR SPECIFICATIONS. NOTE THAT IF YOU ARE USING A 2+ OR 2E HE WILL COPY APPLESOFT FROM THE ROMS. THE NEXT THING YOU WILL SEE IS A MESSAGE INDICATING COMPLETE SETUP, AND TELLING YOU TO PRESS A KEY TO BOOT. DISABLE SLOT ZERO ACCESS AT THIS POINT. IF YOU DO NOT HAVE SUCH A SWITCH, THEN YOU SHOULD HAVE YOUR RAMCARD IN A NONZERO SLOT. PUT IN THE DISK TO BOOT AND PRESS ANY KEY. DEPENDING ON WHAT YOU" SPECIFIED AS A MEMORY FILL VALUE, YOUR SCREEN MAY FILL UP AT THIS POINT. GO RUN THE PROGRAM UNTIL YOU COME TO THE POINT YOU WANT TO DUMP. ENABLE SLOT ZERO AND PRESS RESET. IF YOU SPECIFIED AUTODUMPING, THE DISK DRIVE WILL RUN UNTIL YOU PUT A DOS 3.3 DISK INTO IT. IF YOU DID NOT, THEN YOU WILL BE IN THE MONITOR. TO GET THE DUMP FROM THE MONITOR, ENTER 3FBG (RETURN). IF YOUR MORIARTY FILE HAS THE INSPECTOR, THEN CTRL-Y WILL TAKE YOU TO IT. IN ANY CAS AND LOMEM: STORE LOG TAB( AND STORE ^ EXP AT PDL STORE S THE MACHINE WAS WHEN RESET WAS PRESSED. FOR THOSE WHO DO NOT WISH TO TANGLE WITH MY CODE. THE FIRST ONE IS CALLED JUST AFTER THE USER DECIDES TO ACCEPT THE CURRENT SETUP. NOTHING HAS BEEN TOUCHED OR MOVED. THE SECOND ONE IS CALLED JUST BEFORE THE MEMORY FILL, WHEN EVERYTHING IS IN PLACE. IN BOTH CASES, THE A-REG AND THE Y-REG POINT HI-LO TO A DATA STRUCTURE KNOWN INTERNALLY AS "THE BLOCK". IT IS THE ANCHOR POINT FOR ALL OPERATIONS DURING SETUP. THE FIRST TWO BYTES ARE A LO-HI POINTER TO MX, THE FASTEST GENERAL PURPOSE MOVE PROGRAM FOR THE 6502 KNOWN TO ME. CALL HIM WITH YOUR A-REG AND Y-REG POINTING HI-LO TO A REQUEST BLOCK IN THIS FORMAT BYTE 0: $80 (OTHER VALUES RESERVED, AND WILL RETURN WITH CARRY SET). BYTE 1-2: PRESENT ADDRESS OF DATA. (LO-HI) BYTE 3-4: TARGET ADDRESS OF DATA. BYTE 5-6: LENGTH OF DATA. ALL DOUBLE BYTES ARE LO-HI FORMAT. DON'T TRY TO USE PAGE ZERO WHEN YOU CALL THIS THING. TIMES PER LOOP. "MEMORY MAP." $0B00-18A7: MORIARTY WHEN FIRST LOADED. $18A8-20A7: INSPECTOR AT LOAD (IF INCLUDED). $0800-0867: MEMORY FILL AND BOOT PROGRAM. $0900-09FF: ROOM FOR USER EXIT NUMBER ONE. $0A00-0AFF: ROOM FOR USER EXIT NUMBER TWO. $D000-D5DE: SMALL RWTS IN ALTERNATE 4K BANK ON RAMCARD. $D800-DFFF: THE INSPECTOR, IF INCLUDED, ON THE SAME ALTERNATE BANK." $E000-E155: PRIMARY AND SECONDARY NIBBLING BUFFERS FOR SMALL RWTS. $F000-F7FF: HOLDING AREA FOR LOW STORAGE SAVE HERE WHEN RESET WAS PRESSED. $FECD-FEE5: RESET HANDLER ROUTINE. $FFFA-FFFD: NMI AND RESET 6502 POINTERS