/ .TITLE CPYDSK - COPY DISKETTE / .VERSION / / / / COPYRIGHT (C) 1983 / DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754 / / THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED / ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE / INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER / COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY / OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY / TRANSFERRED. / / THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE / AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT / CORPORATION. / / DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS / SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. / /++ / FACILITY: / / ABSTRACT: / / ENVIRONMENT: / / AUTHOR: CREATION DATE: / / 086 EMCD 11-SEP-85 Include Nordic translations / conditionalised / 085 DFB 08-NOV-84 FIX TO FIX BREAK IN VER83/84(NTS) / 084 DFB 02-NOV-84 Fix to copy all tracks in backup / ....(broke in ver 083) / 083 DFB 24-OCT-84 Fix copy volume(l.t. 800 blks) to flpy / 082 WCE 19-SEP-84 Change HOME block date to BUILD date / 081 DFB 18-SEP-84 Fix drive 0 check after I/O err / 080 EJL 10-SEP-84 Fix 8"<->5" not compatable error msg / 079 DFB 01-AUG-84 Fix to rewrite when err on read verify / 078 DFB 01-AUG-84 Fix to rewrite when err on read verify / 077 WJY 31-JUL-84 Don't allow "another" copy when dest is / a volume. bug WPSV2-122 / 076 DFB 22-MAR-84 Fix to init doc and systems / 8, or 9 mounted at winnie boot / 075 DFB 28-FEB-84 Allows 2000 block docs and system / 074 DFB 03-DEC-83 Add winnie system initialize / 073 WJY 17-JAN-84 Move menu code to MN1. / 072 WJY 16-JAN-84 Change to assemble in Field 2 so that / 071 HLP 03-NOV-83 Fix bug in STDBL put in on 068 and / Rewrite STDBL to handle small numbers / of blocks remaining on system disk / 070 WJY 02-NOV-83 Change to use different DSKQUE routine / to avoid inappropriate time display. / 069 WJY 12-OCT-83 Fix MC-S bug. Left out the code in edit / 67 which adds in the SECWRP parameter when / resetting the sector # after a wrap. / 068 HLP 11-OCT-83 Fix STDBL to have correct alloc blk if / DLEND># disk blocks (no blocks avail) / 067 WJY 01-OCT-83 Modified backup to use 2 full fields as / buffers. Allows a full track to be acted / on at once. / 066 WJY 30-SEP-83 DMII V1.5 WINCHESTER SUPPORT / *NOTE* A decision was made to call areas / devices instead. Since device is / already used exstensively in the / comments I left area in the comments / and only changed the TEXT statements. / 065 WCE 06-SEP-83 Added WINNIE conditional to fix load / problem with new WPSYSA module / 064 WCE 03-SEP-83 Changed RZ IOT's to standard RX IOT's / 063 WCE 31-AUG-83 Changed limit that system initialization / uses for reading end of disk so that / larger WPDL's can be used on S.D. disks / 062 WCE 07-JUL-83 Replaced occurances of SYS+value in case / statements with standard menu definitions / 061 HLP 20-JUN-83 Delete extra "and" in "Type D for document / or S for System and And Press RETURN / Writeout changes to save 3 blocks / 060 HLP 29-APR-83 Repaint entire screen after B finds / different densities so menu title changes / (ref DM-I V2.1 bug #76) /-------RELEASED FOR DECMATE-II V1.0----------- / 059 GJP 09-DEC-82 Make the message that there was an / error while trying to format appear / on the screen. It was being overwritten. / 058 HLP 15-NOV-82 Fix "for another..." function / 057 HLP 10-NOV-82 Modify CHKID to verify name and ID / Let maintenance menu title stay on / Consolidate Error messages / 056 HLP 04-NOV-82 Install Menu to check for "COPY" / Changed all JMP CPYDS1 to JMP CPYDS2 / 055 HLP 02-NOV-82 Fix display Menu.enu. after B 4 5 / 054 HLP 27-OCT-82 2nd fix to prevent elapsed time clock flash / 053 HLP 18-OCT-82 MNTMP1=6 means display no 8" system init / Added CPDFSZ code to detect different / diameter for menu on backup / 052 HLP 08-OCT-82 No elapsed time flash if no disk in drv / 051 HLP 30-SEP-82 Minor changes to TEXT26 / 050 DFB 26-SEP-82 Fix to write out track 0 / 047 HLP 15-SEP-82 Changed RX-50 Backup interleave to 3 / 046 HLP 31-AUG-82 Made free blocks use worst case pattern / 045 HLP 27-AUG-82 Generalized RXHAN error handling / Data verify RX-50 S & D only / 044 HLP 26-AUG-82 Added read verify by compare / functions for S and D / Made Allocation block generation more / general (now able to allocate by blk #) / 043 HLP 09-AUG-82 Disable UDKs during a Backup so user / can't destroy his system disk / Read Verify Boot Sectors on S / 042 HLP 23-JUL-82 Write RX50 boot header properly / Always use CDFMYF+10 for buffer field / Handle S cases (8-8,8-5,5-5,5-8) properly / 041 HLP 22-JUL-82 Allow only D init after FS or FD in CONDOR / 040 HLP 19-JUL-82 Copy track 0 on System initialization / Copy firmware only if DRVSRC is 8" / / 039 HLP 08-JUL-82 Deleted temporary routine FMTPCH / Deleted Copyfirmware part of Sys init. / (using separate boot disk with firmware) / (kept system disk smaller than doc disk) / / 038 HLP 06-JUL-82 Added temporary routine FMTPCH to patch / DM-II system disks during development / Fixup Drive not Ready msg / JMS FMTQRX in CPYIO--wrong error message / during Backup (B) / / 037 HLP 24-JUN-82 Do not allow 8" System disks to be made / if system drive is 5" / Do not copy firmware if dest drive is 8" / Copy track zero on RX-50 S or D / / 036 HLP 16-JUN-82 Fixed up exit routines and messages / Added DCA DRV in GTDKID / Deleted DCA DRV, GETDNS in CHKID / / 035 HLP 15-JUN-82 Changed to allow different number of / blocks for System, Document, and S-D / clear/verify. / On RX-50 TO RX-50 S Command, image copy / tracks 78 and 79 (firmware). / Corrected wrong track number on RX01 / last two sector writeout & vfy / Changed RX50 interleave factor to 2 / / 034 HLP 20-MAY-82 Conditionalized Piracy Protection code / Piracy Protection Can Be re-installed / by defining PIRATE (as long as / space wars do not result) / / 033 HLP 19-MAY-82 Pick up drive numbers from MN1 / Make New Backup Copy Menus / Allow S only if drive 0 is 8 inch / Allow 5 inch Backup of only D diskettes / After format an RX01 or RX02, query / S or D only if system drive is 8 inch, / otherwise assume D and ask for NAME. / Eliminated CLSCRN routine by combining / PSCR text into TEXT11 / 032 HLP 06-MAY-82 Modifications for MAY 10th announcement of Condor / Drive number selection by the following: / S & D: Use drive 2 if drive 0 / is an RX01 or RX02 / B: Drive 1 to Drive 0 / Adding Templates for both RX01/02 / and RX50 boots. Deleted RDBOOT / New STDBL Routine / Modifying BACKUP for RX50 / RX02 Interleave FACTOR changed from 4 / to 5 to make relatively prime to 26 / 031 HLP 13-APR-82 Extensive Rewrite to Eliminate All / Templates and Have only one Buffer / New Routines: RDBOOT, WRBOOT, FMTDIR, CLABUF / Deleted all Previous /D031 Lines / Moved FMTBUF to end, after text / Moved all messages to text area / Deleted all unreferenced labels / General cleanup / 030 DFB 28-MAR-82 FIX initialize doc/sys error mssge. / 029 DFB 25-MAR-82 Change format error mssge. / 028 DFB 05-MAR-82 Fix format error mssge. / 027 DFB 23-FEB-82 Set verify read during init sys and doc / 026 GDH 22-FEB-82 Moved storage of system disk id up front / so that functions other than "copy" / will back out properly. / 025 DFB 21-FEB-82 Set verify read during backup copy / And set interleave dd=4 sd=3 for bkupcpy / 024 GJP 08-FEB-82 On backup copy, won't recognize system / diskette when copying two times / 023 DFB 01-FEB-82 Reset dble dens interleave=3 / 022 DFB 28-JAN-82 Dble dens interleave=2 / 021 DFB 14-JAN-82 Do 8 bit copy for dd(image copy) / 020 DFB 11-JAN-82 FIX TO CHECK ERR CODE BEFORE NOT RDY / Delete error recovery / 019 DFB 10-JAN-82 Fix to check device ready & d / delete error msg."print r to continue" / 018 DFB/GDH 14-DEC-81 Fix to add doc. diskette message on boot / and to eliminate partial time display / during backup message display / 017 DFB 20-NOV-81 RETURN TO MAIN MENU DURING COPY ONLY / IF LAST WORD OF SYSTEM DISK ID SAME / 016 GDH 18-NOV-81 WRITE-OUT BOOT BLOCK TO DOC DISKETTE / IN 12 BIT MODE (JUST LIKE SYS DISKETTE) / 015 DFB 04-NOV-81 DBLE DENS INTERLEAVE TO 3(SAME AS SD) / 014 GJP/DFB 29-OCT-81 DBLE DENSITY CHANGES FUNCTIONS / 013 GDH 29-OCT-81 BACKUP DISKETTE MENU CHANGES. / 012 GDH 20-OCT-81 DE-IMPLEMENTED LOCK/UNLOCK CODE. / 011 TT 07-JUL-81 REMOVED SUPERFLUOUS CONDITIONALS. / 010 AJF 22-APR-81 CHANGED LEFT DRIVE TO DRIVE 0 / AND RIGHT DRIVE TO DRIVE 1 / 009 DSS 03-DEC-80 FIXED CURSOR POSITIONING IN 'TIMMSG' / WHICH MYSTERIOUSLY VANISHED IN THE / SCANDINAVIAN/EUROPEAN MERGE. / 008 DAO 28-OCT-80 CHANGED VT278 TO WRITE OUT EVERY THIRD / SECTOR IN DOCUMENT COPY ROUTINE SINCE / IT IS SO SLOW / 007 DM,JM 15-SEPT-80 MERGED SCANDI AND EUROPE/ENGLISH / 006 REG 12-AUG-80 ADDED THIS STANDARD HEADER / 005 CMW 06-AUG-80 MADE GRAMMATICAL CHANGES FOR DUTCH / 004 DSS 09-JUL-80 MODIFIED FOR ENGLISH/FRENCH-CANADIAN / 003 CMW 05-MAY-80 ENTERED CANADA TRANSLATIONS / 002 DSS 14-APR-80 ENTERED DUTCH FIXES / 001 CMW GLT 14-JAN-80 ADD FRENCH GERMAN DUTCH CONDITIONAL CODE / / FRENCH DIACRITICAL SUBSTITUTIONS: "["=L.A.E, "]"=L.G.E; "&" NOT USED / GERMAN DIARCITICAL SUBSTITUTIONS: "["=L.U.A, "]"=L.U.U, "\"=L.U.O; "&"=U.C. / / 2.5 KEE 10/18/77 ADD UNLOCKS FOR 102 SYSTEMS / 2.G-1 MB CHANGE FOR THE MOVE OF THE INPUT BUFFER IN MENU / /-- / / .COMP CPYDSK MEDDST / PTR TO "DISKETTE" OR "VOLUME" STRING /A066 / CIFMNU JMS I IOACAL / "PLACE THE DISKETTE WHICH IS TO RECIEVE THE COPY INTO DRIVE !D." / OR "THE VOLUME NAMED..." IF WINNIE /A066 0 / DEFAULT OUTPUT ROUTINE RCVTXT, 0 / ADDRESS OF STRING /M066 1316 / CURSOR POSITION RCVID, 0 / POINTER TO DRIVE NUMBER OR VOLUME NAME/A033/A066 / IFNDEF ITALIAN < CIFMNU JMS I IOACAL / "USE A BLANK DISKETTE OR A USED DISKETTE YOU NO LONGER NEED." 0 / DEFAULT OUTPUT ROUTINE TEXT1F / ADDRESS OF STRING 1416 / CURSOR POSITION MEDDST /A066 MEDDST /A066 > / CIFMNU JMS I IOACAL / "DRIVE !D - SOURCE DRIVE - THIS DISKETTE WILL BE READ." 0 / DEFAULT OUTPUT ROUTINE TEXT1G / ADDRESS OF STRING 1704 / CURSOR POSITION DEVSRC / PTR TO "DRIVE" OR "AREA" TEXT STRING /A066 DRVSRC / POINTER TO DRIVE NUMBER /A033 IFNDEF ITALIAN < DEVSRC / /A066 > MEDSRC / PTR TO "DISKETTE" OR "VOLUME" STRING /A066 / CIFMNU JMS I IOACAL / "PLACE THE DISKETTE WHICH IS TO BE COPIED INTO DRIVE !D." / OR "THE VOLUME NAMED..." IF WINNIE /A066 0 CPYTXT, 0 /M066 2116 CPYID, 0 / POINTER TO DRIVE NUMBER OR VOLUME NAME/A033/M066 / CIFMNU JMS I IOACAL / "WHEN YOU ARE READY TYPE COPY AND PRESS RETURN" 0 TEXTG3 / GENERAL PURPOSE -- 3 SUBSTRINGS /A036 2404 TEXT1I / WHEN YOU ARE READY TYPE COPY ... /C036 / 2604 TEXT33 / "OR, " /C036 / IFNDEF ITALIAN <2610> / /C036 IFDEF ITALIAN <2604> TEXT15 / "Press Gold ... /A033 2700 / POSITION FOR CURSOR AFTER MSG /A033 / TAD (TEXT1K) / SET UP CPYCON "FOR ANOTHER COPY" /A057 DCA CPYCON / /A057 / NOW DISABLE UDKS SO USER WON'T DESTROY HIS SYSTEM DISK /A043 / Test for drive in subroutine - for space reasons /A077 /d077 TAD DRVDST / ONLY IF DESTINATION DRIVE IS DRIVE 0 /A043 /d077 SNA CLA /A043 /C075 JMS CLRUDK /DISABLE UDK IF DEST DRIVE=0 /A075 CONT3, /A043 JMS CHKCCM / SEE IF STRING "COPY" WAS ENTERED /C056 SPA CLA / SEE IF NEET TO REPAINT /A056 JMP CONT2 / YES, GO REPAINT /A056 JMS DTDEN / DETERMINE DENSITIES AND SET INTERLVE FACTOR JMP CONT / DENSITIES WERE WRONG, REPAINT /A060 JMS TIMMSG / PRINT TIME MESSAGE JMS GETTIM / INITALIZE THE TIME TAD DENSRC /SOURCE DENSITY FACTOR IN BACKUP COPY /A075 JMS DSKSZE /SIZE IT NEEDED FOR WINNIE /A074 JMS SHFDEN /SET SHIFTED DENSITY CODE /A074 JMS CKDKSZ /CHECK SRCE-DEST SIZE /A074 NOP /ERR RET IF SRC G.T. DST /A074 JMS SETPAR / SET PARAMS FOR BACKUP COPY /A021 JMS CPYTKS / GO COPY TRACKS /A035 TAD WINDST / Did we copy to a VOLUME ? /A077 SZA CLA / No: Let the user do another copy /A077 JMP CPYGMO / Yes: No point in copying again - EXIT /A077 /***********************************************************************/ / / / CPYEXT--GETTING READY TO EXIT CPYDSK / / FIRST CHECK WITH OPERATOR / / TO SEE IF "ANOTHER" IS REQUIRED / / / /***********************************************************************/ CPYEXT, JMS CPYEXA / SPACE WARS MOVE /C021 JMS WTFRRS / WAIT FOR A RESPONCE FROM THE USER JMP SCONS1 / HE TYPED RETURN, DO THE COPY AGAIN /C024 / HE TYPED GOLD MENU, GO TO CPYDS2 /A036 / CPYDS2, /A024 CPYGMO, / GOLD MENU OUT OF CPYDSK /A056 JMS CHKID / GO CHECK THE ID OF THE DISK IN DR 0 /A024 CPYDS1, XX / RETURN CIF, FILLED IN DURING EXECUTION JMP I CPYDSK /-------------------- PAGE /***********************************************************************/ / / / CPYTKS--SUBROUTINE MADE OUT OF LOOPA CODE V035 / / COPIES ENTIRE TRACKS FROM DRVSRC TO DRVDST / / READ VERIFIES WRITTEN INFO / / FIRST TRACK--FMTQBK+RXQTRK / / LAST TRACK --TRKMXK / / OTHER PARAMETERS MENTIONED IN SETPAR MUST BE SET UP / / / /-----LATER SOLUTION--SHOULD FIRMWARE TRACKS BE IGNORED WHEN /------DOING A SYSTEM INIT-----CURRENTLY IGNORES SAME----- /***********************************************************************/ CPYTKS, XX / COPY TRACKS SUBROUTINE /A035 DCA SVBLOC / CLEAR SAVED WINNIE BLOCK # /A066 /D074 AC7777 / TEST FOR MIXED MEDIA /A066 TAD WINSRC / /A066 SZA CLA /WINNIE /A074 JMP CPYTK1 /YES SKIP FIRST TRACK /ADFB /D074 AC7777 TAD WINDST / /A066 SZA CLA / WINNIE? /C074 CPYTK1, ISZ FMTQBK+RXQTRK / YES IGNORE FIRMWARE /A066 LOOPA, AC0001 / SECTOR NUMBER /A032 DCA SECTOR / INITIALIZE SECTOR NUMBER /A032 TAD CPYPSK / GET PASS COUNT KONSTANT /A032 DCA CPYCNT / AND LOAD INTO ISZ COUNTER /A032 INLOOP, /D067 JMS SECADJ / GO SEE IF MUST ADJUST SECTOR NUMBER /A032 TAD DRVSRC / GET SOURCE DRIVE NUMBER /C033 DCA FMTQBK+RXQDRV / AND STORE IT TAD CPYRD / SET THE REQUEST TO BE A PHYSICAL READ /A025 DCA FMTQBK+RXQFNC TAD SECTOR / SAVE /A025 DCA SVSECT /A025 JMS CPYIO / READ A BUFFERFULL OF SECTORS TAD DRVDST / LOAD DESTINATION DRIVE NUMBER /A033 DCA FMTQBK+RXQDRV / AND STORE IT /M025 TAD CPYWRT / REQUEST A WRITE PHYSIO OF THE DATA JUST READ JMS CPYSET / SET FNC AND WRITE /A025 CLA CLL CML RTR / 2000=VERIFY MODE /A025 TAD CPYRD / SET READ VERIFY MODE /A025 JMS CPYSET /A025 / ISZ CPYCNT / ALL PASSES COMPLETE FOR THIS TRK? /A021 JMP INLOOP / GO DO NEXT PASS /A032 / TAD SECMXK / WE HAVE DONE A "TRACK OF BLOCKS" /A066 CIA / SO BUMP UP THE BLOCK NUMBER /A066 TAD SVBLOC / AC=SAVED BLOCK # + NO. SECTOR/TRACK /A066 DCA SVBLOC / N.B.--- SECTOR=BLOCK /A066 TAD FMTQBK+RXQTRK / SEE IF ALL TRACKS WERE TRANSFERRED /M031 TAD TRKMXK / LOAD NEGATIVE MAXIMUM TRACK NUMBER /M032 SZA ISZ FMTQBK+RXQTRK / BUMP TRACK NUMBER /A032 SZA CLA / /A032 JMP LOOPA / NO, GO DO NEXT TRACK /A021 JMP I CPYTKS / RETURN /A035 /***********************************************************************/ / / / CPYSET--AC CONTAINS FUNCTION CODE ON ENTRY / / IT SETS THE CODE THEN RESETS THE SECTOR COUNT /A025 / THEN PERFORMS THAT FUNCTION ON AS MANY SECTORS THAT /A025 / IS CONTAINED IN CPYNOS /A025 / / /***********************************************************************/ CPYSET, XX /A025 DCA FMTQBK+RXQFNC / SET FUNCTION CODE /A025 TAD SVSECT / GET SAVED SECTOR NUMBER /A021 /M025 DCA SECTOR / AND DO THIS SET OF SECTORS AGAIN /A021/M025 JMS CPYIO / GO DO A PASS /A021 /M025 JMP I CPYSET / RETURN /A025 /***********************************************************************/ / / / SETPAR--SET PARAMETERS FOR BACKUP COPY: / / CPYNOS..........NUMBER OF SECTORS PER PASS / / CPYLNT..........BUFFER LENGTH / / CPYPSK..........NUMBER OF PASSES PER TRACK / / FACTOR..........SECTOR INTERLEAVE FACTOR / / FMTQBK+RXQTRK..........FIRST TRACK NUMBER / / TRKMXK..........LAST TRACK NUMBER / / SECMXK..........LAST SECTOR NUMBER FOR GTSECT / / REWRITTEN FOR TABLE STRUCTURE HLP /M032 / / SECWRP..........FACTOR ADDED TO SECTOR # AFTER A WRAP /A067 / PREVENTING REUSING A SECTOR # /A067 / NOTE: WHEN THE NUMBER OF SECTORS/TRACK AND THE INTERLEAVE HAVE /A067 / NO COMMON DIVISOR BESIDES 1 ("RELATIVE PRIMES") A WRAP /A067 / ALWAYS GIVES AN UNUSED SECTOR # SO SECWRP IS SET TO 0 /A067 / WHEN THEY ARE NOT RELATIVE PRIMES, ONE MUST BE ADDED TO /A067 / THE SECTOR # GENERATED AFTER A WRAP TO PREVENT REUSE OF /A067 / A SECTOR #, THUS SECWRP IS SET TO 1 IN THESE CASES /A067 / WHEN CHANGING THE INTERLEAVE OR ADDING A NEW DEVICE THE /A067 / APPROPRIATE ENTRY MUST BE MADE FOR THE SECWRP VALUE /A067 / / /***********************************************************************/ SETPAR, XX TAD DENSTY / DENSITY FOR COPY SAME FOR IN AND OUT R3L / MULTIPLY BY EIGHT / TABLE NOW 8 WIDE /C067 /D067 TAD DENSTY / MULTIPLY BY FIVE /D067 TAD DENSTY / MULTIPLY BY SIX /D067 TAD DENSTY / MULTIPLY BY SEVEN TAD (PARTBL-1 / ADD ADDRESS OF TABLE LESS ONE DCA X0 / SET UP INDEX REGISTER TAD I X0 / READ FIRST VALUE DCA CPYNOS / SET UP NUMBER OF SECTORS TAD I X0 / READ SECOND VALUE DCA CPYLNT / SET UP BUFFER LENGTH TAD I X0 / READ THIRD VALUE DCA CPYPSK / SET UP NUMBER OF PASSES PER TRACK TAD I X0 / READ FOURTH VALUE DCA FACTOR / SET UP INTERLEAVE FACTOR TAD I X0 / LOAD FIFTH VALUE DCA FMTQBK+RXQTRK / SAVE AS MINIMUM (FIRST) TRACK TAD I X0 / LOAD SIXTH VALUE DCA TRKMXK / LOAD AS LAST TRACK NUMBER TAD I X0 / LOAD SEVENTH VALUE DCA SECMXK / LOAD AS LAST SECTOR VALUE TAD I X0 / LOAD EIGHTH VALUE /A067 DCA SECWRP / LOAD AS SECTOR WRAP ADJUSTMENT /A067 JMP I SETPAR / EXIT / /DISABLE UDKS SO USER WON'T DESTROY SYSTEM DISK /A075 / CLRUDK, 0 /A075 TAD DRVDST / ONLY IF DESTINATION DRIVE IS DRIVE 0 /A043 SZA CLA / DO WE CONTINUE /A043 /C075 /C077 JMP I CLRUDK / ELSE : Exit routine /A077 CIFSYS / INSTRUCTION FIELD OF UDKOPS /A043 AC0001 / CODE TO DISABLE /A043 UDKOPS / CALL THE ROUTINE /A043 JMP I CLRUDK /A075 DECIMAL /TABLE CHANGE HISTORY / V035 Changed RX50 FACTOR from 7 to 2 / V066 ADDED RD50 ENTRY FOR DMII V1.5 / V067 Changed CPYNOS & CPYPSK to reflect full trk buffering / & ADD SECTOR WRAP ADJUSTMENT FACTOR ENTRY PARTBL, /CPYNOS CPYLNT CPYPSK FACTOR RXQTRK TRKMXK SECMXK SECWRP -26 ; 128 ; -1 ; 3 ; 1 ; -76 ; -26 ; 0 /RX01 -26 ; 256 ; -1 ; 5 ; 1 ; -76 ; -26 ; 0 /RX02 -10 ; 512 ; -1 ; 3 ; 0 ; -79 ; -10 ; 0 /RX50 -10 ; 512 ; -1 ; 2 ; 78; -79 ; -10 ; 1 /RX50 FIRMWARE PARTBM=.+5 /POINTER TO TRKMXK ENTRY /A074 -16 ; 512 ; -1 ; 9 ; 0 ; -49 ; -16 ; 0 /RD50 WINNIE -10 ; 512 ; -1 ; 2 ; 0 ; -0 ; -10 ; 1 /RX50 TRACK 0 OCTAL /-------------------- PAGE / THIS INITALIZES THE CONSTANTS / SCONST, TAD (TEXT1N) / SET UP CPYCON "TO RETRY INIT'Z'N /A057 DCA CPYCON / /A057 / CDFMNU / GET THE VALUE FROM MENU FOR THE CMND DCA I (CLKCHG) / CLEAR CLOCK FLAG TAD I (MUBUF+MNTMP2 / LOAD SOURCE DRIVE NUMBER /A033 DCA DRVSRC / AND SAVE IT /A033 TAD I (MUBUF+MNTMP5 / LOAD DESTINATION DRIVE NUMBER /A033 DCA DRVDST / AND SAVE IT /A033 TAD I (MUBUF+MNTMP1 / LOAD FUNCTION CODE FROM MENU /C033 /D066 CDFMYF DCA FNCODE / SAVE IT /A057 SCONS1, / RE-ENTRY POINT /A058 CDFMYF /ADFB / THE FOLLOWING 3LINES WERE MOVED FROM ABOVE /A058 JMS WINCHK / SEE IF WINNIE, (RE)SET FLAGS, ETC. /A066 DCA FMTQBK+RXQBLK / CLEAR BLOCK NUMBER /M058 DCA MIN / SET THE CLOCK /M058 DCA SEC / /M058 TAD FNCODE / RESTORE IT /A057 / THIS CODE CHECKS TO SEE WHAT ROUTINE WAS CALLED / THE COPY OR ONE OF THE INITALIZES / TAD (-6) /C053 SNA /A053 JMP FMTNOS / NO 8" SYSTEM DISK ALLOWED /A053 IAC /A053 SNA /A014 JMP FMTDBL / 5 = FORMAT DOUBLE DENSITY DISKETTE /A014 IAC /A014 SNA /A014 JMP FMTSGL / 4 = FORMAT SINGLE DENSITY DISKETTE /A014 IAC /A014 SNA / JMP FMTDSK / 3= INITALIZE DOCUMENT IAC SNA / JMP FMTSYS / 2= INITALIZE SYSTEM DISKETTE IAC SZA CLA / JMP CPYDS2 / ALL OTHERS JMP CKDFSZ / 1= REGULAR COPY /C053 FMTSGL, / FORMAT SINGLE DENSITY DISKETTE ROUTINE/A014 TAD (RXEFMS+4000) / GET FUNCTION CODE FOR SNGLE DEN FORMAT/A014 JMP FMTCLL / GO CALL THE AUX CNTL PROCESSOR /A014 FMTDBL, / FORMAT DOUBLE DENSITY DISKETTE ROUTINE/A014 CLA / CLEAR AC /A014 TAD (RXEFMD+4000) / GET FUNCTION CODE FOR DBL DEN FORMAT /A014 FMTCLL, /C028 DCA FMTCMD / SAVE FORMAT COMMAND /A028 TAD DRVDST / LOAD DESTINATION DRIVE NUMBER /C033 DCA FMTQBK+RXQDRV / SET DRIVE NUMBER IN Q-BLOCK /A032 JMS FMTDEN / GET DENSITY AND AND DRIVE READY /A028 AC7776 / LOAD MINUS TWO /A032 TAD DENSTY / SEE WHAT KIND OF DRIVE WE HAVE /A032 SNA CLA / SKIP IF NOT RX50 /A032 JMP CPYEXT / ELSE GO ABORT FORMAT /A032/C033 TAD (TEXT1L) / SET UP CPYCON "TO RETRY FORMAT" /A057 DCA CPYCON / /A057 TAD FMTCMD / RESET COMMAND /A028 DCA FMTQBK+RXQFNC / PUT IT INTO THE Q-BLOCK /A014 JMS FMTRTB /Is FORMAT PRINT 'Format in process....ect /A028 JMS FMTRXT / GO FORMAT 8 INCH DISKETTE /A014 JMP DRVPRB / ERROR--GO SEE IF DOOR WAS OPEN /A045 /IF WE HAVE DECMATE-I ALLOW TO INITIALIZE AS S OR D /A041 /IF WE HAVE DECMATE-II, ALLOW ONLY D INITIALIZATION /A041 /DETERMINE IF DECMATE-I or II BY SEEING IF SYSTEM DISK /A041 /IS 8 INCH (DM-I) or 5 INCH (DM-II) /A041 TAD DENIN /SOURCE DSK-0=RX01/02,1=RX50,2=WINNIE /C074 SZA CLA /=RX01/02? /C074 JMP FMTDCD /WINNIE DISK/ DECMATE-I: /C074 FMTASK, CLA / CHKCCM DOES NOT CLA /A056 JMS CPYASK / GO ASK WHETHER HE WANTS A SYSTEM OR /A014 / DOCUMENT DISK /A014 JMP CHKLET / GO SEE WHAT HE TYPED IN /A014 FMTDCD, AC0003 / LOAD CODE FOR DOCUMENT /A056 JMP DMNTM1 / GO JOIN CHKLET CODE /A056 FMTCMD, 0 /SAVE FORMAT COMMAND HERE /A028 GETTIM, / UPDATES LAPSED TIME CLOCK 0 CLA CDFMNU TAD I (CLKCHG) CDFMYF SPA / JMP PRTSC2 / RETURN IF NO CHANGE ISZ SEC TAD (-12) SMA / JMP .-3 CDFMNU DCA I (CLKCHG) CDFMYF TAD SEC / ELSE COMPUTE NEW TIME TAD (-74) SPA / JMP .+3 / ADJUSTING FOR MINUTE CHANGE ISZ MIN JMP .-4 TAD (74) DCA SEC / CIFMNU JMS I IOACAL / 0 / PRINT TIME WHEN IT CHANGES TEXT13 1350 MIN SEC / PRTSC2, CLA JMP I GETTIM / MIN, 0 / THE VALUE OF THE MINUTES SEC, 0 / THE TEMP VALUE THAT DETECTS A CHANGE IN TIME /-------------------- PAGE /***********************************************************************/ / / / CPYERR--PUTS OUT THE ERROR MESSAGES WHEN DIFFERENT KINDS / / OF DISKETTES ARE SPECIFIED FOR A BACKUP COPY / / CALLED FROM DTDEN. DENSTY CONTAINS DENSITY CODE OF / / DENST0 CONTAINS DENSITY OF SYSTEM DRIVE (DM-I OR DM-II) / / DESTINATION DRIVE, T1 CONTAINS DENSITY OF SOURCE DRIVE / / ROUTINE ADDED / / / MODIFIED FOR DM-I/II /V035 / / / /***********************************************************************/ CPYERR, XX / CIFMNU / JMS I IOACAL / PRINT "BACKUP ERROR MENU" / 0 TEXT17 / 0 / CURSOR POSTION 0 / TAD WINFLG / IS THIS A 'WINNIE" ?? /A066 SNA CLA / NO- PROCESS ERROR AS BEFORE /A066 JMP CPERDK / - THIS BRANCHES PAST 'WINNIE' CODE /A066 TAD WINSRC / YES- NOW IS THERE A SOURCE ERROR ?? /A066 SMA CLA / YES- GO PROCESS /A066 JMP CPERWB / NO- BRANCH TO DEST. ERROR RTNE. /A066 TAD WINSRC / WHICH TYPE OF ERROR??? /A066 /-1=NOT ASSIGNED -2=AREA TOO SMALL -3=AREA TOO LARGE /A074 JMS SETEXT /GET TEXT STRING POINTER /A066 DCA CPERWS / /A066 CIFMNU /A066 JMS I IOACAL / PRINT "SOURCE AREA IS...." /A066 0 /A066 CPERWS, 0 /A066 0705 /A066 TXTSRC /A066 DRVSRC /A066 / /A066 CPERWB, /A066 TAD WINDST / IS THERE A DESTINATION ERROR ?? /A066 SMA CLA / YES- GO PROCESS /A066 JMP CPYER2 / NO- BRANCH PAST OLD DISKETTE CODE /A066 TAD WINDST / WHICH TYPE OF ERROR??? /A066 /-1=NOT ASSIGNED -2=AREA TOO SMALL -3=AREA TOO LARGE /A074 JMS SETEXT /GET TEXT STRING POINTER /A066 DCA CPERWD / /A066 CIFMNU /A066 JMS I IOACAL / PRINT "DESTINATION AREA IS...." /A066 0 /A066 CPERWD, 0 /A066 1505 /A066 TXTDST /A066 DRVDST /A066 / /A066 JMP CPYER2 / BRANCH PAST DISKETTE CODE /A066 CPERDK, TAD DENIN /SOURCE DSK-0=RX01/02,1=RX50,2=WINNIE /C074 SNA CLA /=RX01/02? /C074 TAD (TEXT18-TEXTY / YES USE TEXT18 FOR DM-I / TAD (TEXTY / USE TEXTY FOR DM-II OR WINNIE / DCA DIFDSK / SAVE SUBSTRING POINTER / CIFMNU / JMS I IOACAL / PRINT EITHER "THE DENSITIES OF YOUR / 0 / DISKETTES ARE DIFFERENT", OR / TEXT20 / "Your diskettes are different. / 0505 / CURSOR POSTION LINE 5, COL 5 / DIFDSK, XX / SUBSTR PTR / / WE KNOW THE DENSITY CODES ARE DIFFERENT / WE WANT TO DETERMINE IF WE ARE TRYING TO COPY BETWEEN / DIFFERENT DENSITIES ON 8 INCH DRIVES. IF SO, THE SOURCE / DENSITY PLUS THE DESTINATION DENSITY WILL BE EXACTLY ONE. AC7777 / LOAD MINUS ONE / TAD DENDST / DENSITY OF DESTINATION DRIVE /C074 TAD DENSRC / DENSITY OF SOURCE DRIVE /C074 SZA CLA / SKIP IF DIAMETERS ARE EQUAL / JMP CPYDDI / DIAMETERS ARE DIFFERENT / TAD DENSRC / DENSITY OF SOURCE DRIVE--0 OR 1/C074 TAD (SDDDPT / ADD POINTER TO POINTER / DCA DENFRM TAD DENSTY / DENSTIY OF DEST. DRIVE / TAD (SDDDPT / ADD POINTER TO POINTER / CPYER1, DCA DENTO / SAVE IN COPYING TO ___ / CIFMNU / JMS I IOACAL / 0 / TEXT22 / PRINT "YOU ARE TRYING TO COPY FROM" / 1005 / LINE 10, COL 5 / DENFRM, 0 / FROM ___ DENSITY / DENTO, 0 / TO ___ DENSITY / TAD DENFRM / GET POINTER TO FROM ___ / DCA DENFR1 / AND USE AS AN ARGUMENT HERE / CIFMNU / JMS I IOACAL / PRINT "PLEASE USE A___ ... FOR..COPY / 0 / / TEXT23 / "PLEASE USE A __ ... FOR .. COPY / 1405 / LINE 14 COL 5 / DENFR1, 0 / A COPY OF DENFRM / CPYER2, /A066 CIFMNU / JMS I IOACAL / / 0 / TEXTG3 / GENERAL PURPOSE CONTROL STRING 3 / 2205 / LINE 22 COL 5 / TEXT26 / "PRESS RETURN TO CONTINUE / 2405 / LINE 24 COL 5 / TEXT33 / "OR, " / IFNDEF ITALIAN <2411> / /C051 IFDEF ITALIAN <2405> TEXT15 / "PRESS GOLD MENU TO RECALL THE / 2700 / LINE 27 COL 0--FOR OPR RESP / JMP I CPYERR / RETURN TO CALLER / SDDDPT, TEXT24 / SINGLE DENSITY / TEXT25 / DOUBLE DENSITY / S8S5PT, TEXT2B / 5 INCH / TEXT2A / 8 INCH / CPYDDI, / TRYING TO COPY FROM DIFFERENT DIAMETERS / AC0004 / A080 AND DRVSRC / SOURCE DRIVE / M080 CLL RTR / M080 TAD (S8S5PT / ADD POINTER TO POINTER / DCA DENFRM AC0004 / A080 AND DRVDST / DESTINATION DRIVE / M080 CLL RTR / M080 TAD (S8S5PT / ADD POINTER TO POINTER / JMP CPYER1 / GO PICK UP ABOVE /***********************************************************************/ / / / DSKSZE--ROUTINE WHICH LOADS THREE VARIABLES AS FOLLOWS / / DSBLKV THE NUMBER OF BLOCKS TO VERIFY AFTER A / / A SYSTEM OR DOCUMENT INITIALIZATION / / DSBLKD THE NUMBER OF BLOCKS ON A DOCUMENT DISKETTE / / DSBLKS THE NUMBER OF BLOCKS ON A SYSTEM DISKETTE / / THIS ROUTINE MODIFIED ON V035. PREVIOUS REVISIONS SET UP / / DSBLKS TO BE EITHER -632, -988, OR -784, AND DSBLKS WAS USED / / FOR ALL THREE PURPOSES / / / /***********************************************************************/ DSKSZE, 0 /A027 DCA DSKSZL /SAVE DENSITY /A075 AC0004 /A074 CIA /NEGATE /A074 TAD DSKSZL /GET IT /A075 SNA CLA /=WINNIE? /A075 JMS DSKSZF /SET SPECIAL WINNIE SIZE(MAY BE ABLE TO /A074 /......ELIMINATE RD50 ENTRY IN DSKSZT) /A074 TAD DSKSZL / GET THE DENSITY OF THE DISK /C027 /C075 TAD DSKSZL / MULTIPLE BY TWO /A035 /C075 TAD DSKSZL / MULTIPLY BY THREE /A035 /C075 TAD (DSKSZT-1 / ADD TABLE BASE /C035 DCA X1 / SAVE IN AN INDEX REGISTER /C035 TAD I X1 / READ TABLE /A035 DCA DSBLKV / /A035 TAD I X1 / READ TABLE /A035 DCA DSBLKD / /A035 TAD I X1 / READ TABLE /A035 DCA DSBLKS / /A035 JMP I DSKSZE /A027 DSKSZL, 0 /A075 /------------------ PAGE DECIMAL DSKSZT, / TABLE OF DISK BLOCKS FOR DIFFERENT MEDIA /C035 /VFY /DOC /SYS ---TYPES OF CONSTANTS /A035 /DSBLKV DSBLKD DSBLKS ---NAME OF LOCATION LOADED /A035 -632; -632; -632 / RX01 /A035 -988; -988; -988 / RX02 /A035 DSKSZU, -790; -784; -768 / RX50 /A035 -000; -000; -000 / DUMMY (RX50 DBL. SIDED) /A066 DSKSZV, -790; -784; -768 / RD50 (DMII V1.5 ONLY!!!) /A066 /.......(OVERLAYED FOR RD50 V 2.0/A074 OCTAL /***********************************************************************/M031 / / WRITE BOOT ROUTINE / WRITES BOOT FROM FMTBUF / /*********************************************************************** WRBOOT, XX / WRITE BOOTSTRAP FROM FMTBUF /A031 JMS PHYIO / WRITE BOOTSTRAP BLOCK TO DOC DISKETTE /A016 RXEW12+4000 / (IN 12 BIT MODE). /A016 JMS PHYIO / NOW READ VERIFY BOOT /A043 RXER12+6000 /A043 JMP I WRBOOT / GO HOME /A031 /********************************************************************** / /A014 / PHYIO DOES PHYSICAL IO, EITHER READING OR WRITING /A014 / THE ROUTINE IS DESIGNED TO READ AND WRITE THE BOOTSTRAP /A014 / CODE FROM A ONE DISKETTE TO ANOTHER. THE CALLING SEQUENCE IS: /A014 / JMS PHYIO /A014 / RXER12 OR RXEW12 (12 BIT) /A014 / RXEPR OR RXEPW (8 BIT) /A042 / YOU MUST SET THE DRIVE NUMBER AND THE BUFFER FIELD IN THE /A014 / Q-BLOCK BEFORE ENTERING THIS ROUTINE. THE ROUTINE WILL FIND OUT /A014 / THE DENSITY OF THE DRIVE NUMBER PASSED IN THE Q-BLOCK, AND THEN /A014 / EITHER READ INTO OR WRITE OUT FROM BUFFER "FMTBUF" /M031 / / THE BOOTSTRAP PROGRAM. /A014 / /A014 /***********************************************************************/A014 PHYIO, XX / PHYSICAL IO TO COPY BOOTSTRAP PROGRAM /A014 / ADDRESS OF READ/WRITE PARAMETER /A014 / RXER12=READ/RXEW12=WRITE /A014 JMS FMTDEN / GO GET DENSITY & INIT RXHAN /A014 TAD I PHYIO / GO GET FUNCTION CODE (READ OR WRITE) /A014 DCA FMTQBK+RXQFNC / PUT FUNCTION CODE INTO Q-BLOCK /A014 TAD (FMTBUF) / GET ADDRESS OF BUFFER /A014 DCA FMTQBK+RXQBAD / PUT IT INTO Q-BLOCK /A014 IAC / GET TRACK NUMBER=1 (WHERE BOOT IS) /A014 DCA FMTQBK+RXQTRK / PUT IT INTO Q-BLOCK /A014 IAC / GET SECTOR NUMBER=1 (WHERE BOOT IS) /A014 DCA FMTQBK+RXQSEC / PUT IT INTO Q-BLOCK /A014 DCA FMTQBK+RXQBLK / FOR WINNIE - BLOCK 0 IS BOOT /A066 ISZ PHYIO / BUMP UP TO RETURN POINT /A014 JMS FMTRXT / GO DO PHYSICAL IO /A014 JMP DRVPRB / ERROR--GO SEE IF DOOR WAS OPEN /A045 / NOTE: THE FIRST PART OF THE BOOTSTRAP PROGRAM HAS NOW EITHER BEEN /A014 / WRITTEN FROM OR READ INTO BUFFER "FMTBUF" /M031 / THE FIRST 100 (64) LOCATIONS (SINGLE DEN) /M031 / THE FIRST 200 (128) LOCATIONS (DOUBLE DEN) /M031 / (BUT ONLY THE FIRST 100 LOCS CONTAIN DATA) /M031 / THE ENTIRE 400 (256) LOCATIONS (RX50--12 BIT MODE) /A032 / THE ENTIRE 1000 (512) LOCATIONS (RX50--8 BIT MODE) /A042 AC7776 / LOAD -2 /A032 TAD DENSTY / DENSITY CODE 2=RX50 /A032 SMA CLA / SKIP IF RX01 OR RX02 /A032 JMP PHYIOX / ONLY 1 READ FOR RX50 AND WE'RE DONE /C079 TAD (FMTBUF+100) / GET ADDRESS OF SECOND BUFFER /M031 DCA FMTQBK+RXQBAD / PUT IT INTO Q-BLOCK /A014 AC0004 / GET SECTOR NBR FOR 2ND PART /M031/C004/C022 DCA FMTQBK+RXQSEC / SET SECTOR NBR IN Q-BLOCK /A014 JMS FMTRXT / GO DO THE IO /A014 JMP DRVPRB / ERROR--GO SEE IF DOOR WAS OPEN /A045 / NOTE: THE SECOND PORTION OF THE BOOTSTRAP HAS NOW BEEN READ /M031 / OR WRITTEN. /M031 / IF RX02 THE 200 WORDS OF THE SECOND HALF OVERLAY /M031 / THE BLANK PORTION OF THE FIRST HALF /M031 TAD DENSTY / 1=DOUBLE DENSITY 0=SINGLE DENSITY /A014 SZA CLA / NON-ZERO HERE MEANS IT'S DOUBLE /M031/A014 JMP PHYIOX / EXIT IF DOUBLE--WE ARE DONE /C079 TAD (7) / SGL DEN SEC NBR LST HALF 2ND PART BOOT/A014 DCA FMTQBK+RXQSEC / PUT IT INTO Q-BLOCK /A014 TAD (FMTBUF+200) / GET BUFFER ADDR LAST PORTION OF BOOT /M031 DCA FMTQBK+RXQBAD / PUT IT INTO Q-BLOCK /A014 JMS FMTRXT / GO DO THE IO /M031 JMP DRVPRB / ERROR--GO SEE IF DOOR WAS OPEN /A045 / NOTE: THE LAST THIRD OF THE RX01 BOOTSTRAP HAS NOW EITHER BEEN /A014 / WRITTEN FROM OR READ INTO THE BUFFER FIELD "FMTBUF" /A014 PHYIOX, DCA FMTQBK+RXQBAD /RESET BUFFER ADDRESS TO 0 /A079 JMP I PHYIO / ALL DONE RETURN /A014 /***********************************************************************/ / / / CHKCCM CALLS THE DLOCPM MENU PAGE (PART OF CPYDSK) / / THERE IT BRANCHES INTO TWO CHECKS: / / MNTMP3=0 MEANS TEST FOR "COPY" / / MNTMP3<>0 MEANS TEST FOR "S" OR "D" / / ROUTINE ADDED V056 / / / /***********************************************************************/ CHKCCM, XX CDFMNU DCA I (MUBUF+MNTMP3 / SAVE THE FUNCTION CODE FOR THE MENU CDFMYF CIFMNU JMS I MNUCAL / GO INTO MENU CODE DLMCPM / IN MN1 /C073 /WHEN WE RETURN, MNTMP3 WILL TELL US WHAT THE USER DID: / 0 GOLD MENU OR "NO" / 1 "COPY" / 2 "S" / 3 "D" CDFMNU TAD I (MUBUF+MNTMP3 / LOAD THE RESULT FOR OUR FRIENDLY CALLER CDFMYF SZA / SKIP IF GOLD MENU JMP I CHKCCM / AND RETURN JMP CPYGMO / GO GOLD MENU OUT OF CPYDSK FMTER, CLA JMS FMTERR / DISPLAY THE ERROR MESSAGE /D045 JMP FMTERN / RETURN NORMALLY /***********************************************************************/ / / / FMTERN--DISPLAY MESSAGE ASKING FOR GOLD MENU / / / /***********************************************************************/ FMTERN, CIFMNU JMS I IOACAL / 0 TEXTG1 / GENERAL PURPOSE--ONE SUBSTRING 2412 TEXT15 / "Press Gold ... /A033 2700 JMS WTFRGR / GO WAIT FOR GOLD RESPONSE /A056 JMP CPYDS2 / AND EXIT CPYDSK /A056 /***********************************************************************/ / / / WTFRGR--ACCEPTS ONLY GOLD MENU AND THEN EXITS CPYDSK / / / /***********************************************************************/ WTFRGR, / WAIT FOR ONLY GOLD RESPONSE / XX / /A056 WTFRG1, JMS WTFRRS / WAIT FOR A RESPONSE SKP / CARRIAGE RETURN TYPED JMP I WTFRGR / A GOLD MENU TYPED /C056 / JMS CPYWFT / HE TYPED RETURN, BLATTTTTT... JMP WTFRG1 / WAIT AGAIN / /*****SPACE WARS MOVE VER 075 ****** /A075 / CPDSET, 0 /A075 AC0002 / FORCE DENSITY TO 2 (RX50) /A066 DCA DENSTY /A066 TAD (RXMAP-1) / GET POINTER TO SECTOR TO BLOCK /A066 / TRANSLATION MAP /A066 DCA T4 / & SAVE /A066 JMP I CPDSET /RET /A075 /***********************************************************************/A014/M066 / /A014/M066 / THIS ROUTINE CHECKS TO SEE IF THE USER HAS REPLIED A "D" OR AN /A014/M066 / "S" TO AN INQUIRY AS TO WHETHER HE WANTS TO INITIALIZE THE /A014/M066 / DISKETTE HE JUST FORMATTED TO A DOCUMENT OR SYSTEM DISKETTE /A014/M066 / /A014/M066 /***********************************************************************/A014/M066 CHKLET, / CHECK REPLY D OR S /A014/M066 AC0001 / MAKE AC NON-ZERO FOR CHKCCM /A056/M066 JMS CHKCCM / SO MENU KNOWS WHAT WE WANT /A056/M066 SPA / SEE IF NEED TO REPAINT /A056/M066 JMP FMTASK / YES, GO REPAINT /A056/M066 DMNTM1, / PUT FLAG WHERE DU MENU CAN GET AT IT /A014/M066 CDFMNU / MENU FIELD /A014/M066 DCA I (MUBUF+MNTMP1) / TELL DU MENU WHAT WE'RE DOING /A014/M066 AC0001 / SET SIGNAL TO MAIN MENU THAT WE'RE DOING/A014/M066 DCA I (MUBUF+MNTMP3) / AND THEREFORE NOT TO PUT OUT THE /A014/M066 CDFMYF / MESSAGE TO PUT THE DISK IN DRIVE 1 /A014/M066 CIFMNU /A014/M066 JMS I MNUCAL / CALL DU MENU /A014/M066 DLMDU3 /A014/M066 CDFMNU /A015/M066 CLA /M066 TAD I (MUBUF+MNTMP4) / GOLD KEY SWITCH /A015/M066 CDFMYF /A015/M066 SZA CLA / RETURN DESIRED ? /A015/M066 JMP SCONST / RETURNS HERE AFTER MENU CALL...CONT /A015/M066 JMP CPYDS2 / EXIT RETURN /C056/M066 /-------------------- PAGE /***********************************************************************/ / / / FMTDSK, /INITIALIZE A DOCUMENT DISKETTE / / / /***********************************************************************/ FMTDSK, / INITIALIZE DOCUMENT DISKETTE /A032 TAD WINDST / FIRST MAKE SURE DEST. IF A WINNIE /A066 / - IS ASSIGNED & BIG ENOUGH /A066 SPA CLA / MINUS INDICATES PROBLEM /A066 JMP FMTWER / PROBLEM - GO TELL USER& GET RESPONSE /A066 JMS SHOWNM / SHOW VOLUME NAME IF WINNIE & GET RESP /A066 JMS FMTINI / GO INITIALZE DRVDST & PUT UP TIMMSG /A032 AC7777 / LOAD MINUS TWO /A032/C074 TAD DENSTY / SEE IF DSTDRV IS 8 INCH OR 5 INCH /A032 SMA SZA CLA / SKIP IF 8 INCH /A032/C066/C074 JMP FMT50W / GO DO RX50 OR WINNIE /A032 /C074 /D074 TAD (DCSTRT / GET START ADDRESS FOR A DOC DISK /A032 /D074 CDFMYF+10 / CHANGE TO BUFFER FIELD /A042 /D074 DCA I (FMTBUF+LDSTRT-12 /SAVE /A032 /D074 CDFMYF / CHANGE BACK TO THIS FIELD /A042 /D074 JMS WR50BT / GO WRITE RX50 BOOT /A042 /D074 0 / WITH DOCUMENT ID /A042 /D074 JMP FMTDCA / GO DO OTHER STUFF /A044 FMTDC8, / 8 INCH INITIALIZATION CONTINUED /D074 SMA CLA / BUT FIRST CHECK FOR WINNIE /A066 /D074 JMP FMT50W / YES IT IS- GO PROCESS /A066 TAD (DCSTRT / GET START ADDRESS FOR A DOC DISK /A032 CDFMYF+10 / CHANGE TO BUFFER FIELD /A042 DCA I (FMTBUF+LDSTRT-100 /OVERWRITE BOOT STARTING ADDR FOR MSG/C042 CDFMYF / CHANGE BACK TO THIS FIELD /A042 JMS WRBOOT / WRITE & VERIFY THE RX01/02 BOOT /A042 JMP FMTDCA / GO DO OTHER STUFF /A066 FMT50W, / WRITES RX50 OR WINNIE DOCUMENT BOOT /A066 /C074 TAD (DCSTRT) / DUPLICATE RX50 LOGIC ABOVE /A066 CDFMYF+10 / /A066 DCA I (FMTBUF+LDSTRT-12) /A066 CDFMYF / /A066 JMS WR50BT / /A066 0 / /A066 FMTDCA, /D078 TAD (RXEWT+4000 / LOAD CODE FOR LOGICAL 12 BIT WRITE /A044 /D078 JMS FMTDOC / GO DO THE WRITE PASS /A044 /D078 JMS FMTVCD / LOAD THE CODE FOR THE VERIFY PASS /A045 JMS FMTDOC / GO DO THE WRITE VERIFY PASS /C078 JMP FMTERN / GO TELL USER WE ARE DONE /A044 FMTDOC, XX / WRITE OR VERIFY DOC DISKETTE /A044 /D078 DCA CPSDFN / LOAD THE FUNCTION (WRITE OR VERIFY /A044 AC0001 / SET BLOCK # TO 1 /A016 DCA FMTQBK+RXQBLK TAD DSBLKD / NEG NO OF DOCUMENT BLOCKS /A035 DCA DSBLKC / IS NO TO CLEAR /A035 JMS CLABLK / CLEAR BLOCKS 1 TO N /M031 DCA STDBSW / SET DOC SW(0) JMS RSTBLK /RESET BLOCK COUNT AND FUNCTION /A078 TAD DSBLKD / GET NUMBER OF DOCUMENT BLOCKS /A035 CIA / POSITIVATE /A035 DCA DSBLKC / AND PASS TO STDBL /A035 JMS FMTHAB / GO DO HOME AND ALLOC BLOCKS /A045 / / NOW DO THE BOOT ERROR MESSAGE BLOCK /A044 / THE FOLLOWING LINES ARE NOT NECESSARY IF THE CAPABILITY /A037 / TO HAVE AN ERROR MESSAGE APPEAR WHEN A DOCUMENT DISKETTE IS /A037 / BOOTED IS NOT NEEDED, OR IS HANDLED BY ROMWARE OR SLUSHWARE. /A037 / BLOCK EMESBK MAY ALSO BE FREED UP IN THE ALLOCATION MAP /C044 / IF VERIFY IS CHANGED BE A LITTLE LESS CRITICAL--ALLOCATED /A044 / BLOCKS NOT BELONGING TO ANY DOCUMENT SHOULD BE IGNORED /A044 / MAP (THIS IS THE LAST HANDLER BLOCK) /C044 TAD (RXERD+4000) / SET TO READ THE LAST HANDLER BLOCK DCA FMTQBK+RXQFNC TAD (EMESBK / GET LAST HANDLER BLOCK NUMBER /C044 DCA FMTQBK+RXQBLK DCA FMTQBK+RXQDRV / SET THE DRIVE TO ZERO TAD (FMTBUF) / SET THE BUFFER DCA FMTQBK+RXQBAD JMS FMTQRX JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 TAD CPSDFN / LOAD FUNCTION (WRITE OR READ/VFY) /A044 DCA FMTQBK+RXQFNC TAD DRVDST / LOAD DESTINATION DRIVE NUMBER /A032 DCA FMTQBK+RXQDRV JMS FMTQRX JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 JMS FMTWN /IF VOLUME SET TO NON BOOTABLE DOC /A074 JMP I FMTDOC / RETURN /A044 / ********************************************************************* /A066 / / VOLNAM - INPUT: AC=0 SOURCE VOLUME NAME / AC.NE.0 DEST VOLUME NAME / READS THE VOLUME NAME ASCII TEXT INTO THE APPROP. / LOCATION, FROM THE QUEUE BUFFER / / ******************************************************************** /A066 VOLNAM, XX SZA CLA / SOURCE OR DESTINATION VOLUME?? TAD (RCVNAM-CPYNAM) / GET OFFSET OF RCVNAM FROM CPYNAM TAD (CPYNAM-1) / ADD IN ADDRESS OF CPYNAM -1 DCA X0 / & SAVE FOR AUTOINDEX AC7777 / SET AC=-1 TAD FMTQBK+RXQBAD / ADD IN QUEUE BLOCK BUFFER ADDR DCA X1 / & SAVE FOR AUTOINDEX AC0010 / VOLUME NAME IS 8 CHARACTERS CIA / SO WE NEED A COUNTER SET TO DCA T2 / -8, FOR LOOP CONTROL RDNMLP, CDFMYF+10 / CHANGE TO BUFFER FIELD TAD I X1 / AND GET NEXT CHAR INTO AC DCA T3 / & SAVE FOR A BIT CDFMYF / BACK TO OUR FIELD TAD (7740) / GET -(ASCII SPACE) INTO AC TAD T3 / ADD IN CHAR VALUE SZA CLA / IF CHARACTER WAS A SPACE WE WILL PUT / A TERMINATING NULL INTO OUR ASCII TEXT TAD T3 / ELSE ACCEPT CHARACTER DCA I X0 / & PUT INTO OUT TEXT STRING ISZ T2 / HAVE WE READ 8 CHARACTERS?? JMP RDNMLP / NO, GO READ NEXT CHAR JMP I VOLNAM / YES, EXIT /***********************************************************************/ / / / WR50BT--WRITE RX50 BOOTSTRAP (ADDED V042) / / THIS ROUTINE WRITES THE RX50 BOOTSTRAP WITH THE / / STANDARD RX50 HEADER. THE HEADER IS READ IN 8 BIT / / MODE BY ALL SYSTEMS. IT CANNOT BE WRITTEN IN 12 BIT / / MODE AS 4 OF THE BITS IN SUCESSIVE BYTES CAN NOT BE / / WRITTEN. THEREFORE, THE BOOT IS FIRST WRITTEN IN / / 12 BIT MODE TO WRITE THE PDP-8 PORTION. THE BOOT IS / / THEN READ BACK IN 8 BIT MODE, AND THE BOOT HEADER IS / / OVERLAYED IN THE BUFFER. THE DOCUMENT/SYSTEM PARAMETER / / IS THEN OVERLAYED AS PASSED BY THE CALLER, AND THE / / BOOT WITH HEADER IS WRITTEN OUT IN 8 BIT MODE / / / /***********************************************************************/ WR50BT, XX / JMS WRBOOT / GO WRITE & VERIFY BOOTSTRAP ON RX50 / JMS PHYIO / NOW READ IT BACK IN 8 BIT MODE / RXEPR+4000 / CODE FOR PHYSICAL READ 8 BIT / / BUFFER SIZE MUST BE 512 / JMS BLKMOV / NOW OVERLAY THE BOOT HEADER / R5BHDR-1 / SOURCE ADDRESS / FMTBUF-1 / DESTINATION ADDRESS / -R5BHSZ / NEG NUMBER OF CHRS / CDFMYF / SOURCE FIELD /A057 CDFMYF+10 / DESTINATION FIELD /A057 TAD I WR50BT / PICK UP DOCUMENT/SYSTEM BYTE / ISZ WR50BT / ADJUST RETURN ADDR / CDFMYF+10 / CHANGE TO BUFFER FIELD / DCA I (FMTBUF+3 / DOCUMENT/SYSTEM BYTE LOCATION / CDFMYF / CHANGE BACK TO THIS DATA FIELD / JMS PHYIO / NOW WRITE BACK WITH THE PROPER / RXEPW+4000 / BOOT HEADER / JMS PHYIO / NOW READ-VERIFY BOOTSTRAP /A043 RXEPR+6000 / 4000=RETURN ERRORS; 6000=VERIFY /A043 JMP I WR50BT / RETURN / /RESET BLOCK COUNT AND FUNCTION CODE TO WRITE VERIFY / RSTBLK, 0 DCA FMTQBK+RXQRS1 /0=1 BLOCK /A078 TAD (RXEWT+6000 /WRITE LOGICAL AND VERIFY /A078 DCA FMTQBK+RXQFNC /SET FUNCTION /A078 JMP I RSTBLK /RETURN /A078 /---------------------- PAGE /************************************************************************** / / THIS ROUTINE GETS DENSITY / QBLK CONTAINS DRIVE TO PROCESS /M032 / ONE OF THE FOLLOWING CODES IS RETURNED /A032 / IN LOCATION DENSTY: /A032 / 0 RX01/RX02 SINGLE DENSITY /A032 / 1 RX02 DOUBLE DENSITY /A032 / 2 RX50 SINGLE SIDED /A032 / 3 RX50 DOUBLE SIDED /A032 / /************************************************************************** FMTDEN, XX TAD (RXEDN+4000) / GET GET DENSITY CODE /A014 DCA FMTQBK+RXQFNC / FUNCTION TO Q-BLOCK /A014 JMS FMTRXT / GO GET DENSITY OF DRIVE /A014 JMP DRVPRB / ERROR--GO SEE IF DOOR WAS OPEN /A045 TAD FMTQBK+RXQSPC / GET DENSITY CODE /A014 DCA DENSTY / SAVE DENSITY JMP I FMTDEN / RETURN /***********************************************************************/ / / / CHKID2--ROUTINE TO TELL OPERATOR TO RE-INSTALL THE / / ORIGINAL SYSTEM DISK (HAS SAME DISK ID) / / GOLD MENU IS ONLY LEGAL CHAR ACCEPTED / / ROUTINE ADDED V036 AS CPYINS / / ACTUALLY IS PART OF CHKID ROUTINE / / / /***********************************************************************/ CHKID2, / /A057 JMS CLRSCR / CLEAR THE SCREEN CIFMNU JMS I IOACAL 0 TEXTG1 / GENERAL PURPOSE--1 SUBSTRING 1405 TEXT3 / "REPLACE THE ORIGINAL SYSTEM DISK... 3000 JMS PPG / PRINT PRESS GOLD JMS WTFRGR / WAIT FOR ONLY GOLD MENU JMP CHKID1 / AND GO CHECK ID AGAIN /A057 /***********************************************************************/A031 / /A031 / FMTDIR SETS UP THE DIRECTORY BLOCK HEADER IN FMTBUF /A031 / IT IS CUSTOMARILY CALLED AFTER THE FMTBUF HAS BEEN CLEARED AND /A031 / COSCNT HAS ALREADY BEEN SET UP /A031 / /A031 /***********************************************************************/A031 FMTDIR, XX /A031 JMS CLBUF / CLEAR THE BUFFER /A082 TAD (INIBK) / LOC TO STORE NAME IN THIS FIELD /C042 JMS CRTNM / CONVERT THE NAME AND INSERT IT TAD (FMTBUF) /A031 DCA X1 / USE X1 TO SET UP THE BEGINNING /A031 TAD (130) / ID CODE FOR DIR BLOCK /A031 JMS FMSTF1 / SAVE IN FMTBUF+1 /C042 TAD INIBK / FIRST CHR OF NAME /A031 JMS FMSTF1 / SAVE IN FMTBUF+2 /C042 TAD INIBK+1 /A031 JMS FMSTF1 / SAVE 2ND CHR IN FMTBUF+3 /C042 TAD INIBK+2 /A031 JMS FMSTF1 / SAVE 3ND CHR IN FMTBUF+4 /C042 CDFSYS TAD I (RANDOM) / GET THE UNIQUE VALUE /A031 JMS FMSTF1 / SAVE IN FMTBUF+5 /C042 TAD P377 / GET ALLOC BLOCK NUMBER /A031 JMS FMSTF1 / SAVE IN FMTBUF+6 /C042 /=========================================================================== /==== THE WPS INSTALL PROGRAM REQUIRES THE BUILD DATE ==== /==== IN THE HOME BLOCK OF THE SYSTEM DISKETTE ==== /==== ==== /==== IF THE CURRENT DATE IS DESIRED FOR THE DOCUMENT DISKETTE ==== /==== THEN UNDELETE ALL THE /*082'S BELOW ==== /=========================================================================== /*082 TAD STDBSW / PICK UP DISKETTE TYPE /A082 /*082 SZA CLA / ARE WE MAKING A SYSTEM DISKETTE /A082 /*082 JMP FMTDAY / YES, GO DO DATE FOR SYSTEM DISK /A082 /*082 CDFSYS / NO, DO DATE FOR DOCUMENT DISK /C082 /*082 TAD I (DAMNTH) / GET THE DAY CREATED /A031 /*082 BSW / /A031 /*082 TAD I (MONTH) / /A031 /*082 JMS FMSTF1 / SAVE IN FMTBUF+7 /C042 /*082 CDFSYS / /A031 /*082 TAD I (YEAR) / /A031 /*082 JMP FMTYR / GO STORE THE YEAR VALUE /A082 FMTDAY, TAD (BLDDY^100+BLDMO) / PICK UP DAY-MONTH VALUE /A082 JMS FMSTF1 / SAVE IN FMTBUF+7 /A082 TAD (BLDYR) / PICK UP YEAR VALUE /A082 FMTYR, JMS FMSTF1 / SAVE IN FMTBUF+10 /C082 TAD NODOCS / GET NUMBER OF DOCUMENTS ALLOWED /A031 JMS FMSTF1 / SAVE IN FMTBUF+11 /C042 JMP I FMTDIR /A031 DECIMAL NODOCS, -200 /A031 OCTAL /***********************************************************************/A028 / /A028 / DISPLAYS "FORMAT IN PROGRESS, PLEASE STAND BYE." /A057 / IS CALLED ONLY WHEN FORMATTING /A057 / /A028 /***********************************************************************/A028 FMTRTB, XX /A028 CIFMNU /NO..DISPLAY 'Format in progress /A028 JMS I IOACAL /A028 0 / Please stand bye.' /A028 TEXT1M /A028 0200 /CLEAR SCREEN FROM LINE 3 /A028 1525 /A028 JMP I FMTRTB /A028 FMTRXT, XX / INPUT QUEUE ROUTINE TO RXHAN FMTRX1, CIF 0 / ENQUE / QUBLK1 / QUEUE TO RXHAN / FMTQR2, / CIF 0 / JWAIT / WAIT FOR DONE CLA TAD FMTQBK+RXQCOD SPA CLA JMP I FMTRXT / RETURN WITH NO INCREMENT IF ERROR /C045 TAD FMTQBK+RXQCOD SNA CLA / CHECK FOR DONE JMP FMTQR2 ISZ FMTRXT / SUCESSFUL OPERATION--BUMP RETURN /A045 JMP I FMTRXT / AND GO THERE /A045 / / FMTQRX, 0 / CIF 0 / ENQUE / QUBLK1 / QUEUE TO RXHAN / FMTQR1, / /A018 /C074 JMS GETTIM / SEE IF CHANGE IN TIME CIF 0 / JWAIT / WAIT FOR DONE CLA TAD FMTQBK+RXQCOD SPA CLA JMP I FMTQRX / ERROR--RETURN WITH NO INCRMENT /C045 TAD FMTQBK+RXQCOD SNA CLA / JMP FMTQR1 ISZ FMTQRX / BUMP FOR SUCESSFUL RETURN /A045 JMP I FMTQRX / DONE /FOLLOWING MOVED HERE *********** VER 074 ********** FMTVCD, XX / LOAD THE FUNCTION CODE FOR THE VERIFY PASS /A045 / AS OF THIS WRITING THE HANDLER WILL READ VERIFY / LOGICAL (CODE 6003) ON RX-50 ONLY. THEREFORE, / FOR RX01/02 WE WILL JUST CHECKSUM VERIFY (CODE 4003) AC7776 / SEE IF DESTINATION DRIVE IS RX-50 OR NOT TAD DENSTY SMA CLA / SKIP IF RX01/RX02 /C066 AC2000 / SET THE VERIFY BIT TAD (RXERD+4000 / CODE FOR LOGICAL 12 BIT, RETURN ERRORS JMP I FMTVCD / RETURN THE CORRECT VALUE /-------------------- PAGE /***********************************************************************/A032 / /A032 / CPYIO--READS OR WRITES CPYNOS SECTORS INTO THE FIELD BUFFER /M032 / THESE PARAMETERS MUST BE SET UP BEFORE ENTERING: /M032 / FMTQBK+RXQDRV DRIVE NUMBER /M032 / FMTQBK+RXQFNC FUNCTION CODE /M032 / CPYNOS NUMBER OF SECTORS TO PROCESS /M032 / /M032 /***********************************************************************/A032 CPYIO, XX DCA T2 / INITIALIZE BUFFER ADDRESS TAD CPYNOS / INITALIZE THE SECTOR COUNTER /C021 DCA T1 / SAVE IN A TEMPORARY LOCATION /C032 TAD (CDFMYF+10) / RESET BUFFER FIELD /A067 DCA FMTQBK+RXQBFD / /A067 TAD SECTOR / SAVE SECTOR IN CASE 2ND PASS NECESSRY /A021 DCA SVSECT /A021 CPYLP1, JMS GETTIM /A015 /D067 TAD T2 / INSERT THE BUFFER ADDRESS /D067 TAD CPYLNT /C021 /D067 DCA T2 / STORE NEW ADDRESS TAD T2 / NOW LOAD IN REQUEST BLOCK DCA FMTQBK+RXQBAD /D067 JMS GTSECT / GO GET THE SECTOR NUMBER /A014 TAD SECTOR / /A067 DCA FMTQBK+RXQSEC TAD FMTQBK+RXQSEC / GET BACK SECTOR # /A066 TAD T4 / ADD IN POINTER TO SECT TO BLOCK MAP /A066 DCA T3 / SAVE NEW PTR /A066 JMS CKBLNM /CHECK VALID BLOCK NUMBER /A083 /THIS CHECK TO ALLOW FOR COPYING /A083 /..VOLUME SIZES LESS THAN SIZE OF FLOPPY/A083 JMP CPYSKP /ERR RET..ILLEGAL BLK NUM. SKIP THIS BLOCK/A083 /D070 JMS FMTQRX / QUEUE THE REQUEST /A038 JMS FMTRXT / QUEUE THE REQUEST W/O CHECKING TIME /A070 / AS A TIME CHECK IS DONE AT THE BEGIN /A070 / OF THE SECTOR LOOP (CPYLP1) /A070 JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 CPYSKP, /A083 ISZ T1 / BUMP THE SECTOR COUNTER /C032 JMP CPYBMP / BUMP UP BUFFER, SECTOR ETC. /C067 TAD (CDFMYF+10) / GET ORIGINAL CDF BACK INTO Q-BLK /A067 DCA FMTQBK+RXQBFD / SO OTHER ROUTINES WILL WORK /A067 JMP I CPYIO / NOW ITS SAFE TO LEAVE /C067 CPYBMP, JMS GTSECT / GO GET THE SECTOR NUMBER /M067 CLL CLA /A067 TAD T2 / INSERT THE BUFFER ADDRESS /M067 TAD CPYLNT /C021 /M067 DCA T2 / STORE NEW ADDRESS /M067 SNL / SKIP IF WE WRAPPED THE BUFFER /A067 JMP CPYLP1 / ELSE JUST PROCESS NEXT SECTOR /A067 TAD BMPCDF / WE MUST BUMP BUFFER FIELD UP TWO /A067 TAD FMTQBK+RXQBFD / FIELDS /A067 DCA FMTQBK+RXQBFD / & SAVE IT /A067 JMP CPYLP1 / NOW WE ARE READY TO PROCESS NEXT SECTR/A067 /D067 THIS ROUTINE NO LONGER NEEDED /D067/***********************************************************************/ /D067/ / /D067/ SECADJ--ROUTINE TO ADJUST SECTOR NUMBER. / /D067/ USED BY BACKUP COPY IF INTERLEAVE FACTOR IS EVEN. / /D067/ CALLED BETWEEN PASSES. THE CURRENT SECTOR IS / /D067/ INCREMENTED IF FACTOR IS EVEN, OTHERWISE SECTOR / /D067/ IS UNCHANGED. / /D067/ THIS ROUTINE ADDED ON REVISION /A032 / /D067/ / /D067/***********************************************************************/ /D067 /D067SECADJ, XX / SECTOR ADJUST ROUTINE /D067 TAD FACTOR / GET FACTOR /D067 RAR / PUT LSB IN LINK /D067 SNL CLA / SKIP IF FACTOR IS ODD /D067 ISZ SECTOR / INCREMENT SECTOR IF FACTOR IS EVEN /D067 JMP I SECADJ / JUST RETURN IF FACTOR IS ODD /D067/ /***********************************************************************/ / / / THIS ROUTINE WILL DETERMINE THE NEXT SECTOR NUMBER FOR /A014 / PHYSICAL READS AND WRITES. BEFORE ENTERING IT YOU MUST /A014 / INITIALIZE THE SECTOR NUMBER TO 1, AND INITIALIZE THE INTERLEAVE/A014 / FACTOR TO THE CORRECT VALUE FOR A SINGLE OR DOUBLE DENSITY /A014 / DISKETTE. THE SECTOR NUMBER SHOULD BE AT LABEL "SECTOR" AND /A014 / AND THE INTERLEAVE FACTOR SHOULD GO AT LABEL "FACTOR". /A014 / / /***********************************************************************/ GTSECT, XX / GETS THE NEXT SECTOR FOR COPY IO /A014 TAD SECTOR / GET OLD SECTOR NUMBER /A014 TAD FACTOR / ADD IN INTERLEAVE FACTOR /A014 DCA SECTOR / STORE IT FOR /A014 TAD SECMXK / DETERMINE IF SECTOR NUMBER EXCEEDED /M032 TAD SECTOR / GET THE SECTOR /A014 SNA /A025 JMP GTRTN / IS AT MAX--OK /M032 SPA / SKIP IF OVER MAX /M032 /C069 JMP GTNWRP / ELSE THERE WAS NO WRAP /A069 TAD SECWRP / ADD IN WRAP ADJUSTMENT FACTOR /A069 DCA SECTOR / RESET SECTOR MOD SECMXK + ADJ. FACTOR /A032/C069 GTNWRP, CLA / CLEAR ACCUMULATOR /A032/C069 GTRTN, TAD SECTOR / GET THE SECTOR NUMBER INTO THE AC /A014 JMP I GTSECT / GO BACK /A014 /***********************************************************************/A014 / /A014 / THIS ROUTINE WILL DISPLAY THE MESSAGES THAT ARE REQUIRED TO /A014 / FIND OUT WHAT THE USER WANTS TO DO WITH HIS DISKETTE AFTER /A014 / HE HAS FORMATTED IT. IT ASKS HIM IF HE WANTS TO INITIALIZE IT /A014 / AS A SYSTEM OR DOCUMENT DISKETTE, OR IF HE JUST WANTS TO GET /A014 / OUT BY PRESSING GOLD MENU. /A014 / NOTHING IS PASSED TO IT AND IT PASSES NOTHING BACK.... /A014 / JUST CALL IT WITH A JMS //// /A014 / /A036 / REWRITTEN TO USE GENERAL PURPOSE CONTROL STRINGS /A036 / /A014 /***********************************************************************/A014 CPYASK, XX / RETURN ADDRESS /A014 TAD (0050) / ERASE DATE & TIME BUT NOT TITLE /A057 JMS CLRSCR / GO CLEAR THE SCREEN / CIFMNU / / JMS I IOACAL / / 0 / TEXTG2 / GENERAL PURPOSE CONTROL STRING 2 /C057 1205 / LINE 12 COL 5 / TEXT30 / "PLEASE SELECT HOW THIS DISKETTE... / 1405 / LINE 14 COL 5 / TEXT31 / "TYPE D FOR DOCUMENT OR S ... / 2700 / CURSON PSN FOR OPR RESPONSE / CIFMNU / / JMS I IOACAL / / 0 / TEXTG3 / GENERAL PURPOSE CONTROL STRING 3 / 1455 / LINE 14 COL 55 (CONTINUATION POINT) / TEXT35 / "AND PRESS RETURN" ("AND" WAS "THEN") /C057 2305 / LINE 23 COL 5 / TEXT33 / "OR, " / IFNDEF ITALIAN <2312> / / IFDEF ITALIAN <2305> TEXT15 / "PRESS GOLD MENU TO RECALL THE / 2700 / LINE 27 COL 0--FOR OPR RESP / JMP I CPYASK / RETURN /A014 /***********************************************************************/A014 / /A014 / DTDEN--DETERMINE IF THE DENSITIES OF THE DISKETTES /C060 / IN THE SOURCE DRIVE (DRVSRC) AND THE DESTINATION DRIVE (DRVDST) /C033 / ARE DIFFERENT. IF SO CALL ERROR ROUTINE CPYERR. /C060 / IF NOT, GIVE A SKIP RETURN /C060 / /A014 /***********************************************************************/A014 DTDEN, XX / /A014 DTDEN0, TAD DRVSRC / LOAD SOURCE DRIVE NUMBER /C033 /C035 DCA FMTQBK+RXQDRV / SET DRIVE NUMBER IN Q-BLOCK /A032 JMS FMTDEN / GET DENSITY OF THIS DRIVE TAD DENSTY / LOAD DENSITY DCA DENSRC / SAVE /C074 IFDEF PIRATE < /A034 / NOW SEE IF THE SOURCE DISKETTE IS AN RX-50 /A032 AC7776 / LOAD MINUS TWO TAD DENSRC / ADD DENSITY OF SOURCE DISKETTE/A032 /C074 SZA CLA / SKIP IF RX-50 /A032 JMP DTDEN1 / GO ON IF NOT RX-50 JMS PHYIO / GO READ BOOTSTRAP INTO FMTBUF /A032 RXER12+4000 / CODE FOR PHYSICAL READ 12 BIT MODE /A032 TAD FMTBUF+2 / GET WORD WHICH CONTAINS 'SYSTEM' BIT /A032 AND (20 / MASK OFF ALL OTHER BITS /A032 SZA CLA / SKIP IF NOT A SYSTEM DISKETTE /A032 /C075 JMP XFMT5 / GO MAKE SURE A DISK IS MOUNTED IN DR/M075 > / END IFDEF PIRATE /A034 DTDEN1, TAD DRVDST / LOAD DESTINATION DRIVE NUMBER /A033 DCA FMTQBK+RXQDRV / SET DRIVE NUMBER IN Q-BLOCK /A032 JMS FMTDEN / GET DENSITY OF DESTINATION DRIVE TAD DENSTY / LOAD DEST. DENSITY DCA DENDST /A074 TAD DENDST /DENSITY OF SOURCE DEV /A074 CIA TAD DENSRC / COMPARE TO SOURCE DENSITY /C074 SNA CLA / IF ZERO, THEN THEY ARE EQUAL /A014 /C074 JMP DTDENX / IF NOT, THEN GO ASK HIM TO CHANGE IT /C074 / / MOVED HERE ON VERSION 074 /A028 TAD WINFLG / NO DENSITY MISMATCH ON A V1.5 WINNIE! /A066 SZA CLA / NOT A WINNIE- SKIP & REPORT ERROR /A066 JMP CPDNMX / IS A WINNIE - SET UP MIXED DENS. CPY /A066 AC7777 /A074 TAD FNCODE /IS BACKUP COPY /A075 SZA CLA /A075 JMP DTDENX /NO LET SYSTEM/DOC INIT CONTINUE /A075 JMS CPYERR / DENSITY ERROR. GO ASK FOR DIFFRENT DISKETTE JMS WTFRRS / WAIT FOR THE REPLY /A014 JMP I DTDEN / HE REPLIED RETURN. LET CALLER /A060 / DECIDE WHAT TO DO. /A060 JMP CPYDS2 / HE REPILED GOLD MENU, GO DISPLAY IT /C056 CPDNMX, /C075 JMS CPDSET /SET DENSITY(SPACE WARS MOVE /A075 DTDENX, /A066 ISZ DTDEN / TAKE THE SKIP RETURN /A060 JMP I DTDEN / RETURN /A014 XFMT5, TAD (TEXT2B / " 5 INCH " /A037 DTDEN2, /M074 DCA DTDDS / SET UP SUBSTRING POINTER /A037 CIFMNU / /A032 /M074 JMS I IOACAL / GO DISPLAY /A032 0 / /A032 TEXT50 / "^SSYSTEM DISKETTES CAN NOT BE COPIED"/A032 211 / LINE 2 COL 11 /A032 DTDDS, XX / 8 INCH OR 5 INCH SUBSTRING PTR /A037 JMP FMTERN / GO ASK FOR A GOLD MENU /A032 /-------------------- PAGE ACL=7701 / MQ OP CODE: LOAD AC FROM MQ SWP=7521 / MQ OP CODE: SWAP AC AND MQ /***********************************************************************/ / / / THESE ROUTINES SET UP THE ALLOCATION BLOCKS. / / ENTER WITH STDBSW SET=0 FOR DOC DISKETT INIT / / SET=1 FOR SYSTEM DISKETTE INIT / / WITH DENSTY SET UP FOR THE DESTINATION DRIVE DRVDST / / WITH DSBLKC SET UP FOR NUMBER OF DISK BLOCKS /A035 / USES TABLE (DKSZTB) OF DISK SIZES INDEXED BY DENSTY / / THIS ROUTINE TOTALLY REWRITTEN REVISION /A032 / / / / REV071--MODIFIED SO THAT WHEN LESS THAN EIGHT BLOCKS REMAIN / / ON A SYSTEM DISK AND THE NUMBER OF AVAILABLE BLOCKS ON A / / SYSTEM DISK IS NOT 0 MOD 8 THAT THE MAP WILL BE CORRECT / / (RX02 IS ONLY MEDIA NOT HAVING 0 MOD 8 TOTAL BLOCKS) / / / /***********************************************************************/ STDBL, XX JMS CLBUF / CLEAR THE BUFFER /D035 TAD DSBLKS; CIA; DCA T1-- DSBLKC NOW SET UP IN CALLING ROUTINES /D035 TAD (FMTBUF / GET ADDRESS POINTER / DCA X2 / SAVE ADDR PTR / TAD STDBSW / GET CODE IDENTIFYING DOC (0) OR SYS (1)/ TAD (40 / ADD CODEWHICH IDENTIFIES TYPE OF DISKETTE/ CDFMYF+10 / CHANGE TO BUFFER FIELD /A042 / THIS ROUTINE DOES NOT TAD I /A042 / THEREFORE, WE MAY LEAVE THE DATA FIELD/A042 / SET TO THE BUFFER FIELD UNTIL WE EXIT /A042 DCA I X2 / SAVE IN BUFFER / TAD STDBSW / GET SYSTEM/DOCUMENT SWITCH SZA CLA / SKIP IF DOCUMENT DISKETTE TAD (-DLEND / LOAD NEG NUMBER OF BLOCKS IN SYSTEM TAD DSBLKC / ADD NUMBER OF BLOCKS ON DISK SPA / SKIP IF POSITIVE /A068 CLA / ELSE THERE ARE NONE LEFT! /A068 DCA T2 / SAVE AS NUMBER OF AVAILABLE BLOCKS TAD T2 / GET IT BACK DCA I X2 / SAVE IN BLOCK TAD T2 / GET IT BACK AGAIN DCA I X2 / SAVE IN BLOCK AGAIN / NOW SET THE BITS IN THE ALLOC BLOCK ACCORDING TO THE NUMBER OF BLOCKS / IN THE FILE SYSTEM AND CALCULATE THE #OF ALLOCATION WORDS IN THE MAP / INCLUDING A FINAL ALL ZERO TERMINATOR WORD ISZ X2 / BUMP POINTER OVER #WORDS+1 TAD X2 DCA T3 / BUT SAVE IT ALSO AC0001 / THE EXTRA COUNT DCA T4 / PREPARE TO USE T4 TO COUNT ALLOC WORDS TAD DSBLKC / GET NUMBER OF BLOCKS CIA / MAKE NEGATIVE JMP ALOST1 / COUNT BEFORE DCA /A071 ALOSTL, CLA / NEEDED BY LOOP LOGIC TAD P377 / LOAD CONSTANT DCA I X2 / SAVE IN BLOCK ISZ T4 / COUNT NUMBER OF ALLOC WORDS ACL / GET COUNT ALOST1, /A071 TAD P10 / ADD EIGHT SWP / UPDATE MQ ACL / AND THE AC SPA SNA / SEE IF POSITIVE AND NONZERO YET /C071 JMP ALOSTL / KEEP DOING FULL WORDS CIA / MAKE THE REMAINDER NEGATIVE DCA T2 TAD P377 ALOSTR, AND P177 / TURN OFF A BIT CLL RAL / SHIFT LEFT ISZ T2 / REMAINDER TIMES JMP ALOSTR SZA / IF THE REMAINDER IS NONZERO /A071 ISZ T4 / THEN COUNT ONE MORE ALLOC WORD /A071 DCA I X2 / STORE THE REMAINDER WORD ALOTSD, TAD T4 / GET THE COUNT CIA / NEGATE DCA I T3 / SAVE AT PROPER BUFFER LOCATION / NOW CLEAR THE BITS WHICH CORRESPOND TO BLOCKS ALREADY USED TAD STDBSW / SEE IF SYSTEM OR DOCUMENT SZA CLA / SKIP IF DOCUMENT JMP ALOSYS / GO DO SYSTEM CLEARS JMS ALLOBS / ALLOCATE SPECIFIC BLOCKS /A044 DCSPBK / LIST OF BLOCKS FOR A DOCUMENT DISK JMP STDBLX / DOCUMENT EXIT /C042 ALOSYS, / SYSTEM DISKETTE / THIS ROUTINE WORKS AS LONG AS / DLEND>#ALLOCBLK (255) TAD T3 / GET POINTER TO -(#WORDS+1) DCA X2 / SET UP INDEX REGISTER TAD (-DLEND / GET NEGATIVE NUMBER OF SYSTEM BLOCKS JMP ALOSY2 / /A071 ALOSY1, CLA / CLEAR AC (NECESSARY FROM LOOP POINT) DCA I X2 / CLEAR A BLOCK ACL / GET COUNT ALOSY2, /A071 TAD P10 / ADD EIGHT SWP / UPDATE MQ ACL / AND THE AC SPA SNA / SKIP IF POSITIVE AND NONZERO /C071 JMP ALOSY1 / ELSE LOOP BACK CIA / NO, NEGATE MOD 8 # BITS TO LEAVE ON DCA T1 / SAVE IN A COUNTER ALOSY3, STL RAL / SHIFT LEFT ISZ T1 / COUNT A BIT JMP ALOSY3 / LOOP FOR NEXT BIT AND I X2 / SAVE REMAINDER WORD /C068 MQL / SAVE RESULT FOR A MOMENT /A071 AC7777 / WHILE WE BACK UP THE INDEX REG /A071 TAD X2 / /A071 DCA X2 / /A071 ACL / /A071 DCA I X2 / SAVE RESULT IN MAP /A071 STDBLX, CDFMYF / CHANGE TO THIS FIELD /A042 JMP I STDBL / WE ARE DONE /***********************************************************************/ / / / ALLOBS--ALLOCATE SPECIFIC BLOCKS (ROUTINE ADDED V044) / / THE BLOCKS TO BE ALLOCATED ARE FOUND IN A LIST /C045 / THE LIST IS LOCATED BY THE POINTER AFTER THE CALL, I.E.: /C045 / CALLING SEQUENCE JMS ALLOBS / / BDBKLS / / . / / . / / BDBKLS, BDBK1 / / BDBK2 / / ETC;ETC; / / 7777 / / A MINUS ONE TERMINATES THE LIST / / / /***********************************************************************/ ALLOBS, XX / ALLOCATE SPECIFIC BLOCKS /A044 STA / LOAD MINUS ONE FOR X2 CDFMYF TAD I ALLOBS / PICK UP POINTER TO LIST CDFMYF+10 / CHANGE BACK TO BUFFER FIELD ISZ ALLOBS / ADJUST RETURN ADDRESS DCA X2 / SAVE IN INDEX REG 2 ALLOB0, TAD (FMTBUF+5 / SET UP POINTER TO START OF ALLOCATION MAP DCA T2 CDFMYF / PICK UP NEXT BLOCK NUMBER TAD I X2 CDFMYF+10 / CHANGE BACK TO BUFFER FIELD IAC SNA / SEE IF THE TERMINATOR JMP I ALLOBS / IF SO, RETURN CMA IAC / COMPLEMENT ALLOB2, / FIND CORRECT WORD IN ALLOC BLOCK TAD P10 / ADD 10 SMA / SEE IF THIS BLOCK IS IN THIS WORD JMP ALLOB3 / YES ISZ T2 / NO, BUMP POINTER JMP ALLOB2 / AND GO CHECK NEXT WORD / NOW DETERMINE BIT IN THIS WORD / AC CONTAINS THE BIT NUMBER LESS 4 TO BE CLEARED ALLOB3, CMA DCA T3 / SAVE FOR AN ISZ STA CLL / SET ALL AC BITS & CLEAR THE LINK ALLOB5, RAL / SHIFT THE MASK ISZ T3 JMP ALLOB5 AND I T2 / DO THE WORK--TURN OFF THAT BIT! DCA I T2 / AND SAVE THIS ALLOC WORD STA / DECREMENT BOTH COUNTS TAD I (FMTBUF+2 DCA I (FMTBUF+2 TAD I (FMTBUF+2 DCA I (FMTBUF+3 JMP ALLOB0 / GO DO NEXT BLOCK STDBSW, 0 / DOC/SYS DISKETTE SW 0=DOC /------------------------ PAGE /***********************************************************************/ / / / CKDFSZ--CHECK FOR DIFFERENT DIAMETERS / / USED BY BACKUP COPY. ASSUMES THE FOLLOWING: / / DRIVE NUMBERS ARE 0 TO 7 / / DRIVES 0-3 ARE 5 INCH / / DRIVES 4-7 ARE 8 INCH / / IF DRIVES ARE OF DIFFERENT DIAMETER THEN THE USER / / IS TOLD BACKUP CANNOT BE DONE / / / /***********************************************************************/ CKDFSZ, TAD WINSRC / IS EITHER A WINNIE DEVICE-0=NON WINNIE/C074 TAD WINDST / IS EITHER WINNIE DEVICE---0=NON WINNIE/A074 SZA CLA / NO- SKIP & CONTINUE WITH OLD RTNE. /A066 JMP CKWNSZ / YES- BRANCH TO WINNIE CHECKER /A066 TAD DRVSRC /A066 AND (4) TAD DRVDST AND (4) SNA CLA JMP CONT / DRIVES ARE SAME DIAMETER CKDFER, / ERROR ENTRY POINT FOR WINNIE /A066 JMS CPYERR / CALL ROUTINE WHICH DISPLAYS MESSAGE JMS WTFRRS / WAIT FOR OPR TO TYPE JMP CKDFS2 / RETURN--GO TO A MENU PAGE JMP CPYDS2 / GOLD MENU, RETURN TO MAIN MENU CKDFS2, CIFMNU JMS I MNUCAL / GO BACK TO THE MENU DLMDU8 / AND ASK FOR DRIVE NUMBERS AGAIN / /INPUT CANNOT EXCEED 2000 BLOCKS DURING BACKUP /A074 /OUTPUT CAN BE GREATER THAN INPUT ON DISK VOLUME BUT WILL END UP /A074 /...............WITH UNUSED AREAS ON OUTPUT..... /A074 / CKWNSZ, TAD WINSRC / CHECK FOR SOURCE PROBLEMS /A066 SPA CLA / .GT.= 0 NO PROBLEMS /A066 JMP CKDFER / ERROR - GO PROCESS /A066 TAD WINDST / CHECK FOR DESTINATION PROBLEMS /A066 SMA CLA / .GT.= 0 NO PROBLEMS /A066 /C074 JMP CONT /OUTPUT= O.K. CHECK SRC-DST SIZE /A074 IAC / /A074 TAD WINDST /IS IT UNNASSIGNED /A074 SZA CLA /A074 JMP CONT /NO JUST > 2000 BLOCKS CHK SRC-DST SZE /A074 AC7777 /ERROR OR > MAX BLOCKS /A074 TAD DRVDST / /A074 SZA CLA /DRIVE #1 /A074 JMP CKDFER /NO----ERROR /A074 TAD WINFLG /BITS 9=ONLINE,8=0=WINNIE,7=1=WINNIE /A074 AND (10 /BIT 8--DRIVE 0=WINNIE(VER 2.0) /A074 SZA CLA /IF DRIVE 0=WINNIE...DRIVE 1 MUST BE /A074 JMP CKDFER / ERROR - GO PROCESS /A066 JMP CONT / NO ERRORS - CONTINUE WITH COPY /A066 / ***************************************************************** /A074 / / DSKSZF----SETS UP SIZE OF VOLUME IN TABLE DSKSZT--(DSKSZU) / FOR SPECIAL CASES... / ----AFTER DEBUGGING IT MAY BE POSSIBLE TO DELETE / ----RD50 ENTRY IN TABLE AND HANDLE ALL WINNIE ENTRIES BY DSKSZU /A074 / ***************************************************************** /A074 DSKSZF, 0 /A074 TAD WINDST /A074 TAD (-2 /A074 SZA /2=G.T. 2000 L.T. 4095 BLOCKS /A074 JMP DSKSZG /IS SET TO 2000 /A074 TAD M2000 /SET TO 2000 BLOCKS /A074 JMP DSKSZJ /A074 DSKSZG, /A074 TAD (-2 /A074 SNA CLA /4=SPECIAL CASE....800 BLOCKS /A074 JMP DSKSZM /YES SPECIAL CASE /A074 TAD DSTSZE /DESTINATION SIZE(TRACKS) /A074 CLL RTL /BLOCKS=TRACKS*16 /A074 RTL /A074 CIA /NEGATE IT /A074 DSKSZJ, /A074 DCA DSKSZV /A074 /D079 AC0006 /A074 TAD DSKSZV /A074 DCA DSKSZV+1 /A074 /D079 TAD (12 /A074 TAD DSKSZV /A074 DCA DSKSZV+2 JMP DSKSZP /A074 DSKSZM, /A074 JMS BLKMOV /MOVE PARMS TO VOLUME AREA /A074 DSKSZU-1 /PNTR TO RX50 AREA(SKIPS FIRST ENTRY O.K.)/A074 /A075 DSKSZV-1 /TO VOLUME AREA /A074 -3 /COUNT /A074 CDFMYF /SOURCE FIELD /A074 CDFMYF /DEST FIELD /A074 DSKSZP, /A074 TAD DSTSZE /A074 CIA /NEGATE IT /A074 DCA PARTBM /SET IT /A074 JMP I DSKSZF /A074 DECIMAL M2000, -2000 /A075 OCTAL / /********MOVED HERE VER 074 SPACE WARS ******* / FMSTF1, XX / STUFF AT X1 (CDFMYF+10) /A042 CDFMYF+10 / CHANGE TO BUFFER DATA FIELD DCA I X1 / STUFF IT CDFMYF / CHANGE BACK TO OUR FIELD JMP I FMSTF1 / AND RETURN / /********CLRSCR MOVED HERE VER. 074 **** GUESS WHY ***** / CLRSCA, 0 /CLEAR FROM CURPSN /A074 TAD CURPSN / POSITION TO CLEAR FROM /A056 JMS CLRSCR / CLEAR THE SCREEN /M074 JMP I CLRSCA /RET /A074 /***********************************************************************/M066 / /M066 / CLRSCR--ROUTINE TO CLEAR THE SCREEN FROM A GIVEN POSITION /M066 / AC CONTAINS THE POSTION TO CLEAR THE SCREEN FROM /M066 / /M066 /***********************************************************************/M066 CLRSCR, XX / CLEAR THE SCREEN /A036/M066 DCA CLRSCP / SET THE POSITION TO CLEAR FROM /M074/M066 CIFMNU /M074 JMS I IOACAL /M074 0 /M074 PSCR /M074 CLRSCP, 0 / POSTION TO CLEAR FROM /A056/M074 JMP I CLRSCR /M074 /SETEXT...SETS TEXT STRING POINTER /A074 /ENTERS WITH NEG CODE IN AC AND RETURNS WITH POINTER IN AC /A074 /-1=NOT ASSIGNED -2=AREA TOO SMALL -3=AREA TOO LARGE /A074 / 3=VOL SIZE G.T. OR = 256 BLKS AND L.T. 800 BLOCKS / SETEXT, 0 /A074 SMA /=NEG NUM? /A074 AC7776 /NO..SPECIAL CASE(TOO SMALL) /A074 CIA /SET POS /A074 TAD TBLPTR /POINTER /A074 DCA TBLTMP /SAVE /A074 TAD I TBLTMP /GET STRING POINTER /A074 JMP I SETEXT /A074 / /CHKDST CHECKS SIZE OF DESTINATION DEVICE..... /A074 / IF DEST DEV=RX01/RX02 RETURNS NORMAL /A074 / IF DEST VOLUME IS LESS THAN 800 BLOCKS ERROR JMP /A074 / ELSE RETURNS +1 /A074 CHKDST, 0 /A074 AC7775 /-3...3 CODE = L.T. 800 BLOCKS /A074 TAD WINDST /DEST DEV /A074 SNA CLA /3 CODE? /A074 JMP FMTWER /YES....ERROR VOL TOO SMALL /A074 TAD DENOUT /=RX01/02? /A074 SZA CLA /A074 ISZ CHKDST /NO..IS = RX50 OR WINNIE /A074 JMP I CHKDST /A074 TBLTMP, 0 /A074 TBLPTR, TBLPT1-1 / /A074 TBLPT1, TEXWS1 /AREA NOT ASSIGNED /A074 TBLPT2, TEXWS2 /AREA TOO SMALL /A074 TBLPT3, TEXWS3 /AREA TOO LARGE(NOT HANDLE G.T. 4095) /A074 / /********************TABLE MOVED HERE VER 078 *** SPACE WARS ******* / DEVPTR, DEVDRV /A066 MEDDSK /C074 MEDPTR, DEVARE /C074 MEDVOL /A066 /--------------------- /A066 PAGE /A066 /***********************************************************************/A066 WINCHK, XX / /A066 DCA WINSRC /INITIALIZE..0=NON WINNIE SOURCE /A074 DCA WINDST /INITIALIZE..0=NON WINNIE DEST /A074 DCA SRCSZE /VOLUME SIZE IF WINNIE /A074 DCA DSTSZE /VOLUME SIZE IF WINNIE /A074 JMS SHFDEN /SHIFT DENSITY CODE AND SAVE /A074 DCA WINTRK /INIT TO 0 /A074 CDFSYS / /A066 TAD (34 /WINNIE MASK BITS--BIT 9=ON LINE /C074 /----------------------8=DRV0=WINNIE /A074 /----------------------7=DRV1=WINNIE /A074 AND I RXTYPR / IS WINNIE BIT SET /A066 CDFMYF / BACK TO OUR FIELD FIRST /A066 SNA / YES- SKIP & CONTINUE PROCESS /A066 /C074 JMP WINCHX / NO- JUST EXIT /A066 /D074 AC0001 / /A066 DCA WINFLG / SET WINNIE FLAG /A066 TAD DRVSRC / GET SOURCE DEVICE # /A066 JMS CKASGN / CHECK IF WINNIE AREA & IF BIG ENOUGH /A066 DCA WINSRC / SAVE RESULTS /A066 TAD WINTRK /GET BLOCK COUNT /A074 DCA SRCSZE /SAVE IT /A074 DCA WINTRK /INIT TO 0 /A074 JMS VOLNAM / GET THE SOURCE VOLUME NAME /A066 TAD DRVDST / DO SAME FOR DESTINATION DEVICE /A066 JMS CKASGN / ... /A066 DCA WINDST / ... /A066 TAD WINTRK /GET BLOCK COUNT /A074 DCA DSTSZE /SAVE SOURCE SIZE /A074 CLA IAC /DESTINATION DRIVE /C074 JMS VOLNAM / GET DESTINATION VOLUME NAME /A066 WINCHX, / EXIT RTNE, INITIALIZE SOME PTRS /A066 TAD WINSRC / IF SOURCE IS WINNIE AC-> 'AREA' TEXT /C074 SZA CLA /SET OFFSET IN TABLE /A074 AC0002 / /A074 TAD (DEVPTR-1 / LOAD PTR TO 'DRIVE' TEXT /C074 DCA X0 / /C074 TAD I X0 / /C074 DCA DEVSRC / SAVE POINTER FOR IOACAL'S /A066 TAD I X0 / /C074 DCA MEDSRC / & SAVE PTR FOR IOACAL'S /A066 TAD WINDST / ... /A066 SZA CLA /SET OFFSET IN TABLE /A074 AC0002 /A074 TAD (DEVPTR-1 / NOW REPEAT ABOVE LOGIC FOR DEST. DEV. /C074 DCA X0 / /C074 TAD I X0 / /C074 DCA DEVDST / ... /A066 TAD I X0 / /C074 DCA MEDDST / /A066 TAD (RDMAP-1) / DEFAULT TO RD50 'SECTOR' TO BLOCK /A066 DCA T4 / TRANSLATION TABLE /A066 TAD WINDST / SET UP TEXT STRING POINTERS FOR DISPLY/A066 / OF DRIVE NUMBER VS. VOLUME NAME /A066 SZA CLA /A066 TAD (WINRCV-TEXT1E) / GET OFFSET OF WINNIE PROMPT /A066 TAD (TEXT1E) / ADD IN DRIVE PROMPT /A066 DCA RCVTXT / PUT ADDRESS OF TEXT STRING INTO IOACAL/A066 / SEQUENCE /A066 TAD WINDST /A066 SZA CLA /A066 TAD (RCVNAM-DRVDST) / GET OFFSET OF VOLUME NAME FROM DRIVE #/A066 TAD (DRVDST) / ADD IN ADDRESS OF DRIVE # /A066 DCA RCVID / PUT INTO IOACAL SEQUENCE /A066 / NOW DO THE SAME FOR THE SOURCE!! /A066 TAD WINSRC / SET UP TEXT STRING POINTERS FOR DISPLY/A066 / OF DRIVE NUMBER VS. VOLUME NAME /A066 SZA CLA /A066 TAD (WINCPY-TEXT1H) / GET OFFSET OF WINNIE PROMPT /A066 TAD (TEXT1H) / ADD IN DRIVE PROMPT /A066 DCA CPYTXT / PUT ADDRESS OF TEXT STRING INTO IOACAL/A066 / SEQUENCE /A066 TAD WINSRC /A066 SZA CLA /A066 TAD (CPYNAM-DRVSRC) / GET OFFSET OF VOLUME NAME FROM DRIVE #/A066 TAD (DRVSRC) / ADD IN ADDRESS OF DRIVE # /A066 DCA CPYID / PUT INTO IOACAL SEQUENCE /A066 JMP I WINCHK / /A066 /***********************************************************************/M066 / /M066 / TIMMSG--CLEARS THE TIME COUNTER AND PRINTS /M066 / "ELAPSED TIME CLOCK 0:00" ON SCREEN /M066 / /M066 /***********************************************************************/M066 TIMMSG, XX CLA CDFMNU / CLEAR THE TIME COUNTER DCA I (CLKCHG) CDFMYF / DCA SEC / CLEAR THE SECOND COUNTER DCA MIN / AND THE MINUTES / CIFMNU JMS I IOACAL / PRINT "ELAPSED TIME CLOCK 0:00" 0 / DEFAULT OUTPUT ROUTINE TEXT12 / ADDRESS OF STRING IFNDEF ITALIAN <0050> / CURSOR POSITION TO CLEAR FROM /C057 IFDEF ITALIAN <0053> / (LEAVE MENU NAME BUT CLEAR DATE/TM /A057 / IFDEF ENGLSH < 1323 > / CURSOR POSITION FOR ENGLISH /A009 IFDEF ITALIAN < 1327 > / CURSOR POSITION FOR ITALIAN /A009 IFDEF V30NOR <1335> IFDEF V30SWE <1335> / JMP I TIMMSG / THIS IS THE ERROR MESSAGE HANDLER /M066 / /M066 / THIS ROUTINE WILL WAIT FOR A GOLD MENU OR ACR /M066 / RESPONSE FROM THE KEYBOARD. ALL OTHER CHARACTERS WILL RING THE BELL/M066 / CALLING SEQUENCE: /A036/M066 / JMS WTFRRS /A036/M066 / HERE / RETURNS HERE IF RETURN PRESSED /A036/M066 / HERE+1 / RETURNS HERE IF GOLD-MENU PRESSED /A036/M066 / V036 CODE DELETED WHICH CHECKS SYSTEM DISK ID /A036/M066 / WTFRRS, XX / WAIT FOR RIGHT RESPONSE CLA JMP WTFRL1 / SEE IF A CHARACTER IS TYPED FROM THE KEYBOARD CIF 0 / JWAIT WTFRL1, CIF 0 / XLTIN JMP .-4 / IF NOTHING TYPED THEN WAIT / TAD (-EDMENU) / CHECK FOR A GOLD MENU SNA / JMP WTFRGM TAD (EDMENU-EDNWLN) / NOW FOF A CR SNA CLA / JMP I WTFRRS / /C017 JMS CPYWFT / BELL REPLY / /D074 CLA JMP WTFRL1 WTFRGM, / GOLD MENU WAS TYPED /D036 JMP CPYEXT / NO /A017/C033 ISZ WTFRRS / SKIP RETURN /M031 JMP I WTFRRS /M031 /-------------------- PAGE /***********************************************************************/A032 FMTINI, XX / DOC & SYS INITIALIZE ROUTINE /A032 DCA DRVSRC / MAKE SURE SOURCE DRIVE IS SYSTEM /A037 / (FOR FIRMWARE, TRACK ZERO ETC) /A037 /D074 TAD DRVDST / SET AC TO DOCUMENT DRIVE NUMBER /C032 /D074 DCA FMTQBK+RXQDRV /D074 JMS FMTDEN / GO GET DENSITY OF DESTINATION DRIVE /A032 JMS DTDEN /GET DENSITY OF SOURCE AND DEST. /A074 NOP /IGNORE DIFFERENT MESSAGE /A074 JMS TIMMSG / CLR SCREEN & PUT UP TIME MESSAGE /M052 TAD DENDST /DESTINATION FACTOR IN DOC,SYS INIT /A075 JMS DSKSZE / DETERMINE DISK BLOCK VALUES /A035 JMS SHFDEN /SET DENSITY BITS /A074 JMS CPBOOT / GO COPY BOOT TO FMTBUF /A032 JMP I FMTINI / RETURN /A032 /********* CPYWFT MOVED HERE VER 074 ****************** /***********************************************************************/A032 / CPYWFT, 0 / PRINT BELL HERE TO SAVE SPACE TAD (7) / RING THE BELL IF BAD CHARACTER JMP .+3 CIF 0 / JWAIT CIF 0 / TTYOU JMP .-4 JMP I CPYWFT / RETURN / /***********************************************************************/A032 CPBOOT, XX / COPY BOOT ROUTINE /A032 JMS CLBUF / CLEAR FMTBUF /A032 AC7777 / LOAD MINUS TWO /C075 TAD DENOUT / DETERMINE IF RX50 OR NOT /C075 SZA / SKIP IF RX50 / HOLD AC FOR WINNIE CHK /A032/C066 JMP CP0102 / GO COPY RX01/02 BOOT /A032 JMS BLKMOV / GO COPY RX50 BOOT INTO FMTBUF /A032 RX50BEG-1 / SOURCE ADDRESS--FIRST SECTION /A032 FMTBUF-1 / DESTINATION ADDR /A032 -R5LOCS / NUMBER OF CHARACTERS /A032 CDFMYF / SOURCE FIELD /A057 CDFMYF+10 / DESTINATION FIELD /A057 JMS BLKMOV / DO SECOND SECTION /A032 RX50MID-1 / SOURCE /A032 FMTBUF+166-1 / DESTINATION /A032 RX50MID-R5W2ND / NEG NUMBER OF CHARACTERS /A032 CDFMYF / SOURCE FIELD /A057 CDFMYF+10 / DESTINATION FIELD /A057 JMS BLKMOV / DO THIRD SECTION /A032 R5W2ND-1 / SOURCE /A032 FMTBUF+361-1 / DESTINATION /A032 -5 / NEG NUMBER OF CHARACTERS /A032 CDFMYF / SOURCE FIELD /A057 CDFMYF+10 / DESTINATION FIELD /A057 JMP I CPBOOT / RETURN /A032 CP0102, / COPY RX01/02 BOOT /A032 / 1ST!!- IS IT A WINNIE?? /A066 SMA CLA / NO- SKIP /A066 JMP CPWINC / YES- GO COPY RD50 BOOT /A066 JMS BLKMOV / GO COPY RX0102 BOOT INTO FMTBUF /A032 BT0102-1 / SOURCE ADDRESS--FIRST SECTION /A032 FMTBUF-1 / DESTINATION ADDR /A032 -100 / NUMBER OF CHARACTERS /A032 CDFMYF / SOURCE FIELD /A057 CDFMYF+10 / DESTINATION FIELD /A057 JMS BLKMOV / DO SECOND SECTION /A032 RX01MID-1 / SOURCE /A032 FMTBUF+100-1 / DESTINATION /A032 -175 / NEG NUMBER OF CHARACTERS /A032 CDFMYF / SOURCE FIELD /A057 CDFMYF+10 / DESTINATION FIELD /A057 JMP I CPBOOT / RETURN /A032 CPWINC, / COPY RD50 BOOT INTO FMTBUF (STUB) /A074 JMS BLKMOV / GO COPY WINNIE BOOT INTO FMTBUF /A074 WINBEG-1 / SOURCE ADDRESS--FIRST SECTION /A074 FMTBUF-1 / DESTINATION ADDR /A074 -WNLOCS / NUMBER OF CHARACTERS /A074 CDFMYF / SOURCE FIELD /A074 CDFMYF+10 / DESTINATION FIELD /A074 JMP I CPBOOT /A074 /***********************************************************************/ / / / FMTERR--ERROR ROUTINE THAT HANDLES DISK I/O ERROR MESSAGES / / CPYDSK USES THE FOLLOWING FMTQBK+RXQFNC FUNCTION CODES: /A032 / RXEPR+4000 4001 READ PHYS 8-BIT /A032 / RXEPW+4000 4002 WRIT PHYS 8-BIT /A032 / RXERD+4000 4003 READ LOGL /A032 / RXEWT+4000 4004 WRIT LOGL /A032 / RXER12+4000 4013 READ PHYS 12-BIT /A032 / RXEW12+4000 4014 WRIT PHYS 12-BIT /A032 / RXEFMS+4000 4015 FORMAT SINGLE DENSITY /A032 / RXEFMD+4000 4016 FORMAT DOUBLE DENSITY /A032 / /A032 MODIFIED TO INCLUDE DETECTING ERRORS / / OCCURRING DURING CODES 4013 AND 4014 / / / /***********************************************************************/ FMTERR, XX TAD FMTQBK+RXQDRV / GET DRIVE NUMBER /A032 DCA BDDRV1 / AND PASS TO IOACAL /A032 / TAD (FNCER) / SET THE DEFAULT FUNCTION ADDRESS /C028 DCA BDFNC / IT IS SET FOR READING TAD FMTQBK+RXQFNC / SEE IF IT IS READING AND (7 / STRIP TO ONLY 3 BITS /M032 TAD (-2) / IF A 2 THEN IT IS A WRITE /M032 SNA / JMP INCONE / GO BUMP ONCE FOR WRITE /A028 TAD (-2) / CHECK FOR A LOGICAL OR PHYS-12 WRITE /M032 SNA /C028 JMP INCONE / GO BUMP ONCE FOR WRITE /A028 SPA CLA />=0 =FORMAT /A028 JMP INCZER /NO INC FOR READ /A028 ISZ BDFNC / BUMP MESSAGE POINTER /A028 INCONE, ISZ BDFNC / BUMP MESSAGE POINTER /A028 / INCZER, TAD (DEVER) / DEFAULT DEVICE ("DRIVE") /C028/C066 DCA BDDEV / /A066 TAD FNCER / IF READ THEN ERROR ON THE SOURCE DEV /A066 CIA / ELSE ERROR ON DEST! /A066 TAD BDFNC / IF BDFNC=FNCER THEN SOURCE ERROR /A066 SZA CLA / YES- SKIP /A066 JMP TSTDST / NO- ITS A DEST. ERROR /A066 TAD WINSRC / IS SOURCE A WINNIE?? /A066 SKP / /A066 TSTDST, TAD WINDST / - OR DESTINATION A WINNIE?? /A066 SZA CLA / NO- SKIP /A066 ISZ BDDEV / YES- BUMP POINTER /A066 CIFMNU / /A066 JMS I IOACAL / 0 / THE ERROR MESSAGE FMTERM 1512 / POSITION ON THE SCREEN ROW 15 COL.12 /C059 / THIS POSITION LEAVES THE ELAPSED TIME MSG ON SCRN BDDEV, 0 / THE DEVICE /A066 BDDRV1, 0 / THE DRIVE BDFNC, 0 / THE ADDRESS OF THE MESSAGE READ/WRITE / JMP I FMTERR / RETURN FNCER, REDFNC / THE ADDRESS OF THE STRING THAT SAYS READ WTFNC / THE ADDRESS OF THE WRITE MESSAGE STRING FMTFNC / THE ADDRESS OF FORMAT MESSAGE STRING /A028 DEVER, DEVDRV / " " " STRING THAT SAYS DRIVE /A066 DEVARE / " " " " " " AREA /A066 / / SHFDEN, 0 /A074 TAD DENSRC /INPUT DENSITY /A074 CLL RAR /SHIFT OUT RX02 DD BIT IF SET /A074 DCA DENIN /INPUT DENSITY 0=RX01-02,1=RX50,2=WINNIE/A074 TAD DENDST /OUTPUT DENSITY /A074 /C075 CLL RAR /SHIFT OUT RX02 DD BIT IF SET /A074 DCA DENOUT /OUTPUT DENSITY 0=RX01-02,1=RX50,2=WINNIE/A074 JMP I SHFDEN /A074 / DENIN, 0 /INPUT DENSITY 0=RX01-02 1=RX50 2=WINNIE/A074 DENOUT, 0 /OUTPUT DENSITY 0=RX01-02 1=RX50 2=WINNIE/A074 / / /****** FOLLOWING DELETED VER 074 ******* /***********************************************************************/ / / / SKIFS5--SKIP IF DISK IS 5 OR WINNIE INCH / / SKIFD5-- " / / TYPICALLY USED AT RUN TIME TO DETERMINE IF / / RUNNING ON A DECMATE-I or DECMATE-II / /CALL = JMS SKIFS5 / / DENST0/DENSTY /POINTER TO DENSITY OF DISK CHKED/ / RET8 /RETURN IF 8" DRIVE / / RET50 /RET IF RX50 / / RETWIN /RET IF WINNIE / / / /***********************************************************************/ /D074SKIFD5, / /D074SKIFS5, XX /D074 TAD I SKIFS5 /POINTER TO DENSITY CODE /A074 /D074 DCA SKIFST /A074 /D074 ISZ SKIFS5 /RET /A074 /D074 AC7776 / LOAD MINUS TWO /D074 TAD I SKIFST /GET DENSITY /A074 /D074 SNA / SKIP IF RX01/RX02 WINNIE /C074 /D074 JMP ISAX50 /A074 /D074 SPA CLA /=WINNIE? /A052 /D074 JMP I SKIFS5 /NO.. =8" RX01/RX02 /A074 /D074 ISZ SKIFS5 / ELSE BUMP RETURN ADDRESS FOR WINNIE /A074 /D074ISAX50, ISZ SKIFS5 /WINNIE /A074 /D074 JMP I SKIFS5 / AND RETURN /D074SKIFST, 0 /TEMP /A074 /---------------------- /A066 PAGE /A066 /***********************************************************************/A032 / BLKMOV, XX / BLOCK MOVE ROUTINE /A032 / ADDED GENERAL CROSS FIELD ABILITY /A057 TAD I BLKMOV / GET SOURCE OPERAND / DCA X1 / ISZ BLKMOV / TAD I BLKMOV / GET DESTINATION ADDRESS / DCA X2 / ISZ BLKMOV TAD I BLKMOV / GET NUMBER OF WORDS TO MOVE / DCA T1 / ISZ BLKMOV TAD I BLKMOV / GET SOURCE FIELD /A057 DCA BLKMV1 / AND STUFF IT /A057 ISZ BLKMOV / /A057 TAD I BLKMOV / GET DESTINATION FIELD /A057 DCA BLKMV2 / AND STUFF IT /A057 ISZ BLKMOV / /A057 BLKMV1, XX / CDF SOURCE FIELD /C057 TAD I X1 / DO THE WORK / BLKMV2, XX / CDF DEST FIELD /C057 DCA I X2 / ISZ T1 / JMP BLKMV1 / CDFMYF / RESTORE OUR FIELD /A057 JMP I BLKMOV / RETURN / /***********************************************************************/A019 / /A019 / CONTROL IS PASSED HERE FROM FMTQRT WHENEVER THE DRIVE /C038 / DOES NOT HAVE A /C038 / DISKETTE READY TO BE READ IN THE DRIVE. THIS ROUTINE DISPLAYS /A019 / AN ERROR MESSAGE ASKING THE USER TO INSERT A DISKETTE OR /A019 / TO PRES GOLD MENU TO RETURM TO MAIN MENU /A019 / /A019 /***********************************************************************/A019 DRVPRB, /A019 TAD FMTQBK+RXQSPC / GET THE ERROR RETURN CODE /A019 AND (2400 / IF ERROR CODE BITS 1-3 =5 NOT READY ERROR/C020/C028 CIA / NEG /A028 TAD (2400 /A028 SZA CLA / 0=DRIVE NOT READY ON GET DEN/A019 /C028 JMP CPYER / MUST BE SOME OTHEER ERROR, GO GIVE MESSAGE /A019 JMS DRVERR / GO DISPLAY THE MESSAGES /A019 JMS WTFRRS / GO SEE WHAT HE TYPED IN /A019 JMP FMTRTA / HE TYPED RETURN (PUT A DISKETTE IN) /C028 JMP CPYDS2 / HE TYPED GOLD MENU /A019 CPYER, JMS FMTERR /A019 JMP CPYEXT / EXIT LIKE IT WAS COMPLETE /A019 FMTRTA, /CONTROL RETURNS HERE AFTER OPERATOR INSERTS DISKETTE /M031 /(AFTER HE FORGOT TO PUT ONE IN) /A031 / THE FOLLOWING LINE WAS CAUSING "ELAPSED TIME CLOCK 0:00" /A054 / TO FLASH ON THE SCREEN IF BOTH DOORS WERE LEFT OPEN, /A054 / TYPE COPY,...YOU NEED A DISK IN DRIVE (SOURCE), /A054 / CLOSE DOOR (SOURCE), HIT RETURN, SEE THE FLASH... /A054 / REPLACED BY "YOU NEED A DISK IN DRIVE (DEST) /A054 / ...CARL GERSTLE BUG #132 PRIORITY 5 (COSMETIC) /A054 /D054 JMS TIMMSG / GO ERASE SCREEN AND PUT TIME MESSAGE OUT /A019 JMP FMTRX1 / GO TRY TO READ AGAIN /C028 / THIS IS THE LIST OF BLOCKS TO ALLOCATE ON A DOCUMENT DISK /M066 DCSPBK, 0 / WPS LOADER /M066 1 / OS8-DIRECTORY BLOCK /M066 DLDIR / HOME BLOCK /M066 EMESBK / ERROR MESSAGE BLOCK /M066 DLALOC / ALLOCATION BLOCK /M066 7777 / TERMINATOR /M066 /***********************************************************************/A031/M066 / CLBUF, XX / ROUTINE TO WRITE COSCNT IN BEGINNING /A031/M066 / OF FMTBUF AND CLEAR THE REST /A031/M066 TAD (-400) / SET THE COUNTER FOR THE BUFFER /M066 DCA T1 /M066 TAD (FMTBUF-1) / SET THE ADDRESS OF THE BUFFER /M066 DCA X2 /M066 TAD COSKNT / GET COS310 CONSTANT /A031/M066 CDFMYF+10 / CHANGE TO BUFFER FIELD /A042/M066 CLALUP, DCA I X2 / CLEAR THE NEXT LOCATION /M066 ISZ T1 / INCREMENT THE COUNTER /M066 JMP CLALUP /M066 CDFMYF / CHANGE TO THIS FIELD /A042/M066 JMP I CLBUF /M066 /***********************************************************************//M066 / //M066 / WCBUF--WORST CASE BUFFER (ADDED V046) //M066 / ROUTINE TO FILL THE BUFFER WITH THE WORST CASE //M066 / PATTERN FOR THE DATA RECOVERY FROM THE DISK //M066 / THE MODULATION TECHNIQUE IS MFM (WD1793 F.D.C) //M066 / THE WORST CASE PATTERN IS THE FOLLOWING TRIO OF BITS //M066 / REPEATED AD INFINITUM: 001 //M066 / FOR NOW WE WRITE IN 12 BIT MODE SO LETS JUST USE //M066 / THE 12 BIT PATTERN (5111) //M066 / //M066 /***********************************************************************//M066 WCBUF, XX /M066 TAD (FMTBUF-1) / SET THE ADDRESS OF THE BUFFER /M066/M078 DCA X2 /M066/M078 TAD (-20 /SET TO DO FIELD CLEAR /A078 DCA WCOUNT /SET UP COUNT /A078 WCBUF1, TAD M377 / SET THE COUNTER /C078 DCA T1 /CLEAR FIELD /M066 /C078 TAD COSKNT / GET COS310 CONSTANT /M066 CDFMYF+10 / CHANGE TO BUFFER FIELD /M066 DCA I X2 / WRITE COSCNT INT LOC 0, 0000 IN LOC 1 /M066 WCBUF2, DCA I X2 / PUT IN BUFFER /M066 TAD (5111) / LOAD QUASI WORST PATTERN /M066 ISZ T1 / INCREMENT THE COUNTER /M066 JMP WCBUF2 / NOT DONE YET /M066 CLA / GET RID OF LAST PATTERN WORD /M079 ISZ WCOUNT /FIELD DONE /A078 JMP WCBUF1 /SET NEXT /A078 CDFMYF / DONE, CHANGE BACK TO OUR FIELD /M066 JMP I WCBUF /M066 WCOUNT, -20 /NUM BLOCKS IN FIELD /A078 /***********************************************************************//M066 / //M066 / FMTNOS--TELL USER THAT 8" SYSTEM DISKS CANNOT BE MADE //M066 / AND THAT HE MUST HIT RETURN TO RETURN TO THE //M066 / MAINTENANCE MENU //M066 / //M066 /***********************************************************************//M066 FMTNOS, /A053/M066 CIFMNU /M066 JMS I IOACAL /M066 0 /M066 TEXT50 /_S SYSTEM DISKETTES CANNOT BE MADE /M066 211 /M066 TEXT2A /8 INCH (SUSBSTRING) /M066 CIFMNU JMS I IOACAL /M066 0 /M066 TEXTG1 /_P_S_P /M066 1012 /POSITION /M066 TEXT26 /PRESS RETURN TO CONTINUE /M066 2700 /POSITION AFTER /M066 FMTNO1, JMS WTFRRS /WAIT FOR OPR TO TYPE JMP FMTNO2 /RETURN--GO RETURN TO A MENU PAGE /M066 JMP FMTNO1 /GOLD-MENU, MAKE HE/SHE TYPE RETURN /M066 FMTNO2, CIFMNU /M066 JMS I MNUCAL /RETURN TO MENU PAGE /M066 DLMDU1 /START AGAIN WITH MAINTENANCE MENU /M066 CPYNAM, ZBLOCK 11 / ASCII STRING CONTAINING SOURCE VOLUME NAME/A066 RCVNAM, ZBLOCK 11 / SAME AS ABOVE FOR DESTINATION /A066 / PUT HERE FOR SPACE REASONS /A066 /*************MOVED HERE SPACE REASONS VER 074 ********************/M074 /D078BLKADJ, XX / ADJUST BLOCK NUMBER /A044 / IF BLOCK NUMBER IS DLALOC (ALLOCATION BLOCK) /A044 / THEN SKIP IT (OTHERWISE WHEN WE VERIFY IT /A044 / WON'T MATCH THE SYSTEM DISK /A044 /D078 TAD FMTQBK+RXQBLK / GET THE BLOCK NUMBER /D078 TAD M377 /D078 SNA /D078 ISZ FMTQBK+RXQBLK / SKIP ALLOCATION BLOCK /D078 SNA CLA /D078 ISZ FMTSYC / COUNT THIS BLOCK /D078 JMP I BLKADJ / RETURN /--------------- PAGE /***********************************************************************/ / / / FMTSYS -- INITIALIZE SYSTEM DISKETTE / / THIS ROUTINE IS DESIGNED TO INITIALIZE / / SYSTEM DISKETTES FOR THE FOLLOWING CASES. / / THERE IS NO CONDITIONALIZED CODE SO THAT THE ROUTINE / / WILL RUN ON EITHER DM-I or DM-II DEPENDING WHAT IS / / DETERMINED AT RUN TIME ABOUT THE SYSTEM AND DESTINATION / / DISKETTES / / / / CASES: 8" TO 8" DECmate-I RX01/RX02 / / 5" to 5" DECmate-II RX50 / / 8" to 5" DECmate-II development--first 5" disk / / 5" to 8" DECmate-II not permitted / / / /***********************************************************************/ FMTSYS, / INITIALIZE SYSTEM DISKETTE /A032 JMS FMTINI / GO JMS TIMMSG & COPY BOOT TO FMTBUF /A032 / 8 INCH SYSTEM DISKETTES CANNOT BE MADE/A037 / FROM 5 INCH SYSTEM DISKETTES /A037 TAD DENIN /C074 SNA CLA /=RX01/02? /C082 JMP FMTSD8 / SYSTEM DISK IS 8" /A037 IFDEF PIRATE < / IF SYSTEM DRIVE IS 5" /A034 JMP XFMT5 / GO TELL OPR NO COPY CAN BE MADE /A032 > / END IFDEF PIRATE /A034 JMS CHKDST /CHECK DEST..IF L.T. 800 BLOCKS =ERROR /A074 /RETURNS HERE IF RX01/02 ELSE RET+1 /A074 JMP XFMT8 /NO FORMAT FROM 5 TO 8 /C074 FMTD50, /WINNIE OR RX50 /A074 FMTDD5, / 5" DESTINATION DISK--WRITE BOOT /A042 JMS WR50BT / GO WRITE RX50 BOOT /A042 1 / WITH DOC/SYSTEM SET TO SYSTEM /A042 DCA DRVSRC / SOURCE DRIVE IS SYSTEM DRIVE /A035 TAD DENIN /INPUT DEN /C074 SNA /=RX01/02? /C082 JMP FMTSY1 / IF 8 TO 5 DON'T COPY 0, 78, OR 79 /A044 CLL RAR /A074 SZA CLA /RX50? /A074 JMP FMTSD7 / NO -WINNIE SOURCE RET /A074 TAD DENOUT /A074 CLL RAR /A074 SZA CLA /RX50? /A074 JMP FMTSD7 / NO -WINNIE SOURCE RET /A074 / COPY FIRMARE:: /A035 AC0003 / COPY RX50 FIRMWARE /A035 DCA DENSTY / INDEX 4TH LINE OF TABLE PARTBL /A035 JMS SETPAR / SET PARAMETERS /A035 JMS CPYTKS / COPY THESE TWO TRACKS /A035 / COPY TRACK ZERO (SETUP, ETC.) /A044 ISZ DENSTY / INDEX TRACK ZERO IN SETPAR TABLE/A037 /C074 / MAKE IT 5 AS 4 IS USED BY WINNIE/A066 /C074 ISZ DENSTY /(THE 6TH LINE IN TABLE PARTBL)/A037/C066/C074 JMS SETPAR / SET UP PARAMETERS /A050 JMS CPYTKS / COPY TRACK ZERO /A037 FMTSD7, /A074 JMS FMTDEN / RESTORE DENSITY TO DENSITY OF DRVDST /A037 JMP FMTSY1 / AND CONTINUE BELOW /A042 FMTSD8, / SYSTEM DISK IS 8" /A042 TAD DENOUT /OUTPUT DEN /A074 SZA CLA /=RX01/02? /A082 JMP FMTDD5 / DESTINATION DISK IS 5" OR WINNIE /A042 FMTSD9, /A074 JMS WRBOOT / WRITE 8" BOOTSTRAP /A042 / FMTSY1, /C078 JMS FMTSY / GO DO THE WRITE PASS /A044 /D078 JMS FMTVCD / GO LOAD THE CODE FOR THE VERIFY PASS /A045 /D078 JMS FMTSY / GO DO THE VERIFY PASS /A044 TAD (200 /BOOTABLE WINNIE BIT /A074 JMS FMTWN /IF WINNIE--SET VOLUME TO BOOTABLE /A074 JMP FMTERN / GO TELL USER WE ARE DONE /A044 FMTSY, XX / WRITE OR READ/VERIFY SYSTEM DISKETTE /A044 /D078 DCA CPSDFN / LOAD THE FUNCTION (WRITE OR VERIFY /A044 AC0003 / DCA RXQBLK+FMTQBK / START WITH BLOCK 3 TAD (-7 /SET FIRST PROCESS TO ALLIGN ON TRACK BNDRY/A078 DCA FMTQBK+RXQRS1 /A078 FMTSY2, TAD (-10 /SET ERROR RETRY COUNT /A078 DCA FMTCNT /RETRY COUNT /A078 FMTSY3, /C074 /C078 TAD (RXERD+4000 / READ BLOCKS DCA FMTQBK+RXQFNC DCA FMTQBK+RXQDRV / SET TO SYSTEM DRIVE /D078 DCA FMTSYC / CLEAR COUNTER DCA FMTQBK+RXQBAD / SET BUFFER ADDRESS /C078 TAD (-DLSEND /LAST SYSTEM BLOCK TO BE COPPIED /A078 JMS FMTSET /SET BLOCK COUNT /A078 JMS FMTQRX JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 /D078 ISZ FMTQBK+RXQBLK / BUMP BLOCK NUMBER /D078 ISZ FMTSYC / AND COUNTER /D078 JMS BLKADJ / GO SEE IF MUST ADJUST BLOCK NO. /A044 /D078 TAD FMTQBK+RXQBLK / TEST FOR END /D078 TAD (-DLSEND) / /M063 /D078 SNA CLA / /D078 JMP FMTSY4 / JUMP IF SO /D078 TAD FMTQBK+RXQBAD / ADJUST BUFFER ADDRESS /D078 TAD (400) /D078 SZA / /D078 JMP FMTSY3 / LOOP IF NOT YET TIME FOR WRITE FMTSY4, TAD (RXEWT+4000 / LOAD CODE FOR LOGICAL BIT WRITE /A078 DCA FMTQBK+RXQFNC TAD DRVDST / SET TO DESTINATION DRIVE /C032 DCA FMTQBK+RXQDRV /D078 TAD FMTSYC / SET LOOP COUNTER /D078 CIA /D078 DCA FMTSYC /D078 TAD FMTSYC / ADJUST BLOCK NUMBER /D078 TAD FMTQBK+RXQBLK /D078 DCA FMTQBK+RXQBLK /D078 DCA FMTQBK+RXQBAD / INIT BUFFER ADDRESS FMTSY5, JMS FMTQRX JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 / / /D078 TAD FMTQBK+RXQBAD / ADJUST BUFFER ADDRESS /D078 TAD (400) /D078 DCA FMTQBK+RXQBAD / /D078 ISZ FMTQBK+RXQBLK / INCR BLOCK NUMBER /D078 JMS BLKADJ / GO SEE IF MUST ADJUST BLOCK NUMBER /A044 /D078 ISZ FMTSYC / TEST LOOP COUNTER /D078 JMP FMTSY5 / LOOP IF MORE TO WRITE / JMS FMTVCD / GO LOAD THE CODE FOR THE VERIFY PASS /A078 DCA FMTQBK+RXQFNC /SET READ OR READ VERIFY COMMAND /A078 JMS FMTQRX /DO IT /A078 SKP /ERROR CHECK RETRY COUNT /A078 JMP FMTSY6 /CONT /A078 FMTRTR, /RETRY ROUTINE /A078 ISZ FMTCNT /DONE? /A078 JMP FMTSY3 /NO--RETRY READ INPUT /A078 JMP FMTER /CAN'T GET PAST ERROR /A078 FMTSY6, TAD FMTQBK+RXQRS1 /GET NUM BLOCKS READ /A078 CIA /SET POS /A078 TAD FMTQBK+RXQBLK /START BLOCK NUMBER /A078 DCA FMTQBK+RXQBLK /SET NEXT BLOCK NUMBER /A078 TAD (-DLSEND /LAST BLOCK TO BE COPIED /A078 TAD FMTQBK+RXQBLK /LAST READ /A078 SPA CLA /IS IT END? /A078 JMP FMTSY3 /NO /A078 / TAD DSBLKS / NEG NO OF SYSTEM BLOCKS /A035 DCA DSBLKC / IS NO OF LAST BLOCK TO CLEAR /A035 JMS CLABLK / CLEAR REMAINING BLOCKS / JMS RSTBLK /RESET BLK CNT AND FNC CODE TO WRITE VFY/A078 AC0001 / DCA FMTQBK+RXQBLK / WRITE BLOCK ONE JMS FMTQRX JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 / AC0001 / SET AC TO INDICATE SYSTEM DISKETTE /M031 DCA STDBSW / AND WRITE IN THIS FLAG LOCATION /M031 TAD DSBLKS / GET NEG NO SYS BLKS /A035 CIA / POSITIVATE /A035 DCA DSBLKC / PASS TO STDBL /A035 JMS FMTHAB / GO DO DIRECTORY AND ALLOC BLOCKS /A045 JMP I FMTSY / RETURN /C044 XFMT8, TAD (TEXT2A / 8 INCH SUBSTRING POINTER /A037 /D074 DCA DTDDS / SET IT FOR FOR THE MESSAGE /A037 JMP DTDEN2 / GO PUT OUT THE MESSAGE /A037 FMTCNT, -10 /RETRY COUNT /A078 FMTSYC, 0 /-------------------- PAGE / THIS WILL CLEAR THE BUFFER FOR THE RXHAN REQUEST AND THEN IT WILL / CLEAR THE REMAINING BLOCKS ON THE DISKETTE BEING WRITTEN / CLABLK, XX JMS WCBUF / WRITE THE WORST CASE PATTERN /C046 /D078 TAD CPSDFN / LOAD FUNCTION (WRITE OR READ/VFY) /A044 CLALP1, /C078 TAD (-10 /RETRY COUNT /A078 DCA CLACNT /SET IT /A078 CLALP2, TAD (RXEWT+4000 /READ COMMAND /A078 DCA FMTQBK+RXQFNC / SET IT AS THE Q-BLOCK FUNCTION CODE /A031 /D078 TAD (FMTBUF) / PUT IT BACK TO ORIGINAL BUFFER /D078 DCA FMTQBK+RXQBAD / TAD DSBLKC /LAST BLOCK AVAILABLE /A078 JMS FMTSET /SET BLOCK COUNT /A078 JMS FMTQRX / DO THE NEXT BLOCK JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 /D078 ISZ FMTQBK+RXQBLK / INCREMENT THE BLOCK NUMBER /D078 AC7776 / LOAD MINUS DLDIR /A044 /D078 TAD FMTQBK+RXQBLK / ADD BLOCK NUMBER /A044 /D078 SNA / SKIP THE HOME BLOCK /A044 /D078 ISZ FMTQBK+RXQBLK / BY GIVING AN EXTRA INCREMENT /A044 /D078 TAD (-EMESBK+DLDIR / SEE IF LOADER MESSAGE BLOCK /A044 /D078 SNA / IF SO, SKIP IT /A044 /D078 ISZ FMTQBK+RXQBLK / BY GIVING AN EXTRA INCREMENT /A044 /D078 TAD (-DLALOC+EMESBK / THE ALLOC BLOCK /A044 /D078 SNA CLA / SKIP IT ALSO /A044 /D078 ISZ FMTQBK+RXQBLK / BY GIVING AN EXTRA INCREMENT /A044 JMS FMTVCD /GET READ READ VERIFY CODE /A078 DCA FMTQBK+RXQFNC /SET FUNCTION CODE /A078 JMS FMTQRX /DO IT /A078 SKP /IS AN ERROR /A078 JMP CLALP3 /CONT /A078 CLARTY, /RETRY /A078 ISZ CLACNT /A078 JMP CLALP2 /NOT DONE /A078 JMP FMTER /CAN'T DO IT /A078 CLALP3, /A078 TAD FMTQBK+RXQRS1 /LAST BLOCK START /A078 CIA /POS /A078 TAD FMTQBK+RXQBLK /START BLK NUMBER /A078 DCA FMTQBK+RXQBLK /SET NEXT BLOCK /A078 TAD DSBLKC / NEG NO DSK BLOCKS TO CLEAR /A027 /C035 TAD FMTQBK+RXQBLK / SEE IF IT HAS REACHED ITS MAX SPA CLA /C078 JMP CLALP1 TAD DENSTY / CHECK DENSITY SZA CLA / IS SINGLE DENSITY? JMP I CLABLK / NO IS DOUBLE DENSITY. DONE... / TAD (RXEPW+4000) / WRITE OUT THE LAST TWO SECTORS DCA FMTQBK+RXQFNC / USING PHYSICAL WRITE TAD (25) / SET THE SECTOR DCA FMTQBK+RXQSEC DECIMAL /A035 TRKCMT, / THE CONSTANT IN THE FOLLOWING STATEMENT APPEARS TO HAVE BEEN /A035 / INCORRECTLY SPECIFIED FROM THE TIME THIS CODE WAS WRITTEN /A035 / ORIGINALLY, THE STATEMENT WAS TAD (114) OCTAL. /A035 / THE PURPOSE OF THIS CODE APPEARS TO BE TO COMPLETE THE /A035 / INITIALIZATION OF THE TRACK WHICH CONTAINS THE LAST BLOCK, /A035 / BLOCK 632. THIS BLOCK RESIDES ON TRACK 1+IP(3*632/26) /A035 / WHERE IP MEANS INTEGER PART. SINCE 3*632/26 IS 72.92+ /A035 / THE TRACK WHICH CONTAINS THE LAST BLOCK IS TRACK 73 /A035 / TRACKS 0,74,75, AND 76 ARE NOT USED ON RX01 DISKETTES /A035 TAD (73) / LOAD TRACK NO OF LAST BLOCK /C035 OCTAL /A035 DCA FMTQBK+RXQTRK / SET THE TRACK NUMBER /M032 JMS FMTQRX JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 TAD (30) / GET THE LAST SECTOR WRITTEN DCA FMTQBK+RXQSEC JMS FMTQRX JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 TAD (RXEWT+4000) / RESET THE FUNCTION DCA FMTQBK+RXQFNC / TO LOGICAL WRITE DCA FMTQBK+RXQBLK / CLEAR THE BLOCK COUNTER JMP I CLABLK CLACNT, -10 /ERROR RETRY COUNT /A078 CPYEXA, XX /A021 CIFMNU JMS I IOACAL / 0 TEXT11 / PRESS RETURN (THIS MSG CONTINUES BELOW) 1600 / POSITION CODE FOR CLEAR /C059 /A043 2012 / POSITION CODE FOR "PRESS RETURN" CPYCON, XX / ADDRESS OF MSG: / "FOR ANOTHER COPY" OR / "TO RETRY FORMAT" OR / "TO RETRY INITIALIZATION" AC7777 / MINUS COPY CODE /A057 TAD FNCODE / GET ORIGINAL FUNCTION CODE /A057 SZA CLA /A029 JMP CPYCN1 / IF NOT COPY BYPASS /A029 JMS DRVTST / SKIP IF EITHER DRIVE IS DRIVE 0 /A033 JMP CPYCN2 / NEITHER DRIVE IS DRIVE 0 /A033 CIFMNU / TELL USER THAT WE'RE DONE JMS I IOACAL / PRINT /C036 0 / DEFAULT OUTPUT ROUTINE TEXTG2 / GENERAL PURPOSE--2 SUBSTRINGS /A036 2212 / CURSOR POSITION TEXT33 / "OR, " /A036 2216 / /A036 TEXT3 / "REPLACE THE ORIGINAL ... /C036 3000 / FINAL CURSOR PSN /A036 JMP CPYCN1 / GO PRINT GOLD WITHOUT "OR" /A033 CPYCN2, CIFMNU /A033 JMS I IOACAL 0 TEXTG2 / GENERAL PURPOSE--2 SUBSTRINGS /C036 2412 TEXT33 / "OR, " /A036 IFNDEF ITALIAN <2416> IFDEF ITALIAN <2412> TEXT15 / "Press Gold ... /A033 2700 /A036 JMP I CPYEXA / RETURN /A055 / CPYCN1, /A029 JMS PPG / PRINT PRESS GOLD /A036 JMP I CPYEXA / RETURN /A021 PPG, XX / PRINT PRESS GOLD /A036 CIFMNU JMS I IOACAL 0 TEXTG1 / GENERAL PURPOSE--1 SUBSTRING /C036 2412 TEXT15 / "Press Gold ... /A033 2700 / JMP I PPG / RETURN /A036 /***********************************************************************/A031 / / GTDKID GETS THE DISK ID OF THE SYSTEM DISK / THE ID IS THE THREE NAME WORDS AND THE "RANDOM" WORD /A057 / IT IS USED TO INSURE THAT THE SAME SYSTEM DISK IS REINSERTED / IN CASES WHERE IT MUST BE REMOVED, C.F. BACKUP COPY / /*********************************************************************** GTDKID, XX /A017 DCA GTDKIA / SAVE BUFFER ADDRESS /A057 DCA FMTQBK+RXQDRV / SET TO DRIVE 0 /A031 JMS FMTDEN / GET DENSITY OF DRIVE 0 /A033 /D074 TAD DENSTY / AND SAVE IT /A033 /D074 DCA DENST0 / FOR LATER USE /A033 TAD (DLDIR) / DIR BLOCK /A017 DCA FMTQBK+RXQBLK /A017 TAD (RXERD+4000) /A017 DCA FMTQBK+RXQFNC / FUNCTION CODE /A017 TAD (FMTBUF) / BUFFER /A017 DCA FMTQBK+RXQBAD / ADDR /A017 JMS FMTRXT / READ /A017 JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 JMS BLKMOV / COPY INTO IDBUF /A057 FMTBUF+2-1 / SOURCE ADDRESS /A057 GTDKIA, XX / DESTINATION ADDRESS /A057 -4 / SIZE /A057 CDFMYF+10 / SOURCE FIELD /A057 CDFMYF / DESTINATION FIELD /A057 JMP I GTDKID / RETURN /A017 /-------------------- PAGE /***********************************************************************/ / / / CHKID--CHECK TO MAKE SURE ORIGINAL SYSTEM DISKETTE IS INSTALLED / / BEFORE WE RETURN TO MENU. ALSO INSURE THAT UDK'S ARE / / ENABLED AGAIN / / / / WHEN CPYDSK IS CALLED, THE NAME AND DISK "RANDOM" ID / / ARE READ INTO IDBUF0-3. BEFORE CPYDSK IS EXITED, / / THE NAME AND "RANDOM" ID FOR THE DISK IN DRIVE 0 / / ARE READ INTO IDBUF4-7. THIS ROUTINE CHECKS TO MAKE / / SURE THAT BOTH BLOCKS MATCH / / / / IF NO MATCH IS FOUND, THE OPERATOR IS ASKED TO INSERT / / THE ORIGINAL SYSTEM DISKETTE. THE ROUTINE IS NOT / / EXITED UNTIL THE NAME AND "RANDOM" ID MATCH / / / / BEFORE EXITING UDK'S ARE ENABLED AGAIN / / / /***********************************************************************/ CHKID, XX / CHECK ORIGINAL SYSTEM DISKETTE / CHKID1, TAD (CDFMYF+10 /RESET ID READ FIELD /A081 DCA FMTQBK+RXQBFD /A081 TAD (IDBUF+4-1 / LOAD COMPARE BUFFER INDEX /A057 JMS GTDKID / GO READ NAME & ID /C057 TAD (-4 / /A057 DCA T1 / SET UP COUNTER /A057 TAD (IDBUF-1 / /A057 DCA X1 / SET UP SOURCE INDEX /A057 TAD (IDBUF+4-1 / /A057 DCA X2 / SET UP COMPARE INDEX /A057 CHKIDL, TAD I X1 / READ OLD WORD /A057 CIA / TAD I X2 / COMPARE WITH NEW WORD SZA CLA / JMP CHKID2 / NO, GO ASK FOR ORIGINAL /A056 ISZ T1 / SEE IF LAST WORD /A057 JMP CHKIDL / NO, LOOP BACK /A057 CIFSYS / /A057 UDKOPS / ENABLE UDK'S AGAIN /A057 JMP I CHKID / RETURN /A024 / / / CRTNM / THIS CREATES A 3 WORD BUFFER THAT CONTAINS THE DISKETTE NAME / IT TAKES 6 ASCII CHARACTERS ANS PACKS THEM INTO 3 2-CHARACTER / 6-BIT WORDS / CALLING SEQUENCE: / TAD (PTR TO BUF ADDR TO STORE NAME) / JMS CRTNM / / CRTNM, XX DCA CRNMPT / SAVE BUF PTR DCA INIBK / CLEAR THE BUFFER FOR THE 6-CHAR NAME DCA INIBK+1 DCA INIBK+2 CDFMNU / CHECK FOR NO NAME TYPED IN TAD (MNIBUF) / THE INPUT BUFFER OFSET FROM MUBUF TAD I (MNUCAL+1) / GET THE ADDRESS OF MUBUF DCA CPYMN1 TAD I CPYMN1 CDFMYF / MAKE A CDF FOR THIS FIELD SNA CLA / JMP INLP2D / IF NO NAME SET DEFAULT NAME / AC7777 / LOAD MINUS ONE /C056 TAD CPYMN1 / TO GENERATE THE ADDRESS FOR X1 /C056 / DCA X1 DCA INBYTE / CLEAR COUNTER TAD (-6) / SET THE LOOP COUNTER DCA INLP1 TAD (INIBK-1) / GET THE STARTING ADDRESS OF THE BUFFER / THAT IT WILL BE STORED DCA INWDAR INLUP1, CDFMNU / GET THE CHARACTER (ASCII) TAD I X1 CDFMYF / MAKE A CDF FOR THIS FIELD / SNA / JMP INLPE1 / IF ZERO THEN END OF STRING JMS ININXT / INSERT THE CHAR. ISZ INLP1 / INCREMENT THE LOOP COUNTER JMP INLUP1 JMP INLP1D INLPE1, TAD (BLANK) / PAD THE REMAINING WITH BLANKS JMS ININXT / PLACE IT IN THE BUFFER ISZ INLP1 JMP INLPE1 INLP1D, TAD INIBK / SET THE NAME DCA I CRNMPT / IN THE BUFFER FOR BLOCK 0 ISZ CRNMPT /NEXT TAD INIBK+1 DCA I CRNMPT ISZ CRNMPT TAD INIBK+2 DCA I CRNMPT / JMP I CRTNM / CRNMPT, 0 / PTR TO BUFFER INLP2D, TAD (7061) / THIS IS WP DCA INIBK TAD (4552) / DI DCA INIBK+1 TAD (6454) / SK DCA INIBK+2 JMP INLP1D / INWDAR, 0 INLP1, 0 CPYMN1, 0 INIBK, ZBLOCK 3 / / THIS WILL PUT A CHARACTER THAT IS IN ASCII INTO THE PACKED STRING IN / COS-310 FORMAT. / ININXT, XX TAD (-140) / SPA / TAD (40) / MAKE ALL UPPER CASE TAD (100-OFFSET) / CONVERT TO 6 BIT SPA SNA / JMP I ININXT / IF IT IS A CHARACTER <40 SKIP IT AND P77 / GET ONLY 6 BITS MQL ISZ INBYTE / SEE IF IT IS THE FISRT OR SECOND BYTE TAD INBYTE CLL RAR SNL CLA / JMP ININXA / SECOND BYTE MQA ISZ INWDAR / INCREMENT THE ADDRESS BSW / SET FOR TOP BYTE TAD I INWDAR DCA I INWDAR JMP I ININXT / RETURN / ININXA, MQA TAD I INWDAR DCA I INWDAR JMP I ININXT / INBYTE, 0 / /GETSZE--GET NUMBER BLOCKS FOR VOLUME OR RX50 /FOR RX50 NUMBER OF BLOCKS =790 /FOR WINNIE VOLUME = NUMBER OF BLOCKS * (16) / GETSZE, 0 /A074 SNA /0=RX50 /A074 JMP GETSZ1 /IS AN RX50 /A074 CLL RTL /*4 /A074 CLL RTL /*4 /A074 SKP /A074 DECIMAL GETSZ1, TAD (800 /NUMBER BLOCKS AVAILABLE ON RX50/A074 /C075 OCTAL JMP I GETSZE /A074 /-------------------- PAGE /***********************************************************************A019 / A019 / THIS ROUTINE PRINTS A MESSAGE WHEN THE DRIVE IS NOT READY A019 / TELLING THE USER WHICH DRIVE IS NOT READY AND ASKING HIM A019 / TO PRESS GOLD MENU TO RETURN TO MAIN MENU FOR ANOTHER TRY A019 / A019 /***********************************************************************A019 DRVERR, XX CIFMNU /A019 JMS I IOACAL / "YOU NEED A DISKETTE IN DRIVE X" /A019 0 /A019 TEXT34 /A019 0050 / CLEAR FROM DATE & TIME /C057 1515 / CHANGED POINTER & DELETED SPACES /C033 FMTQBK+RXQDRV / DRIVE NUMBER NOT READY /C038 CIFMNU /A019 JMS I IOACAL /A019 0 /A019 TEXT36 / "INSERT A DISKETTE IN THE DRIVE" /A019 1715 / CURSOR LOCATION /A019 /C038 CIFMNU JMS I IOACAL / 0 TEXTG3 / GENERAL PURPOSE -- 3 SUBSTRINGS /A036 2115 /C038 TEXT35 / "AND PRESS RETURN /A036 / 2604 TEXT33 / "OR, " /C036 / IFNDEF ITALIAN <2610> / /C036 IFDEF ITALIAN <2604> TEXT15 / "Press Gold ... /A033 2700 / POSITION FOR CURSOR AFTER MSG /A033 / JMP I DRVERR /A019 / ********************************************************************* /A066 / / WININI - DISPLAYS THE VOLUME NAME THE USER IS ABOUT TO / INITIALIZE, ASKS FOR A RETURN TO CONTINUE OR / A GOLD MENU TO RETURN TO MAIN MENU W/O INITIALIZ / / ********************************************************************* /A066 WININI, XX CIFMNU JMS I IOACAL 0 WINITX / "THE VOLUME NAMED ????? WILL BE INITI.." 0050 / CLEAR FROM DATE TIME DISPLAY 1505 RCVNAM / THE VOLUME NAME (ASCII STRING) CIFMNU JMS I IOACAL 0 TEXTG3 2404 TEXT26 / "PRESS RETURN TO CONTINUE" 2604 TEXT33 / "OR, " IFNDEF ITALIAN <2610> IFDEF ITALIAN <2604> TEXT15 / "PRESS GOLD MENU TO RETURN..." 2700 JMP I WININI SHOWNM, XX TAD WINDST / NOW TELL USER THE NAME OF THE VOLUME /A066 / TO BE INITIALIZED & ALLOW EXIT /A066 SNA CLA / SKIP IF WINNIE /A066 JMP FMTDGO / ITS A DISKETTE- BYPASS /A066 JMS WININI / DISPLAY MESSAGE /A066 JMS WTFRRS / WAIT FOR ANSWER /A066 JMP FMTDGO / RETURN ENTERED- INITIALIZE IT /A066 JMP CPYDS2 / GOLD MENU- QUIT W/O INITIALIZING /A066 FMTDGO, JMP I SHOWNM /A066 / ********************************************************************* /A066 / /A066 / FMTWER-- TELL USER THAT A V1.5 WINNIE AREA DOES NOT HAVE /A066 / A VOLUME MOUNTED OR IS TOO SMALL FOR DOCUMENT INIT /A066 / /A066 / /A066 / ********************************************************************* /A066 FMTWER, TAD (0060) / CLEAR FROM TIME DISPLAY ON /A066 JMS CLRSCR /A066 TAD WINDST / WHICH TYPE OF ERROR??? /A066 /C074 /-1=VOL. NOT ASSIGNED -2=AREA TOO SMALL -3=AREA TOO LARGE. G.T. 4095 /A074 JMS SETEXT /GET TEXT STRING POINTER /A074 DCA FMTWTX / /A066 CIFMNU /A066 JMS I IOACAL / PRINT "DESTINATION AREA IS...." /A066 0 /A066 FMTWTX, 0 /A066 1505 /A066 TXTDST /A066 DRVDST /A066 / JMS FMTWTY /MADE INTO SUBRTN /A074 JMP CPYDS2 / " GOLD MENU- BACK TO MAIN MENU /C074 JMP CKDFS2 / ENTERED CR - GO BACK TO ASK FOR DRV # /C074 / FMTWTY, 0 /A074 CIFMNU /A066 JMS I IOACAL / /A066 0 /A066 TEXTG3 / GENERAL PURPOSE CONTROL STRING 3 /A066 2205 / LINE 22 COL 5 /A066 TEXT26 / "PRESS RETURN TO CONTINUE /A066 2405 / LINE 24 COL 5 /A066 TEXT33 / "OR, " /A066 IFNDEF ITALIAN <2411> / /A066 IFDEF ITALIAN <2405> TEXT15 / "PRESS GOLD MENU TO RECALL THE /A066 2700 / LINE 27 COL 0--FOR OPR RESP /A066 / JMS WTFRRS / WAIT FOR REPLY /A066 ISZ FMTWTY / ENTERED CR - GO BACK TO ASK FOR DRV # /C074 JMP I FMTWTY / " GOLD MENU- BACK TO MAIN MENU /C074 /********************************************************************/A074 /FOLLOWING MAKES SURE THAT THE SYSTEM VOLUME ON THE WINNIE IS BOOTABLE /A074 / AND THAT DOC VOLUME IS NOT /A074 / /***********************************************************************/A074 FMTWN, XX /A074 DCA BOOTBT /SAVE BOOTABLE WINNIE BIT /A074 AC7776 /A074 TAD DENSTY /A074 SPA SNA CLA /WINNIE /A074 JMP I FMTWN /NO EXIT. /A074 TAD DRVDST /DESTINATION DRIVE /A074 DCA FMTQBK+RXQDRV / PUT DRIVE # IN Q-BLK /A066 /M076 JMS FMTGTV /GET VOLUME DATA DEST DRIVE /C074 JMP FMTER /ERROR /A074 CDFMYF+10 /BUFFER FIELD /A074 TAD I BOOTLC /LOCATION OF BOOT BIT /A074 AND (7577 /CLEAR BOOT BIT /A074 TAD BOOTBT /SET BOOTABLE BIT /A074 DCA I BOOTLC /A074 CDFMYF /A074 TAD (RDEUPD /A074 DCA FMTQBK+RXQFNC /UPDATE VOLUME DATA /A074 JMS FMTRXT /A074 JMP FMTER /A074 JMP I FMTWN /RET /A074 BOOTLC, 21 /LOCATION OF BOOT WORD /A074 BOOTBT, 200 /BOOT BIT /A074 / /GET VOLUME DATA /A074 / FMTGTV, 0 /A074 TAD (RDEGTV+4000) / SET Q-BLK FOR GET VOLUME DATA CALL /A066 DCA FMTQBK+RXQFNC /A066 DCA FMTQBK+RXQBLK / BE SURE VALID BLOCK # (0 ALWAYS IS) /A066 JMS FMTRXT / QUEUE REQUEST W/O CHECKING TIME /A070 SKP /IS AN ERROR /A074 ISZ FMTGTV /NORMAL RET /A074 JMP I FMTGTV /A074 /-------------------- PAGE /D056 ERRMES, /D056 TEXT '^P &TYPING "!A" HAS NO MEANING HERE, PLEASE RETYPE.^P' / THESE ARE THE CONSTANTS AND ADDRESSES USED BY THE ERROR MESSAGE. / / FNCER, / REDFNC /THE ADDRESS OF THE STRING THAT SAYS READ / WTFNC /THE ADDRESS OF THE WRITE MESSAGE STRING / FMTFNC /THE ADDRESS OF THE FORMAT MESSAGE STRING /A028 / WTFNC, IFDEF ENGLSH < TEXT 'WRITE' > IFDEF ITALIAN < TEXT "SCRITTURA" > IFDEF V30NOR < TEXT "SKRIVE" > /A086 IFDEF V30SWE < TEXT 'SKRIV'> / REDFNC, IFDEF ENGLSH < TEXT 'READ' > IFDEF ITALIAN < TEXT "LETTURA" > IFDEF V30NOR < TEXT "LESE" > /A086 IFDEF V30SWE < TEXT 'L\DS'> / FMTFNC, IFDEF ENGLSH < TEXT 'FORMAT' > /**************************************************************/A028 / FOLLOWING MESSAGES MUST BE CHANGED TO REFLECT FORMAT /A028 /******************************************************************/A028 IFDEF ITALIAN < TEXT "FORMATO" > IFDEF V30NOR < TEXT 'FORMATERE'> /A086 IFDEF V30SWE < TEXT 'FORMATERA'> / /-------------------- / / COMMANDS / /D056 COPYST, IFDEF ENGLSH < TEXT 'COPY' > /D056 IFDEF CANADA < TEXT "COPIE" > /D056 IFDEF FRENCH < TEXT "COPIE" > /D056 IFDEF DUTCH < TEXT "KOPIE" > /D056 IFDEF GERMAN < TEXT "COPY" > /D056 IFDEF NORWAY < TEXT "KOPI" > /D056 IFDEF SWEDSH < TEXT "KOPI" > /D056 IFDEF DANISH < TEXT "KOPI" > /D056/ /D056 NOST, IFDEF ENGLSH < TEXT 'NO' > /D056 IFDEF CANADA < TEXT "NON" > /D056 IFDEF FRENCH < TEXT "NON" > /D056 IFDEF DUTCH < TEXT "NEE" > /D056 IFDEF GERMAN < TEXT "NEIN" > /D056 IFDEF NORWAY < TEXT "NEI" > /D056 IFDEF SWEDSH < TEXT "NEJ" > /D056 IFDEF DANISH < TEXT "NEJ" > /D056/ /D056 IFDEF CANADA < TEXT "POUR CONTINUER" > /D056 IFDEF FRENCH < TEXT "POUR CONTINUER" > /D056 IFDEF DUTCH < TEXT "VOOR VERVOLG" > /D056 IFDEF GERMAN < TEXT "FORTS." > /D056 IFDEF NORWAY < TEXT "FORTS" > /D056 IFDEF SWEDSH < TEXT "FORTS" > /D056 IFDEF DANISH < TEXT "FORTS" > / / MESSAGES / IFDEF ENGLSH < TEXT1A, TEXT '^P!E -- &B&A&C&K&U&P &M&E&N&U --' /C066 TEXT1B, TEXT '^P&REMOVE THE SYSTEM DISKETTE FROM DRIVE 0.' TEXT1C, TEXT '^P&PLACE THE DISKETTE(S) INTO THE FOLLOWING DRIVE(S):' /C066 TEXT1D, / THIS TEXT MUST BE AN EVEN NUMBER OF CHARACTERS FOR /A033 / FOR ALL TRANSLATIONS. THE NEXT TEXT STATEMENT IS /A033 / DESIGNED TO BE A CONTINUATION OF THIS TEXT BY /A033 / REORIGINING TO OVERLAY THE FULL ZERO WORD TERMINATOR *.-1 /A033 TEXT '^P&!S !D - &D&E&S&T&I&N&A&T&I&O&N !S - &THIS !S ' /C033/C066 *.-1 /THE FOLLOWING TEXT IS A CONTINUATION OF THE ABOVE TEXT /A033 TEXT 'WILL BE &O&V&E&R&W&R&I&T&T&E&N.' /C033 TEXT1E, TEXT '^P&PLACE THE DISKETTE WHICH IS TO &R&E&C&E&I&V&E THE COPY INTO DRIVE !D.' /C033 TEXT1F, TEXT '^P&USE A BLANK !S OR A USED !S YOU NO LONGER NEED.' TEXT1G, TEXT '^P&!S !D - &S&O&U&R&C&E !S - &THIS !S WILL BE &R&E&A&D.' /C033/C066 TEXT1H, TEXT '^P&PLACE THE DISKETTE WHICH IS TO BE &C&O&P&I&E&D INTO DRIVE !D.' /C033 TEXT1I, / DELETED POSITION COMMAND /C036 TEXT '&WHEN YOU ARE READY TYPE &C&O&P&Y AND &PRESS &R&E&T&U&R&N.' DEVDRV, TEXT 'DRIVE' / /A066 DEVARE, TEXT 'DEVICE' / /A066 MEDDSK, TEXT 'DISKETTE' / /A066 MEDVOL, TEXT 'VOLUME' / /A066 > IFDEF ITALIAN < TEXT1A, TEXT '^P!E -- !&SALVATAGGIO --' /C066 TEXT1B, TEXT "^P&TOGLIERE IL !&SISTEMA DALL'UNIT\A 0." TEXT1C, TEXT '^P&INSERIRE I DISCHETTI NELLE SEGUENTI UNIT\A:' /C066 TEXT1D, / THIS TEXT MUST BE AN EVEN NUMBER OF CHARACTERS FOR /A033 / FOR ALL TRANSLATIONS. THE NEXT TEXT STATEMENT IS /A033 / DESIGNED TO BE A CONTINUATION OF THIS TEXT BY /A033 / REORIGINING TO OVERLAY THE FULL ZERO WORD TERMINATOR *.-1 /A033 TEXT '^P&!S !D - !&COPIA - &QUESTO !S ' /C033/C066 *.-1 /THE FOLLOWING TEXT IS A CONTINUATION OF THE ABOVE TEXT /A033 TEXT 'VIENE !&SOVRASCRITTO.' /C033 TEXT1E, TEXT "^P&INSERIRE IL SUPPORTO !&COPIA NELL'UNIT\A !D." /C033 TEXT1F, /TEXT '^P&USE A BLANK !S OR A USED !S YOU NO LONGER NEED.' TEXT1G, TEXT '^P&!S !D - !&ORIGINALE - &QUESTO !S VIENE !&LETTO.' /C033/C066 TEXT1H, TEXT "^P&INSERIRE IL SUPPORTO !&ORIGINALE NELL'UNIT\A !D." /C033 TEXT1I, / DELETED POSITION COMMAND /C036 TEXT '&INTRODURRE !&COPIA E &PREMERE !&RITRNO.' DEVDRV, TEXT 'UNIT\A' / /A066 DEVARE, TEXT 'UNIT\A' / /A066 MEDDSK, TEXT 'SUPPORTO' / /A066 MEDVOL, TEXT 'SUPPORTO' / /A066 > IFDEF V30NOR < /A086 TEXT1A, TEXT '^P!E -- !&KOPERING --' /A086 TEXT1B, TEXT '^P&TA SYSTEMDISKETTEN UA AV STASJON 0.' /A086 TEXT1C, TEXT '^P&SETT DISKETTEN(E) INN I F\XLGENDE STASJON(ER):' /A086 TEXT1D, TEXT '^P&!S !D - !&MOTTAGER-!S - !S HER VIL BLI !&OVERSKREVET.' /A086 TEXT1E, TEXT '^P&DISKETTEN DU SKAL KOPIERE !&TIL, SETTES I STASJON !D.' /A086 TEXT1F, TEXT '^P&BRUKEN NY !S EL. EN GAMMEL !S DU IKKE TRENGER.' /A086 TEXT1G, TEXT '^P&!S !D - !&AVSENDER-!S - &DISKETTEN HER VIL BLI !&LEST.'/A086 TEXT1H, TEXT '^P&DISKETTEN DU SKAL KOPIERE !&FRA, SETTES I STASJON !D.' /A086 TEXT1I, TEXT '&N\ER DETTE ER GJORT, SKRIV !&KOPI OG TRYKK P\E !&RETUR.' /A086 DEVDRV, TEXT 'STASJON' /A086 DEVARE, TEXT 'ENHET' /A086 MEDDSK, TEXT 'DISKETT' /A086 MEDVOL, TEXT 'OMR\EDE' /A086 > IFDEF V30SWE < TEXT1A, TEXT '^P!E -- &S\DKERHETSKOPIERING --' /C066 TEXT1B, TEXT '^P&TA UT SYSTEMDISKETTEN I ENHET 0.' TEXT1C, TEXT '^P&S\TT DISKETT(ER) I F\VLJANDE ENHET(ER):' /C066 TEXT1D, / THIS TEXT MUST BE AN EVEN NUMBER OF CHARACTERS FOR /A033 / FOR ALL TRANSLATIONS. THE NEXT TEXT STATEMENT IS /A033 / DESIGNED TO BE A CONTINUATION OF THIS TEXT BY /A033 / REORIGINING TO OVERLAY THE FULL ZERO WORD TERMINATOR *.-1 /A033 TEXT '^P&!S !D - &DISKETTKOPIA !S - &DENNA !S ' /C033/C066 *.-1 /THE FOLLOWING TEXT IS A CONTINUATION OF THE ABOVE TEXT /A033 TEXT 'KOMMER ATT SKRIVAS \VVER. ' /C033 TEXT1E, TEXT '^P&S\DTT I DISKETTEN, SOM SKA TA EMDT KOPIAN, I ENHET !D.' /C033 TEXT1F, TEXT '^P&ANV\DND EN TOM !S ELLER EN ANV\DND !S SOM DU INTE L\DNGRE BEH\VVER.' TEXT1G, TEXT '^P&!S !D - &ORIGINAL!S - &DENNA !S KOMMER ATT L\DSAS.' /C033/C066 TEXT1H, TEXT '^P&S\DTT I ORIGINALDISKETTEN I ENHET !D.' /C033 TEXT1I, / DELETED POSITION COMMAND /C036 TEXT '&N\DR DU \DR KLAR, SKRIV KOPIERA OCH TRYCK P\E RETUR.' DEVDRV, TEXT 'ENHET' / /A066 DEVARE, TEXT 'ENHET' / /A066 MEDDSK, TEXT 'DISKETT' / /A066 MEDVOL, TEXT 'VOLYM' / /A066 > / END IFDEF V30SWE / TEXT3, /A010 /V036 CHANGED TO A SUBSTRING BY REMOVING ^P&O&R /A036 /V036 ADDED WORD "ORIGINAL" /A036 IFDEF ENGLSH < TEXT '&REPLACE THE ORIGINAL SYSTEM DISKETTE IN DRIVE 0 AND'>/A010/C036 IFDEF ITALIAN < TEXT "&INSERIRE IL DISCO SISTEMA NELL'UNIT\A 0 E"> IFDEF V30NOR < TEXT '&SETT SYSTEMDISKETTEN TILBAKE I STASJON 0 OG'> /A086 IFDEF V30SWE < TEXT '&BYT UT ORIGINALSYSTEMDISKETTEN I ENHET 0 OCH'> / TEXT11, IFDEF ENGLSH < TEXT '^P!E^P&PRESS &R&E&T&U&R&N ^S'> /C028/C033/C057 IFDEF ITALIAN < TEXT '^P!E^P&PREMERE !&RITORNO ^S'> IFDEF V30NOR < TEXT '^P!E^PTRYKK P\E !&RETUR ^S'> /A086 IFDEF V30SWE < TEXT '^P!E^PTRYCK P\E RETUR ^S'> TEXT1K, IFDEF ENGLSH < TEXT 'FOR ANOTHER COPY' > /C028 IFDEF ITALIAN < TEXT "PER UN'ALTRA COPIA"> IFDEF V30NOR < TEXT 'FOR \E F\E EN KOPI TIL'> /A086 IFDEF V30SWE < TEXT 'F\VR ATT KOPIERA'> TEXT1L, IFDEF ENGLSH < TEXT 'TO RETRY FORMAT' > /C028 IFDEF ITALIAN < TEXT 'PER RIPROVARE : FORMATO NON CORRETTO'> IFDEF V30NOR < TEXT 'FOR \E FORMATERE P\E NYTT'> /A086 IFDEF V30SWE < TEXT 'F\VR ATT FORMATERA IGEN'> / TEXT1M, IFDEF ENGLSH < TEXT '^P!E^P&FORMAT IN PROGRESS - &PLEASE STAND BY.'> /A028 IFDEF ITALIAN < TEXT "^P!E^P&FORMATTAMENTO IN CORSO - &PREGO ATTENDERE..."> IFDEF V30NOR < TEXT '^P!E^P&FORMTERING P\EG\ER. &VENT...'> /A086 IFDEF V30SWE < TEXT '^P!E^P&FORMATERING P\EG\ER - &V\DNTA'> / TEXT1N, IFDEF ENGLSH < TEXT 'TO RETRY INITIALIZATION, OR' > /A030 IFDEF ITALIAN < TEXT "PER RIPROVARE : INIZIALIZZAZIONE NON CORRETTA"> IFDEF V30NOR < TEXT 'FOR \E KLARGJ\XRE P\E NYTT EL.'> /A086 IFDEF V30SWE < TEXT 'F\VR ATT INITIERA IGEN, ELLER'> / TEXT12, IFDEF ENGLSH < TEXT '^P!E ^P&E&L&A&P&S&E&D &T&I&M&E &C&L&O&C&K 0:00' > / / THE "0:00" HAS BEEN REMOVED FROM THE FOREIGN TRANSLATIONS BECAUSE IT IS NOT / ACTUALLY NEEDED AS THE "0:00" IS NEVER ON THE SCREEN FOR MORE THAN A SECOND / AND "0:00" IS PRINTED ANYWAY BY THE TIME ROUTINE. / IFDEF ITALIAN < TEXT "^P!E^P!&TEMPO !&IMPIEGATO"> IFDEF V30NOR < TEXT '^P!E ^P!&MEDG\ETT !&TID'> /A086 IFDEF V30SWE < TEXT '^P!E ^PANV\DND TID: 0:00'> / TEXT13, TEXT '^P!D:!2D' TEXT15, IFDEF ENGLSH < TEXT '&PRESS &GOLD &M&E&N&U TO RECALL THE &MAIN &MENU.' /C033 > /A SUBSTRING--HAS NO INTERNAL PARAMETERS /A033 IFDEF ITALIAN < TEXT "&PREMERE &ORO !&MENU PER TORNARE AL &MENU &PRINCIPALE."> IFDEF V30NOR < TEXT '&TRYKK P\E &GULL !&MENY FOR \E F\E &HOVEDMENYN.'> /A086 IFDEF V30SWE < TEXT '&ANV\DND GULD MENY F\VR ATT \ETERG\E TILL HUVUDMENYN'> / FMTERM, IFDEF ENGLSH < TEXT '^P!E&ERROR ON !S ^D WHILE TRYING TO !S' /C066 > IFDEF ITALIAN < TEXT "^P!E&ERRORE SULL'!S ^D IN !S"> IFDEF V30NOR < TEXT '^P!E&FEIL P\E !S ^D VED FORS\XK P\E \E !S'>/A086 IFDEF V30SWE < TEXT '^P!E&FEL P\E !S ^D VID !S'> IFDEF ENGLSH < TEXT17, TEXT '^P!E-- &B&A&C&K&U&P &E&R&R&O&R &M&E&N&U --' /A014 TEXT18, TEXT '&THE DENSITITES OF Y' /SUBSTRING OF TEXT20 (DM-I) /A034 TEXT20, TEXT '^P^SOUR DISKETTES ARE DIFFERENT.' /A014 TEXT22, TEXT '^P&YOU ARE TRYING TO COPY FROM!S TO!S.' /A014 /C033 /C034 TEXT23, TEXT '^P&PLEASE USE A!S DISKETTE FOR THE COPY.' /A014 /C033 /C034 TEXT24, TEXT ' SINGLE DENSITY' /C033 TEXT25, TEXT ' DOUBLE DENSITY' /C033 TEXT2A, TEXT ' 8 INCH' /A033 TEXT2B, TEXT ' 5 INCH' /A033 TEXTY, TEXT '&Y' / DM-II SUBSTR FOR TEXT20 /A034 TEXT26, TEXT '&PRESS &R&E&T&U&R&N TO CONTINUE' /A014 /C051 TEXWS1, TEXT '^P!E&THERE IS NO VOLUME ASSIGNED TO ^S DEVICE !D' /C074 TEXWS2, TEXT '^P!E&VOLUME ASSIGNED TO ^S DEVICE !D IS TOO SMALL' /C074 TEXWS3, TEXT '^P!E&VOLUME ASSIGNED TO ^S DEVICE !D IS TOO LARGE' /C074 TXTSRC, TEXT 'SOURCE' /A066 TXTDST, TEXT 'DESTINATION' /A066 WINRCV, TEXT '^P&THE VOLUME NAMED ^A WILL &R&E&C&E&I&V&E THE COPY' /A066 WINCPY, TEXT '^P&THE VOLUME NAMED ^A WILL BE &C&O&P&I&E&D' /A066 WINITX, TEXT '^P!E^P!E&THE VOLUME NAMED ^A WILL BE INITIALIZED' /A066 /D057 TEXT27, TEXT '-- &F&O&R&M&A&T &D&I&S&K&E&T&T&E --' /A014 TEXT30, TEXT '&PLEASE SELECT HOW THIS DISKETTE WILL BE INITIALIZED.' /A014 TEXT31, TEXT '&TYPE &D FOR DOCUMENT OR &S FOR SYSTEM ' /A014 /C061 /D057 TEXT32, TEXT 'THEN &PRESS &R&E&T&U&R&N' /A014 TEXT33, TEXT '&O&R, ' /A014 TEXT34, TEXT '^P!E^P!E&YOU NEED A DISKETTE IN DRIVE !D' /A019 /C038 TEXT35, TEXT '&AND &PRESS &R&E&T&U&R&N' /A019 TEXT36, TEXT '^P!E&INSERT A DISKETTE IN THE DRIVE' /A019 /D057 TEXT40, TEXT '^P!E---- &B&A&C&K&U&P &D&I&S&K&E&T&T&E ----' /A019 TEXT50, TEXT '^P!E^S &SYSTEM &DISKETTES CAN NOT BE MADE' /A032 /C037 > IFDEF ITALIAN < TEXT17, TEXT '^P!E-- !&SALVATAGGIO - !&ERRORE --' /A014 TEXT18, TEXT '&LA DENSIT\A DEI' /SUBSTRING OF TEXT20 (DM-I) /A034 TEXT20, TEXT "^P^SDISCHETTI E' DIFFERENTE." /A014 TEXT22, TEXT '^P&IMPOSSIBILE COPIARE DA!S A!S.' /A014 /C033 /C034 TEXT23, TEXT '^P&USARE UN DISCHETTO A!S.' /A014 /C033 /C034 TEXT24, TEXT ' SINGOLA DENSIT\A' /C033 TEXT25, TEXT ' DOPPIA DENSIT\A' /C033 TEXT2A, TEXT ' 8 INCH' /A033 TEXT2B, TEXT ' 5 INCH' /A033 TEXTY, TEXT ' ' / DM-II SUBSTR FOR TEXT20 /A034 TEXT26, TEXT '&PREMERE !&RITORNO PER CONTINUARE' /A014 /C051 TEXWS1, TEXT '^P!E&NON CI SONO^SARCHIVI DOCUMENTI DEFINITI COME UNIT\A !D' /C074 TEXWS2, TEXT '^P!E&ARCHIVIO DOCUMENTI DEFINITO^SCOME UNIT\A !D TROPPO PICCOLO' /C074 TEXWS3, TEXT '^P!E&ARCHIVIO DOCUMENTI DEFINITO^SCOME UNIT\A !D TROPPO GRANDE' /C074 TXTSRC, TEXT ' ' /A066 TXTDST, TEXT ' ' /A066 WINRCV, TEXT '^P&ARCHIVIO DOCUMENTI !&COPIA ^A' /A066 WINCPY, TEXT '^P&ARCHIVIO DOCUMENTI !&ORIGINALE ^A' /A066 WINITX, TEXT "^P!E^P!E&L'ARCHIVIO DOCUMENTI ^A VIENE INIZIALIZZATO" /A066 /D057 TEXT27, TEXT '-- !&FORMATO !&DISCHETTO --' /A014 TEXT30, TEXT '&SCEGLIERE COME INIZIALIZZARE IL DISCHETTO.' /A014 TEXT31, TEXT '&INTRODURRE &D PER DISCO DOCUMENTI O &S PER DISCO SISTEMA ' /A014 /C061 /D057 TEXT32, TEXT 'E PREMERE !&RITORNO' /A014 TEXT33, TEXT '&OPPURE, ' /A014 TEXT34, TEXT "^P!E^P!E&NECESSITA UN DISCHETTO NELL'UNIT\A !D" /A019 /C038 TEXT35, TEXT 'E PREMERE !&RITORNO' /A019 TEXT36, TEXT "^P!E&INSERIRE UN DISCHETTO NELL'UNIT\A" /A019 /D057 TEXT40, TEXT '^P!E---- &B&A&C&K&U&P &D&I&S&K&E&T&T&E ----' /A019 TEXT50, TEXT '^P!E&IMPOSSIBILE CREARE UN &DISCO &SISTEMA^S' /A032 /C037 > IFDEF V30NOR < /A086 TEXT17, TEXT '^P!E-- !&FEIL !&VED !&SIKKERHETSKOPIERING --' /A086 TEXT18, TEXT '&DISKETTE HAR' /SUBSTRING OF TEXT20 (DM-I) /A086 TEXT20, TEXT '^P^S&FORSKJELLIG TETTHET' /A086 TEXT22, TEXT '^P&DU FORS\XKER \E KOPIERE FRA!S TIL !S.' /A086 TEXT23, TEXT '^P&BRUK EN!S DISKETT TIL KOPIEN.' /A086 TEXT24, TEXT ' ENKEL TETTHET' /A086 TEXT25, TEXT ' DOBBEL TETTHET' /A086 TEXT2A, TEXT ' 8 TOMMERS' /A086 TEXT2B, TEXT ' 5 TOMMERS' /A086 TEXTY, TEXT ' ' / DM-II SUBSTR FOR TEXT20 /A086 TEXT26, TEXT '&TRYKK P\E !&RETUR FOR \E FORTSETTE' /A086 TEXWS1, TEXT '^P!E&DET ER IKKE TILDELT NOE OMR\EDE P\E ^SENHET !D' /A086 TEXWS2, TEXT '^P!E&OMR\EDE TILDELT P\E ^SENHET !D ER FOR LITE' /A086 TEXWS3, TEXT '^P!E&OMR\EDE TILDELT P\E ^SENHET !D ER FOR STORT' /A086 TXTSRC, TEXT 'AVSENDER-' /A086 TXTDST, TEXT 'MOTTAGER-' /A086 WINRCV, TEXT '^P&DU KOPIERER !&TIL OMR\EDET KALT ^A' /A086 WINCPY, TEXT '^P&DU KOPIERER !&FRA OMR\EDET KALT ^A' /A086 WINITX, TEXT '^P!E^P!E&OMR\EDET KALT ^A VIL BLI KLARGJORT' /A086 /D057 TEXT27, TEXT '-- &F&O&R&M&A&T &D&I&S&K&E&T&T&E --' /A086 TEXT30, TEXT '&ANJI HVA DISKETTEN SKAL KLARGJ\XRES TIL.' /A086 TEXT31, TEXT '&SKRIV &D FOR DOKUMENT EL. &S FOR SYSTEM' /A086 /D057 TEXT32, TEXT 'THEN &PRESS &R&E&T&U&R&N' /A086 TEXT33, TEXT 'EL., ' /A086 TEXT34, TEXT '^P!E^P!E&DET M\E ST\E EN DISKETT I STASJON !D' /A086 TEXT35, TEXT '&OG TRYKK P\E !&RETUR' /A086 TEXT36, TEXT '^P!E&SETT EN DISKETT I STASJONEN' /A086 /D057 TEXT40, TEXT '^P!E---- &B&A&C&K&U&P &D&I&S&K&E&T&T&E ----' /A086 TEXT50, TEXT '^P!E^S&DU KAN IKKE LAGE SYSTEMDISKETTER' /A086 > IFDEF V30SWE < TEXT17, TEXT '^P!E-- &S\DKERHETSKPIERINGSFEL --' /A014 TEXT18, TEXT '&DENSITETEN P\E D' /SUBSTRING OF TEXT20 (DM-I) /A034 TEXT20, TEXT '^P^SINA DISKETTER \ER OLIKA.' /A014 TEXT22, TEXT '^P&DU F\VRS\VKER KOPIERA FR\EN !S TILL !S.' /A014 /C033 /C034 TEXT23, TEXT '^P&ANV\DEND EN !SDISKETT F\VR KOPIERINGEN.' /A014 /C033 /C034 TEXT24, TEXT ' ENKEL DENSITET' /C033 TEXT25, TEXT ' DUBBEL DENSITET' /C033 TEXT2A, TEXT ' 8 TUM' /A033 TEXT2B, TEXT ' 5 TUM' /A033 TEXTY, TEXT '&J' / DM-II SUBSTR FOR TEXT20 /A034 TEXT26, TEXT '&TRYCK P\E RETUR F\VR ATT FORTS\DTTA' /A014 /C051 TEXWS1, TEXT '^P!E&DET FINNS INGEN VOLYM TILLDELAD F\VR ATT ^S ENHET !D' /C074 TEXWS2, TEXT '^P!E&VOLYM TILLDELAD F\VR ATT ^S ENHET !D \DR F\VR LITEN' /C074 TEXWS3, TEXT '^P!E&VOLYM TILLDELAD F\VR ATT ^S ENHET !D \DR F\VR STOR' /C074 TXTSRC, TEXT 'ORIGINAL' /A066 TXTDST, TEXT 'KOPIA' /A066 WINRCV, TEXT '^P&VOLYMEN ^A KOMMER ATT TA EMOT KOPIAN' /A066 WINCPY, TEXT '^P&VOLYMEN ^A KOMMER ATT KOPIERAS' /A066 WINITX, TEXT '^P!E^P!E&VOLYMEN ^A KOMMER ATT INITIERAS' /A066 /D057 TEXT27, TEXT '-- &F&O&R&M&A&T &D&I&S&K&E&T&T&E --' /A014 TEXT30, TEXT '&V\DLJ HUR DENNA DISKETT SKA INITIERAS' /A014 TEXT31, TEXT '&SKRIV D F\VR DOKUMENT ELLER S F\VR SYSTEM ' /A014 /C061 TEXT33, TEXT '' /A014 TEXT34, TEXT '^P!E^P!E&DU BEH\VER EN DISKETT I ENHET !D' /A019 /C038 TEXT35, TEXT 'OCH TRYCK P\E RETUR' /A019 TEXT36, TEXT '^P!E&S\DTT I EN DISKETT I ENHET' /A019 /D057 TEXT40, TEXT '^P!E---- &B&A&C&K&U&P &D&I&S&K&E&T&T&E ----' /A019 TEXT50, TEXT '^P!E^S &DU KAN INTE SKAPA SYSTEMDISKETTER' /A032 /C037 > / END IFDEF V30SWE TEXTG1, TEXT '^P^S^P' / GENERAL 1 SUBSTRING CONTROL STRING /A036 TEXTG2, TEXT '^P^S^P^S^P' / GENERAL PURPOSE--2 SUBSTRINGS /A036 TEXTG3, TEXT '^P^S^P^S^P^S^P' / GENERAL 3 SUBSRING CONTROL STRING /A036 PSCR, TEXT '^P!E' /CLEAR SCREEN /M036 TEXTDK, IFDEF ENGLSH < TEXT /^P &SOURCE !S IS SHORTER THAN DESTINATION !S BY !D BLOCKS./ > IFDEF ITALIAN < TEXT /^P !S &ORIGINALE HA !D BLOCCHI IN MENO DEL !S &COPIA./ > IFDEF V30NOR < TEXT /^P &AVSENDERIS !S ER !D BLOKKER MINDRE ENN MOTTAGER !S./ > /A086 IFDEF V30SWE < TEXT /^P &ANTAL F\DRRE BLOCK I ORIGINALET !S, JFR MED KOPIAN !S: !D./ > / END IFDEF V30SWE /-------------------- /***********************************************************************/A032 / /A032 / RX01/RX02 BOOT BLOCK TEMPLATE /A032 / TAKEN FROM LOADB7.PA VERSION 004 01-FEB-82 074 /A032 / STRIPPED ALL BEFORE "HACK= " /A032 / THEN STRIPPED ALL COMMENT LINES /A032 / APPROPRIATELY DELETED *ORG STATEMENTS /A032 / AND ADDED RELOC STATEMENTS /A032 / REDEFINED DUPLICATE LABELS WHICH CAUSED PROBLEMS /A032 / /A032 /***********************************************************************/A032 HACK= " -1 / DEFINITION OF THE "[H]ALF [A]SCII" [C]HARACTER [K]ONSTANT. WPBOOT= 2 / LOAD POINT FOR THE PRIMARY BOOTSTRAP. BOOT02= WPBOOT+60 / LOAD POINT FOR THE REMAINING PRIMARY BOOT. BT0102, /BOOT TEMPLATE RX01/RX02 /A032 RELOC WPBOOT / ASSEMBLE AS THO AT WPBOOT /A032 HLT /STRT ADDR OVERLAYED IN DD MODE BTRXID, "#-HACK^100+" -HACK / ...PRIMARY BTTRAK, "W-HACK^100+"P-HACK / ......BOOTSTRAP BTLSEC, "D-HACK^100+"I-HACK / .........HEADER BTSECT, "S-HACK^100+"K-HACK / ............PRECEEDS BTSCTR, "/-HACK^100+"[-HACK / ...............ACTUAL " -HACK^100+" -HACK / ..................BOOTSTRAP. 0 0 /D074 IFDEF WINNIE L.T. /A065 BTTBUF, RXDLDP-201 /M065 BTBFRA, RXDLDP-201 /M065 BTBFRB, RXDLDP-201 /M065 /D074 G.T. / END IFDEF WINNIE /A065 /D074 IFNDEF WINNIE L.T. /A065 /D074BTTBUF, RXDLDP-1 /D074BTBFRA, RXDLDP-1 /D074BTBFRB, RXDLDP-1 /D074 G.T. / END IFNDEF WINNIE /A065 BTBFFR, 377 MSK422, 422 /MASK FOR DENSITY,UNIT#,READ CODE BTCMND, 22 /BITS=DD,UNIT#,READ MSK24, 2400 /ADD TO BTCMND TO ALTERNATELY SET UNIT & DENSITY BTINC, JMP BTPTCH /ONE TIME JMP. ON SUCCESFUL READ ISZ BTXFER /SET DONE RETURN JMP I BTXFER /RETURN BTMORE, DCA I BTBFFR / DEPOSIT DATUM IN CORE. BTEMPT, JMS BTXFER / TRANSFER A DATUM FROM SILO. JMP BTMORE / NOT DONE - REPEAT FOR ENTIRE SECTOR. ISZ BTSCTR / DONE - ALL SECTORS READ ? JMP BTNEXT / NO - READ NEXT. JMP I BTSCND / YES - ENTER SYSTEM BOOTSTRAP CODE. RXISDN / DONE ? /M064 JMP BTBOO8 / NO - WAIT FOR READY FIRST. CLA CLL / INSURE AC CLEAR FOR DONE RETURN RXISER /ERROR? /M064 JMP BTINC /NO INC RET SKP /IS ERROR BTPTCH, DCA BTINC /CLEAR JMP ON SUCCESSFUL DONE TAD MSK24 /ALTERNATE 24 & 2400 BSW DCA MSK24 TAD MSK24 /GET IT JMP BTREAD / JUMP OVER CRITICAL AREA 2 JMS BTBOO7 / TRANSFER A DATUM DCA BOOT02-1 / ...AND INSERT IT IN-LINE. RELOC / END OF SECTION /A032 RELOC BOOT02-7 /A032 BTXFER, / ENTRY POINT TO "BTXFER". BTBOO7, / ### ENTRY POINT TO "READ" SUBROUTINE. ### RELOC / END OF SECTION /A032 RELOC BOOT02-6 /A032 BTBOO8, / CONTROLLER READY ? RELOC / END OF SECTION /A032 RELOC BOOT02-2 /A032 RELOC / END OF SECTION /A032 RELOC BOOT02-1 /A032 RELOC / END OF SECTION /A032 RELOC BOOT02 BTREAD, TAD BTCMND AND MSK422 /KEEP DENSITY,UNIT# AND READ CODE DCA BTCMND / ......DENSITY BIT IN COMMAND WORD TAD BTCMND / LOAD THE COMMAND RTL / ...AND ISOLATE RTL / ......DENSITY BIT IN THE LINK CLA CMA RAL / .........THEN BUILD DCA BTSCTR / ............THE CORRECT SECTOR COUNT. IAC / CALCULATE THE PROPER (SD OR DD) DCA BTSECT / ......PHYSICAL SECTOR NUMBER. BTNEXT, AC0004 / SET THE PHYSICAL I/O BIT TAD BTCMND / ...AND SUBMIT COMMAND TO CONTROLLER. RXILCD /M064 AC0003 / LOAD SECTOR # TO READ TAD BTSECT / ...INCREMENT IT BY INTERLEAVE JMS BTXFER / ......SUBMIT IT TO CONTROLLER DCA BTSECT / .........AND SAVE IT AGAIN CLA CLL IAC / LOAD "BOOT" TRACK NUMBER,... JMS BTXFER / ...AND SUBMIT IT TO CONTROLLER ALSO. JMS BTXFER / WAIT FOR CONTROLLER "DONE" BTSCND, /LOC 400 = DD BIT USED TO SAVE SPACE 400 TAD BTCMND / GET "EMPTY SILO" COMMAND RXILCD / ...AND SUBMIT IT TO CONTROLLER. /M064 JMP BTEMPT / GO EMPTY THE SILO 0 / ADD THIS LINE TO ALL TEMPLATES /A032 / BECAUSE AN EXTRA LOCATION GETS /A032 / WRITTEN ON THE IMAGE ON THE FLOPPY /A032 / RELOC / BACK TO ORIGINAL ORIGIN. RX01MID, / LABEL FOR BLKMOV /A032 RELOC 0400 / THIS STUFF GOES AT 0400 /A032 AC0001 / JMS TTY /TYPE A=GOT IN THIS FAR TAD BTHALT / PUT A HALT INSTRUCTION AT THE END DCA BTPTCH / ...OF THE ERROR BRANCH AC0002 / JMS TTY /B=UNIT 0 OK TAD BTCMND / LOAD COMMAND FROM PRIMARY BOOT. RTL / ISOLATE "SD"/"DD" RTL / ...IN REGISTER AS "0" OR "1" CLA RAL / ......AND SAVE IT. DCA BTRXID TAD PRX02 /DO A REQUEST FOR STATUS TAD BTCMND /ADD DENSITY RXILCD / ... /M064 RXISDN /M064 JMP .-1 / WAIT FOR DONE. RXIXDR / GET STATUS RESPONSE. /M064 AND PRX02 / ISOLATE THE RX02 BIT. SNA CLA / SKIP IF RX02 (RX28 DRIVE). DCA BTLCM2 / ZAP THE RX02 LCD 2ND XFR COMMAND. TAD BTRXID /0=DD 1=SD SNA CLA /IS DD? IAC BSW /NO SET 8 BIT MODE TAD BTCMND / ...COMMAND WORD. DCA BTCMND TAD BTRXID / LOAD THE DENSITY PARAMETER SNA CLA / ......DOUBLE DENSITY ? TAD BTBLKN / NO - MAKE IT 3*BLOCK NUM TAD BTBLKN / YES - MAKE IT 2*BLOCK NUM TAD BTBLKN DCA BTLSEC / ......AND SAVE IT. EJECT NXTBLK, TAD BTRXID / "DD" OPERATION ? SZA CLA JMP BTDBLD / YES - SKIP THE "UNPACK" PROCESS JMS BTPHYS / EFFECT A "READ SECTOR" OPERATION. JMP BTUNPK / ENTER UNPACKING LOOP DXUNPK, MQL / SAVE DATA BYTE MQA / UNPACK FIRST NYBBLE RTR / ...ALIGN TO HO END BSW AND DXNMSK / ......ISOLATE HIGH 4 BITS DCA I BTTBUF / .........AND PUT IT AWAY MQA / UNPACK SECOND NYBBLE RTL / ...ALIGN TO HO END BSW AND DXNMSK / ......ISOLATE HIGH 4 BITS DCA I BTTBUF / .........AND PUT IT AWAY BTUNPK, JMS BTXFER / GET DATA BYTE FROM SECTOR JMP DXUNPK / (TR) ...AND GO UNPACK IT BTDBLD, AC7776 / (DN) SET SECTOR COUNT DCA BTSCTR DYNEXT, JMS BTPHYS / EFFECT A "READ SECTOR" OPERATION. SKP / ENTER THE "MERGE" LOOP DYREAD, DCA I BTBFRB / SAVE WORD IN BUFFER. TAD I BTBFRA / LOAD CURRENT CONTENTS OF BUFFER. JMS BTXFER / LOAD A DATUM. /#(8 BIT MODE => INCLUSIVE OR INTO BITS 4-11) /#(12 BIT MODE => JAM XFER BITS 0-11) JMP DYREAD / (TR) CONTINUE FETCHING DATA CLA CMA /-1 TAD BTBFRA /RESET PTR TO LAST CHAR DCA BTBFRA /RESTORE ISZ BTSCTR / (DN) ALL SECTORS PROCESSED ? JMP DYNEXT / NO - PROCESS NEXT. ISZ BTBCTR / YES - ALL BLOCKS PROCESSED ? JMP NXTBLK / NO - DO ANOTHER BLOCK. AC0003 / JMS TTY /C=LOADER GOT IN OK TAD BTCMND AND MSK20 /MASK OUT UNIT NO SZA CLA /0=UNIT 0 DOCSKP=. /RXPRDF LDNOP SHOULD BE EQUAL THIS ADDRESS JMP I PRTMSG /NOT UNIT 0 JMP I WPSTRT / YES - START SYSTEM. TTY, 0 TAD P100 / MAKE ASCII. TLS TSF /WAIT TILL DONE JMP .-1 CLA JMP I TTY /RETURN PRTMSG, DCSTRT /START ADDRESS OF MESSAGE EJECT BTPHYS, 0 DCA BTTRAK / INITIALISE TRACK #. TAD BTLSEC / LOAD THE LOGICAL SECTOR #. BTDIV1, ISZ BTTRAK / INCREMENT THE TRACK #. DCA BTSECT / SAVE THE SECTOR #,... TAD BTSECT / ...THEN RETREIVE IT. TAD BTDVSR / "SUBTRACT" THE # OF SECTORS/TRACK. SMA / OVERFLOW ? JMP BTDIV1 / NO - CONTINUE. CLA CLL / YES - ENSURE REGISTER CLEAR TAD BTSECT / BUILD 3*Q. TAD BTSECT / TAD BTSECT BTDIV2, DCA BTSECT / SAVE "PHYSICAL" SECTOR #. TAD BTSECT / RETREIVE "PHYSICAL" SECTOR #. TAD BTDVSR / "SUBTRACT" # SECTORS/TRACK. P100, SMA / OVERFLOW ? JMP BTDIV2 / NO - REPEAT UNTIL OVERFLOW. ISZ BTSECT / YES - INCR TO BUILD CORRECT PHYSICAL SECTOR. AC0004 / SET "PHYSICAL" BIT JMS BTLCMD TAD BTSECT / () GET PHYSICAL SECTOR JMS BTXFER / () ...AND SEND IT CLA / (TR) "RXIXDR" DOESN'T CLEAR AC /M064 TAD BTTRAK / (DN) GET PHYSICAL TRACK JMS BTXFER / ...AND SEND IT JMS BTXFER / (TR) WAIT FOR CONTROLLER DONE DXNMSK, 7400 / (DN) (TR) (SPARE) JMS BTLCMD ISZ BTLSEC / BUMP LOGICAL SECTOR FOR NEXT TIME JMP I BTPHYS / EXIT FROM PHYSICAL I/O ROUTINE BTLCMD, 0 TAD BTCMND RXILCD /M064 TAD BTRXID SNA CLA BTLCM2, JMS BTXFER CLA JMP I BTLCMD BTDVSR, -32 / LOCAL STORAGE FOR THE TRACK/SECTOR CONSTANT. BTBLKN, DLRXLD / STARTING BLK OF RXHAN BTBCTR, -DSRXLD / LOCAL STORAGE FOR THE BLOCK COUNTER. MSK20, 20 / UNIT MASK BTHALT, HLT / THIS WILL PATCH BTPTCH WPADDR=.-200 / THIS ADDRESS SHOULD BE = LDSTRT IN RXPRDF WPSTRT, RXDRIN / ENTRY POINT TODRIVER SYSTEM INIT LOAD PRX02, 10 / RX02 BIT IN STATUS RESPONSE RELOC / BACK TO NORMAL ORIGIN /***********************************************************************/A032 / /A032 / RX50 BOOT BLOCK TEMPLATE /A032 / TAKEN FROM LOADB8.PA VERSION ??? 16-APR-82 074 /A032 / STRIPPED ALL BEFORE "HACK= " /A032 / THEN STRIPPED ALL COMMENT LINES /A032 / APPROPRIATELY DELETED *ORG STATEMENTS /A032 / AND ADDED RELOC STATEMENTS /A032 / REDEFINED DUPLICATE LABELS WHICH CAUSED PROBLEMS /A032 / /A032 /***********************************************************************/A032 / /A032 / THE FIRST 8 PDP-8 WORDS OF THE BOOT ARE RESERVED FOR /A042 / FOR THE BOOT BLOCK HEADER. THE HEADER WILL BE READ IN /A042 / 8 BIT MODE BY THE ROM. SINCE THE HEADER CANNOT BE WRITTEN /A042 / OUT PROPERLY IN 8 BIT MODE THE BOOT IS FIRST WRITTEN OUT /A042 / IN 12 BIT MODE. THEN THE BOOT IS READ BACK IN IN 8 BIT MODE /A042 / THE BOOT HEADER IS COPIED, AND THE BOOT IS WRITTEN BACK IN /A042 / 8 BIT MODE /A042 / /A042 / SIMON SZETO HAS PROPOSED THE BOOT HEADER STANDARD /A042 / CURRENTLY, IT REQUIRES ONLY 12 BYTES. /A042 / THESE 12 BYTES TRANSLATE INTO ONLY 6 PDP-8 WORDS /A042 / BECAUSE OF THE WAY THE RX50 IMPLEMENTS 12 BIT MODE /A042 / SO, WE ARE PROBABLY WASTING 2 WORDS /A042 / BUT WHATS A FEW WORDS AMONG FRIENDS, EH? /A042 / (I DECIDED TO LEAVE 'EM IN FOR NOW) /A042 RX50BEG, / LABEL FOR BLKMOV /A032 RELOC WPBOOT /A032 RX50BO, / BOOT TEMPLATE, RX50 /A032 / SPACE FOR STANDARD RX50 BOOT HEADER: / THE ACTUAL HEADER MUST BE WRITTEN IN 8 BIT MODE AS /A042 / 12 BIT MODE WRITES TWO CONSECUTIVE BYTES ON THE RX-50 /A042 / 4 BITS OF WHICH ARE INACCESIBLE IN 12 BIT MODE /A042 / THESE LOCATIONS HAVE LABELS AS THEY ARE USED FOR SCRATCH BY THE BOOT 0 / 1ST 12 BIT WORD R5RXID, 0 / 2ND 12 BIT WORD R5TRAK, 0 / 3RD 12 BIT WORD R5LSEC, 0 / 4TH 12 BIT WORD R5SECT, 0 / 5TH 12 BIT WORD R5SCTR, 0 / 6TH 12 BIT WORD 0 / 7TH 12 BIT WORD 0 / 8TH 12 BIT WORD R5TSEC, 0 IFDEF WINNIE < /A065 RXDLDP-201 /M065 R5BFRA, RXDLDP-201 /M065 R5BFRB, RXDLDP-201 /M065 > / END IFDEF WINNIE /A065 IFNDEF WINNIE < /A065 RXDLDP-1 R5BFRA, RXDLDP-1 R5BFRB, RXDLDP-1 > / END IFNDEF WINNIE /A065 R5BFFR, 377 SKPPTR, R5BOOX-1 SKPPTS, BOOT02-1 /WHEN LOC 50 GETS OVERLAYED R5INC, JMP R5PTCH /ONE TIME JMP. ON SUCCESFUL READ ISZ R5XFER /SET DONE RETURN JMP I R5XFER /RETURN R5MORE, DCA I R5BFFR / DEPOSIT DATUM IN CORE. R5EMPT, JMS R5XFER / TRANSFER A DATUM FROM SILO. JMP R5MORE / NOT DONE - REPEAT FOR ENTIRE SECTOR. ISZ R5SCTR / DONE - ALL SECTORS READ ? JMP R5NEXT / NO - READ NEXT. JMP I R5SCND / YES - ENTER SYSTEM BOOTSTRAP CODE. JMPOVR, R5READ RXISDN / DONE ? /M064 JMP R5BOO8 / NO - WAIT FOR READY FIRST. CLA CLL / INSURE AC CLEAR FOR DONE RETURN RXISER /ERROR? /M064 JMP R5INC /NO INC RET SKP /IS ERROR R5PTCH, DCA R5INC /CLEAR JMP ON SUCCESSFUL DONE JMP I JMPOVR /JMP OVER CRITICAL AREA R5SWCH, TAD SKPPTS /SET TO LOC 61 DCA SKPPTR /DO IT DCA R5BOOX /NOP JMP JMP R5BOOX /CONT /REMAINDER OF SECTOR WILL BE OVERLAYED /INDIRECT TO ENABLE PAGE LOAD INTO NEXT /PAGE. FOR RX50 JMS R5BOO7 / TRANSFER A DATUM DCA I SKPPTR-1 / ...AND INSERT IT IN-LINE.1ST TIME TO NEVER NEVER LAND R5BOOX, JMP R5SWCH /INC PTR....ONE TIME THEN CLEARD R5LOCS=.-RX50BO /ACTUAL CORE SPACE USED SO FAR /A032 RELOC / RETURN TO NORMAL ADDRESSING /A032 RELOC BOOT02-7 /A032 R5XFER, / ENTRY POINT TO "R5XFER". R5BOO7, / ### ENTRY POINT TO "READ" SUBROUTINE. ### RELOC / RETURN TO NORMAL ADDRESSING /A032 RELOC BOOT02-6 /A032 R5BOO8, / CONTROLLER READY ? RELOC / RETURN TO NORMAL ADDRESSING /A032 RELOC BOOT02-1 /A032 R5BOO0, / LINKAGE WITH ALTERNATE SECONDARY BOOT. RELOC / RETURN TO NORMAL ADDRESSING /A032 RELOC BOOT02 / 200-ENREAD /A032 R5READ, CLA CLL IAC RAL /=2 SET CMND FOR READ TAD R5BOO0 /GET DISK READ DCA R5CMND / ......DENSITY BIT IN COMMAND WORD CMA /-1 RX50 SECTOR COUNT DCA R5SCTR / ............THE CORRECT SECTOR COUNT. IAC / CALCULATE THE PROPER (SD OR DD) DCA R5SECT / ......PHYSICAL SECTOR NUMBER.(1) JMP I R5SCND /RX50 BOOT IN START LOAD R5NEXT, AC0004 / SET THE PHYSICAL I/O BIT TAD R5CMND / ...AND SUBMIT COMMAND TO CONTROLLER. RXILCD /M064 AC0003 / LOAD SECTOR # TO READ TAD R5SECT / ...INCREMENT IT BY INTERLEAVE JMS R5XFER / ......SUBMIT IT TO CONTROLLER DCA R5SECT / .........AND SAVE IT AGAIN CLA CLL IAC / LOAD "BOOT" TRACK NUMBER,... JMS R5XFER / ...AND SUBMIT IT TO CONTROLLER ALSO. JMS R5XFER / WAIT FOR CONTROLLER "DONE" R5SCND, R5W2BO / R5DENS, 400 /=400 FOR RX01 USED AS DENSITY BIT ALSO TAD R5CMND / GET "EMPTY SILO" COMMAND RXILCD / ...AND SUBMIT IT TO CONTROLLER. /M064 JMP R5EMPT / GO EMPTY THE SILO R5CMND, 22 /BITS=DD,UNIT#,READ 0 /STATUS SAVED HERE R5LOCS=R5LOCS+.-R5READ /UPDATE NUMBER OF ACTUAL LOCS USED /A032 RELOC / RETURN TO NORMAL ADDRESSING /A032 RX50MID, / LABEL FOR BLKMOV /A032 RELOC 200 R5W2BO, AC0001 / JMS R5TTY /TYPE A=GOT IN THIS FAR TAD R5HALT / PUT A HALT INSTRUCTION AT THE END DCA R5PTCH / ...OF THE ERROR BRANCH AC0002 / JMS R5TTY /B=UNIT 0 OK TAD R5CMND / LOAD COMMAND FROM PRIMARY BOOT. AND R5DENS /400 SNA CLA /IS SD OR DD IAC BSW /100 =MODE BIT FOR SD DCA R5RXID /0=DD TAD PRX02R /DO A REQUEST FOR STATUS TAD R5CMND /ADD DENSITY RXILCD / ... /M064 RXISDN /M064 JMP .-1 / WAIT FOR DONE. RXIXDR / GET STATUS RESPONSE. /M064 AND PRX110 / ISOLATE THE RX02 BIT. SNA CLA / SKIP IF RX02 (RX28 DRIVE). DCA R5LCM2 / ZAP THE RX02 LCD 2ND XFR COMMAND. TAD R5RXID / 0=DD 1=SD TAD R5CMND / ...COMMAND WORD. DCA R5CMND TAD ISRX50 SZA CLA JMP ISA50 /LOG BLOCK = LOG SECTOR IF 50 TAD R5RXID / LOAD THE DENSITY PARAMETER SZA CLA / ......DOUBLE DENSITY ? TAD R5BLKN / NO - MAKE IT 3*BLOCK NUM TAD R5BLKN / YES - MAKE IT 2*BLOCK NUM ISA50, TAD R5BLKN DCA R5LSEC / ......AND SAVE IT. R5NXTB,/--------------------------------------------------------------------- CLA CLL CMA / (DN) SET SECTOR COUNT =-1 DCA R5SCTR R5DYNX, JMS R5PHYS / EFFECT A "READ SECTOR" OPERATION. SKP / ENTER THE "MERGE" LOOP R5DYRD, DCA I R5BFRB / SAVE WORD IN BUFFER. TAD I R5BFRA / LOAD CURRENT CONTENTS OF BUFFER. JMS R5XFER / LOAD A DATUM. /#(8 BIT MODE => INCLUSIVE OR INTO BITS 4-11) /#(12 BIT MODE => JAM XFER BITS 0-11) JMP R5DYRD / (TR) CONTINUE FETCHING DATA CLA CMA /-1 TAD R5BFRA /RESET PTR TO LAST CHAR DCA R5BFRA /RESTORE ISZ R5SCTR / (DN) ALL SECTORS PROCESSED ? JMP R5DYNX / NO - PROCESS NEXT. ISZ R5BCTR / YES - ALL BLOCKS PROCESSED ? JMP R5NXTB / NO - DO ANOTHER BLOCK. AC0003 / JMS R5TTY /C=LOADER GOT IN OK TAD R5CMND AND R5MSK2 /MASK OUT UNIT NO SZA CLA /0=UNIT 0 DOCSKP=. /RXPRDF LDNOP SHOULD BE EQUAL THIS ADDRESS JMP I R5DMSG /NOT UNIT 0 JMP I R5STRT / YES - START SYSTEM. R5TTY, 0 TAD R5P100 / MAKE ASCII. TLS TSF /WAIT TILL DONE JMP .-1 CLA JMP I R5TTY /RETURN R5DMSG, DCSTRT /START ADDRESS OF MESSAGE R5PHYS, 0 CLA IAC /TRACK ==1 DCA R5TRAK /SET IT TAD R5LSEC /LOGICAL SECTOR RAL /*2=INTERLEAVE FOR RX50 DCA R5TSEC /TEMP SECTOR(*2) HOLD TAD R5TSEC TAD R5DVSR /-10 SPA CLA /IS<10 JMP R5DIV1 /YES IAC /=1 TAD R5DVSR / R5DIV1, TAD R5TSEC /SET SECTOR IAC DCA R5SECT /SET IT AC0004 / SET "PHYSICAL" BIT JMS R5LCMD TAD R5SECT / () GET PHYSICAL SECTOR JMS R5XFER / () ...AND SEND IT CLA / (TR) "RXIXDR" DOESN'T CLEAR AC /M064 TAD R5TRAK / (DN) GET PHYSICAL TRACK JMS R5XFER / ...AND SEND IT JMS R5XFER / (TR) WAIT FOR CONTROLLER DONE 7400 / (DN) (TR) (SPARE) JMS R5LCMD ISZ R5LSEC / BUMP LOGICAL SECTOR FOR NEXT TIME JMP I R5PHYS / EXIT FROM PHYSICAL I/O ROUTINE R5LCMD, 0 TAD R5CMND RXILCD /M064 TAD R5RXID SZA CLA /SD SB=100 DD/RX02=0 R5LCM2, JMS R5XFER CLA JMP I R5LCMD /--------------------------------------------------------------------- R5P100, 100 R5DVSR, -12 / LOCAL STORAGE FOR THE TRACK/SECTOR CONSTANT. R5BLKN, DLRXLD / STARTING BLK OF RXHAN R5BCTR, -DSRXLD / LOCAL STORAGE FOR THE BLOCK COUNTER. R5MSK2, 20 /UNIT MASK RELOC / RETURN TO NORMAL ADDRESSING /A032 R5W2ND, / LABEL FOR BLKMOV /A032 RELOC LDSTRT WPADDR=. /THIS ADDRESS SHOULD BE = LDSTRT IN RXPRDF IFNZRO WPADDR-LDSTRT R5STRT, RXDRIN / ENTRY POINT TODRIVER SYSTEM INIT LOAD R5HALT, HLT / THIS WILL PATCH R5PTCH PRX02R, 10 /RX02 BIT IN STATUS RESPONSE PRX110, 110 /CHECK RX02 OR RX50 BIT ISRX50, 1 /SET FOR RX50 LOADER, CLEAR FOR RX01/RX02 RELOC / RETURN TO NORMAL ADDRESSING /A032 EJECT /******************************************************************* /TAKEN FROM WINNIE BOOT 11/23/83 /TITLE WINBOOT 11/23/83 / /COMMAND CODES WINMNT=CLA /0=MOUNT VOLUME WINSTB=CLA CLL IAC /1=SET BLOCK WINFIL=CLA CLL IAC RAL /2=FILL BUFFER WINWRT=CLA CLL CML IAC RAL /3=WRITE WINRD=CLA CLL IAC RTL /4=READ WINDIS=5 /5=DISMOUNT VOLUME WINUPD=CLA CLL CML IAC RTL /6=UPDATE VOLUME WINEMT=25 /EMPTY BUFFER WINSTA=26 /26=READ STATUS WINERS=27 /27=READ ERROR STATUS WINVOL=30 /30=GET VOLUME DATA WINDIR=33 /33=GET VOLUME DIRECTORY / / TRANSFER COMMAND + 1 FOR DONE FOR COUNTS / SETCNT=4 /SET BLOCK COUNT DISCNT=2 /DISMOUNT COUNT MNTCNT=12 /MOUNT COUNT WNBOOT=200 /A074 WINBEG, /A074 RELOC WNBOOT /A074 WINPTR=WNBOOT /TEMP POINTER AREA RDCNT=WINPTR+1 /TRANSFER COUNT PRTPTR=RDCNT+1 ZBLOCK 10 /BOOT ID / / /COMES HERE IF A WINNIE / WINSTR, JMS PRINT WPSLOAD /LOADING MESSAGE / / /READ A RECORD / RDREAD, TAD M4 DCA RDCNT /SET TRNSFER COUNT TAD CMDPTR DCA WINPTR WINSTB /SET BLOCK CMND JMS TRLOOP /TRANSFER WINRD /SET UP READ CMND RDSC /SEND IT RDRD1, JMS RDXFER /CHECK DONE AND SWAP IF NOT JMP TRNERR /GOT TRANSFER INSTEAD OF DONE SKP /DONE JMP TRNERR /ERROR TAD WINEPT /SET UP EMPTY BUFFER JMS RDCMPT /EMPTY OR FILL ISZ LOBLK /BLOCK NUM ISZ RZBLKN /# BLOCKS TO LOAD JMP RDREAD /DO NEXT BLOCK TAD WINCOD /4001 = WINNIE MOUNTED DRIVE 0 JMP I WNSTRT / / /RDXFER USED TO CHECK AND RETURN / CALL+1 = TR READY / CALL+2 = DONE / CALL+3 = ERROR / / RDXFER, 0 RDXFRA, RDSR /SKIP TR READY SKP JMP I RDXFER /TR READY RDSD /SKIP IF DONE FLAG SET JMP RDXFRA /CHECK TR READY ISZ RDXFER /SET RET RDSE /SKIP ERROR JMP I RDXFER /DONE RET ISZ RDXFER /SET ERROR RET JMP I RDXFER /************************************************************ / /SET BLOCK FUNCTION / / / /EMPTY BUFFER COMMAND SET UP / / / /TRLOOP WILL SEND REMAINING TRANSFERS BASED ON RDCNT TRLOOP, 0 RDSC /SEND IT TRNCHK, JMS RDXFER /CHECK DONE JMP TRANOK /TR RDY ISZ RDCNT /IS DONE--WAS LAST TR? JMP TRNERR /TRANSFER ERROR JMP I TRLOOP /OK TRANOK, RD1SET, CDFSYS TAD I WINPTR /GET WORD TO BE TRANSFERED CDFSYS RDTD /TRANSFER IT ISZ WINPTR ISZ RDCNT JMP TRNCHK /MORE TO TRANS JMP TRNERR /PREMATURE END / / /EMPTY BUFFER ROUTINE / AFTER READ / /******DON'T FORGET CDF'S********* / RDCMPT, 0 RDSC /SEND IT RDCNXA, JMS RDXFER JMP RDCNXT /NEXT CHAR JMP I RDCMPT /DONE JMP RDERROR RDCNXT, RDENXT, RDTD /RECIEVE DATA RD2SET, CDFSYS DCA I RDBUFO /GET CHAR CDFSYS RDCCNT, ISZ RDBUFO NOP /FOR WRAP AROUND BUFFER JMP RDCNXA /FOR FIELD LOOP / /TRANSFER ERROR= DONE OR TR FLAG OUT OF SEQ /*****MUST GET ALL 4 WORDS****CHANGE WINSTA / RDERROR, WRTERROR, TRNERR, JMS PRINT ERRMES /=ERROR JMP . /HANG PRINT, 0 TAD I PRINT ISZ PRINT / DCA PRTPTR PRTA, TAD I PRTPTR SNA JMP I PRINT TLS TSF JMP .-1 CLA CLL ISZ PRTPTR JMP PRTA CR=15 LF=12 WPSLOAD, CR LF "W&177 "P&177 "S&177 " &177 "l&177 "o&177 "a&177 "d&177 "i&177 "n&177 "g&177 ".&177 0 /TERMINATOR ERRMES, CR LF "H&177 "A&177 "R&177 "D&177 " &177 "D&177 "I&177 "S&177 "K&177 " &177 "E&177 "R&177 "R&177 "O&177 "R&177 0 /TERMINATOR / / CMNDBF=. /COMMAND BUFFER START WRD1, 0 /BOOT DRIVE NUMBER(0) WRD2, LOBLK, DLRXLD /STOREAGE OF THE L/O BLK FOR I/O WRD3, HOBLK, 0 /STOREAGE OF THE H/O BLK FOR I/O RZBLKN, -DSRXLD /- COUNT OF BLOCKS TO BE READ RDBUFO, RXDLDP-200 /POINTER TO BUFFER AREA FOR WINNIE WINEPT, WINEMT /SET EMPTY BUFFER /A074 RELOC LDSTRT WPADDR=. /THIS ADDRESS SHOULD BE = LDSTRT IN RXPRDF WNSTRT, RXDRIN /START LOAD /A074 CMDPTR, CMNDBF /COMMAND BUFFER /A074 M4, -4 /A074 WINCOD, 4001 /H/O BIT=WINNIE L/O BIT=MOUNTED WNLOCS=.-WINBEG /SIZE TO BE WRITTEN OUT /A074 RELOC / RETURN TO NORMAL ADDRESSING /A074 IFDEF ITALIAN < PAGE / I DO NOT UNDERSTAND THE WAY THIS MODULE IS PUT / TOGETHER, BUT IT MEANS THAT, AS THE ITALIAN TEXT / TRANSLATION IS SHORTER THAN THE ENGLISH, A PAGE / IS REQUIRED HERE > IFDEF V30NOR < PAGE /A086 > IFDEF V30SWE < PAGE > / THIS IS THE RX50 BOOT HEADER FOR WPS IN 8 BIT FORMAT: /A042 R5BHDR, /A042 0 / BYTE 00 TYPE 2 BOOT BLOCK /A042 0 / BYTE 01 TYPE 2 BOOT BLOCK /A042 2 / BYTE 02 POINTER TO SECOND SECTION /A042 / (1/2 ACTUAL VALUE IN BYTES) /A042 1 / BYTE 03 1=SYSTEM, 0=DOCUMENT DISKETTE /A042 / SECOND SECTION: /A042 10 / BYTE 04 PDP-8 INSTRUCTION SET /A042 10 / BYTE 05 RX278 CONTROLLER /A042 10 / BYTE 06 WPS-8 OPERATING SYSTEM /A042 347 / BYTE 07 CHECKSUM SO BYTES 4,5,6,7 TOTAL 377 /A042 0 / BYTE 10 FILLER /A042 1 / BYTE 11 SINGLE SIDED, REV 1 OF BOOT STD /A042 R5BHSZ=.-R5BHDR / CALCULATE SIZE OF HEADER FOR BLKMOV /A042 RELOC DECIMAL /A066 RXMAP, 0; 5; 1; 6; 2; 7; 3; 8; 4; 9 / RX50 SECT TO RD50 BLOCK MAP /A066 RDMAP, 0; 7; 14; 5; 12; 3; 10; 1; 8; 15; 6; 13; 4; 11; 2; 9 /A066/C067 OCTAL / MAP CHANGED TO REFLECT AN INTERLEAVE /A067 / OF 7 WHICH IS THE ACTUAL WINNIE /A067 / /****DRVTST MOVED VER 075**************** /***********************************************************************/ / / / DRVTST--SKIP IF EITHER DRIVE IS DRIVE ZERO AND 0 NOT=WINNIE VOL./ / CALLING SEQUENCE: / / JMS DRVTST /SKIP IF EITHER DRIVE IS DRIVE 0 / / JMP SOMEPLACE /RETURNS HERE IF NEITHER / / ... /RETURNS HERE IF EITHER, OR 0=WINNIE / / MENU MUST CHECK THAT DRIVE NUMBERS ARE DIFFERENT / / ROUTINE ADDED V033 / / / /***********************************************************************/ DRVTST, XX TAD K20 /BIT 7=DRIVE 0=VOL /A075 CDFMNU /A075 AND I MNUPTR /PTR TO MNOPTION /A075 CDFMYF /A075 SZA CLA /DRIVE 0 = WINNIE? /A075 JMP I DRVTST /YES EXIT /A075 TAD DRVDST SNA CLA ISZ DRVTST TAD DRVSRC SNA CLA ISZ DRVTST JMP I DRVTST MNUPTR, MNOPTN+MUBUF /POINTER TO OPTION WORD /A075 K20, MNRX4X /20=7 BIT=WINNIE DRIVE 0 VOL /A075 /FMTSET--- SETS RXQSR1 TO THE NUMBER OF BLOCKS TO BE READ INTO / THE BUFFER AREA----WILL SET TO 10 BLOCKS TO FILL THE /...............FIELD IF THERE ARE ENOUGH BLOCKS REMAINING BETWEEN /...............THE END OF THE AREA AS SPECIFIED IN AC(-) UPON ENTRY /...............OR 10, WHICHEVER IS LESS / BLKCON=12 /READ FULL TRACK RX50 /A078 FMTSET, 0 /A078 TAD FMTQBK+RXQBLK /LAST BLOCK READ /A078 DCA BLKSAV /SAVE END BLOCK NUM /A078 TAD (-BLKCON /CHECK 1ST TIME /A078 TAD FMTQBK+RXQBLK /LAST BLOCK READ /A078 SPA /IS FIRST TIME? /A078 JMP FMTSE3 /YES-SET TO READ REST OF TRACK /A078 CLA /A078 TAD (BLKCON /NO BLOCKS TO FILL FIELD /A078 TAD BLKSAV /-# REMAINING TO BE PROCESSED /A078 SPA CLA /IS G.T. # REMAINING /A078 JMP FMTSE2 /NO SET TO 20 /A078 TAD BLKSAV /YES TO TO # REMAINING /A078 SKP /A078 FMTSE2, TAD (-BLKCON /A078 FMTSE3, DCA FMTQBK+RXQRS1 /SET BLOCK COUNT /A078 JMP I FMTSET /A078 BLKSAV, -BLKCON /# BLOCKS TO PROCESS NEXT /A078 OCTAL /A066 /CHECK VALID BLOCK NUMBER /A083 /THIS CHECK TO ALLOW FOR COPYING /A083 /..VOLUME SIZES LESS THAN SIZE OF FLOPPY /A083 /CODE NECESSARY TO ALLOW PARTIAL BLOCKS TO BE READ IN HARD DISK VOLUME/A083 /..PHYSIO COPIES IN BLOCKS OF 10 WHEN COPYING FROM WINNIE TO FLOPPY /A083 /...LEAVING A REMAINDER AT TIMES THAT VOLUME IS NOT MODULO 10 /A083 /... INTERLEAVE ALGORITHM WOULD THEN TRY TO READ BLOCKS GREATER THAN /A083 /....VOLUME SIZE. THIS CODE CAUSES ERROR RETURN WHEN ILLEGAL BLOCK /A083 /....REFERENCED. /A083 /-----------------------------------------------------------------------/A083 /WHEN COPYING FROM H.D. TO FLOPPPY THE RXMAP TABLE IS USED /A083 /...THIS MAP CONTAINS THE NUMBER OF TRACKS ON THE FLOPPY /A083 /....IT IS USED EVEN THOUGH THE SOURCE MAY BE VOLUME ON THE H.D. /A083 /..... THE BACKUP THEN CONTINUES TO COPY USING THIS 80 TRACK PARAMS. /A083 /...... TO TERMINATE THE BACKUP....THIS ROUTINE ALTHOUGH IT WORKS /A083 /...... WILL BE CALLED UNTILL THE NUM TRACKS ON THE FLOPPY HAVE BEEN /A083 /....... EXAUSTED.. NO PHYSICAL I/O WILL BE PERFORMED IF THE NUM OF /A083 /....... TRACKS ON THE H.D. HAS BEEN EXCEEDED... /A083 /....... DURING THE BACKUP AFTER SETPAR HAS BEEN CALLED /A083 /....... IF THE NUMBER OF TRACKS ON THE SOURCE DEVICE OVERLAYS THE NUM /A083 /....... OF TRACKS IN THE TABLE .. THE THIS SHOULD ELIMINATE THE XTRA /A083 /....... PROCESSING.. MOVE SRCSZE TO TRKMXK.... /A083 /....... THIS MOVE AT THE PRESENT TIME WILL NOT BE PUT INTO THE /A083 /....... AS WE ARE READY TO SHIP AND TESTING MAY NOT BE SUFFICIENT. /A083 / /------- THIS MESSAGE COURTESY OF DFB ---------------------------- /A083 CKBLNM, 0 /CHECK VALID BLOCK NUMBER /A083 TAD I T3 / NOW HAVE BLOCK # FOR THIS SECTOR /M083 TAD SVBLOC / ADD IN BLOCK WE STARTED AT /M083 DCA FMTQBK+RXQBLK / AND THIS IS THE BLOCK WE MUST R/W/V /M083 TAD WINSRC /CHECK SOURCE /M085 SNA CLA /IS IT WINNIE? /M085 JMP CKBLN1 /NO--CHECK NOT NECESSARY /M085 TAD FMTQBK+RXQBLK / /M083 CIA /A083 TAD SRCSZE /NUM BLOCKS IN SOURCE-NUM BLOCK TO BE READ/A083 SMA SZA CLA /IS ILLEGAL BLOCK? /A083 CKBLN1, /A083 ISZ CKBLNM /NO SKIP ERR RET /A083 JMP I CKBLNM /RET /A083 /-------------------- PAGE /+/+/ /+/+/ ____________________________________________________________ /+/+/ ALL MENU CODE WAS EDITED AND MADE A PART MN1 WITH EDIT 073 /+/+/ ------------------------------------------------------------ /+/+/ / /CKDKSZ CHECKS SIZE OF SOURCE AND DEST. DEVICES /A074 /IF SOURCE DEVICE IS G.T. DEST. DEVICE(NUMBER TRACKS) /A074 / ........ERROR RET.... /A074 / ELSE .....RET +1 /A074 / CKDKSZ, 0 /A074 TAD SRCSZE /GET SIZE OF SOURCE /A074 SNA /=RX50? /A074 DECIMAL TAD (79 /YES..SET # TRACKS TO COPY /A074 OCTAL CIA / /A074 DCA PARTBM /SET - NUM. TRACKS TO PROCESS /A074 TAD SRCSZE /IF SIZE=0 NON WINNIE /A074 JMS GETSZE /GET # BLOCKS /A074 DCA SRCSZE /A074 TAD DSTSZE /IF SIZE=0 NON WINNIE /A074 JMS GETSZE /GET # BLOCKS /A074 DCA DSTSZE /A074 CKDKS2, /A074 TAD SRCSZE /SOURCE SIZE /A074 CLL CMA CML IAC /SET NEG /C075 TAD DSTSZE /DEST SIZE /A074 SNA /ARE SOURCE AND DEST = /A074 JMP CKDKS7 /YES /A074 SNL /IS DEST G.T.SOURCE /C075 JMP CKDKS3 /YES /A074 CLA /A074 JMP FMTWER /A074 NOP /A074 CKDKS3, DCA CKDIF /A074 CIFMNU /A074 JMS I IOACAL /PRINT MESSAGE DESTG.T. SRCE /A074 0 /A074 TEXTDK /MESSAGE /A074 1305 /LINE 13 COL 05 /A074 DEVDST /PTR TO "DRIVE" "AREA" STRING /A074 IFNDEF ITALIAN < MEDDST /PTR TO "DISKETTE" "VOLUME" STRING /A074 CKDIF /PTR TO DIFFERENCE /A074 > IFDEF ITALIAN < CKDIF MEDDST > NOP /A074 NOP /A074 JMS FMTWTY /PRINT "ENTER CR OR G.M." /A074 JMP CPYDS2 /RET TO G.M. /A074 JMS TIMMSG /CLEAR AND PRINT TIME /A074 /C.R.--CONTINUE /A074 CKDKS7, /A074 ISZ CKDKSZ /SET NORMAL RET /A074 JMP I CKDKSZ /A074 / / /***********************************************************************/A066 DECIMAL /A074 MAXTRK=2000%16 /MAXIMUM TRACKS=BLKS/16 FOR WINNIE=2000/16/A074 MINTRK=800%16 /MINIMUM NUMBER WINNIE=800/16 /A074 DOCTRK=256%16 /MINIMUM NUMBER TRACKS FOR DOC INIT /A074 OCTAL /A074 /***********************************************************************/A066 /CKASGN CHECKS DEVICE NO AS SPECIFIED IN AC ON ENTRY /DETERMINES DEVICE TYPE AND SIZE IF WINNIE AND RETURNS /FOLLOWING CODES IN AC / / 0 = RX01/RX02/RX50 / 1 = VOLUME SIZE BETWEEN 800 AND 2000 BLOCKS / 2 = VOLUME SIZE BETWEEN 2000 AND 4096 BLOCKS / 3 = VOLUME SIZE BETWEEN 256 AND 800 BLOCKS / 4 = VOLUME SIZE 800 BLOCKS EXACTLY(SPECIAL CASE) / -1 = WINNIE NOT ASSIGNED / -2 = WINNIE VOLUME LESS THAN 256 BLOCKS / -3 = WINNIE VOLUME GREATER THAN THAN 4096 BLOCKS /***********************************************************************/A074 CKASGN, XX /A066 DCA FMTQBK+RXQDRV / PUT DRIVE # IN Q-BLK /A076 TAD (-10 /DEV 8 OR 9 MUST BE RX /A076 TAD FMTQBK+RXQDRV /CHECK FOR DEVICE G.T. 7 /A076 SPA CLA /SKP=8 OR 9, WINNIE BOOT CAN'T DO GET VOL/A076 JMS FMTGTV /GET VOLUME DATA DRV IN AC /C076 JMP CKASFL / UNASSIGNED - GO SEE IF DRIVE 1 /A066 TAD FMTQBK+RXQBAD / GET BUFFER ADDRESS /A066 TAD (15) / ADD IN AREA SIZE OFFSET-1 /A066 DCA X0 / SAVE FOR AUTOINDEX LOAD /A066 CDFMYF+10 / CHANGE TO BUFFER FIELD /A066 TAD I X0 /GET L/O /A074 DCA WINTRK /NUM WINNIE TRACKS IN VOLUME /A074 TAD I X0 /GET H/O /A074 SZA CLA /A074 JMP STCDM3 /VOLUME G.T. 4096 BLOCKS /A074 TAD WINTRK /A074 TAD (-DOCTRK /=256? /A074 SPA /A074 JMP STCDM2 /<256 BLOCKS /A074 TAD (DOCTRK-MINTRK /A074 SNA /=800 BLOCKS EXACTLY? /A074 JMP STCDP4 /YES /A074 SPA /A074 JMP STCDP3 /G.T 256 OR L.T. 800 BLKS /A074 TAD (MINTRK-MAXTRK /A074 SMA CLA /L.T. 2000 AND G.T. 800 BLOCKS /A074 JMP STCDP2 /NO /A074 JMP STCDP1 /YES /A074 CKASFL, TAD FMTQBK+RXQDRV / IF UNASSIGNED DEV# 1 IS A FLOPPY (V1.5/A066 TAD DENDV0 /POINTR TO START OF ACP DEV TABLE /A074 DCA DENPTR /SAVE POINTER TO DEN/DEV CODE /A074 CDFACP /SET TO ACP FIELD /A074 TAD I DENPTR /GET CODE /A074 CDFMYF /A074 SMA CLA /0 BIT SET =WINNIE /A074 JMP I CKASGN /NOT SET = RX DEVICE /A074 STCDM1, /NOT ASSIGNED /A074 AC7777 /A074 JMP CKZRET /A074 STCDM2, AC7776 /L.T. 256 BLOCKS /A074 JMP CKZRET /A074 STCDP2, AC0001 /2=G.T. 2000 /A074 STCDP1, IAC / AC=1 WINNIE AREA ASSIGNED & SIZE OK /A066 JMP CKZRET /A074 STCDP3, AC0003 /SIZE G.T. 256, L.T. 800 /A074 JMP CKZRET /A074 STCDP4, AC0004 /800 BLOCKS EXACTLY /A074 JMP CKZRET /A074 STCDM3, AC7775 /G.T. 4096 /A074 CKZRET, /A074 CDFMYF / CHANGE BACK TO OUR FIELD B4 WE GO /A066 JMP I CKASGN / /A074 / V1.5 MINIMUM SIZE =800 BLOCKS/16 BLOCK/A066 / -- ALLOCATION FACTOR = 50 /A066 DENDV0, RXSTRT+1 /POINTER TO DEV TABLE IN ACP /A074 DENPTR, 0 /TEMP PTR /A074 WINTRK, 0 /NUM TRACKS IN WINNIE VOLUME /A074 / / / CKDIF, 0 /DIF BETWEEN SOURCE AND DEST(TRACKS) /A074 /***********************************************************************/ / / / FMTHAB FORMAT THE DIRECTORY AND ALLOCATION BLOCKS / / STDBSW AND DSBLKC MUST BE SET UP BEFORE CALL / / / /***********************************************************************/ FMTHAB, XX / DO DIRECTORY AND ALLOCATION BLOCKS /A045 /D082 JMS CLBUF / CLEAR THE BUFFER /A046 JMS FMTDIR / GO SET UP DIRECTORY BLOCK HEADER /A031 AC0002 / LOAD BLOCK NUMBER FOR DIR BLOCK /A031 DCA FMTQBK+RXQBLK JMS FMTQRX / GO WRITE THE DIRECTORY BLOCK JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 / NOW DO THE ALLOCATION BLOCK /A044 /D082 JMS CLBUF / CLEAR FMTBUF /A031 JMS STDBL / GO SET UP ALLOC BLOCK /A014 /M031 TAD P377 / GET THE BLOCK # OF THE ALLOC BLOCK /M031 DCA FMTQBK+RXQBLK JMS FMTQRX JMP FMTER / ERROR--GO DISPLAY MESSAGE; WAIT FOR GM/A045 JMP I FMTHAB / RETURN IFZERO .&4000 FIELD CDFMYF&70+10 / BUFFER FIELD /A042 *0000 / THE WHOLE FIELD! /A042 FMTBUF, / IS THE BUFFER /A042