ÿ1`d� * * * DEFINE I/O PORTS ON KONAN SMC-200 DISK CONTROLLER * * *anˆ BUSDRVA ð �:� HEX 90 = OUTPUT PORT (BUS DRIVERS - BUSDRVA CONT- ROLS THE BUS & SELECT LINES TO THE DISK DRIVE (BITS 0,1 = BITS 8,9 OF THE BUS DATA, BIT 4 = DRIVE ADDRESS AND BIT 7 = POWER SAVE))—axˆ BUSDRVB ð ‘:� HEX 91 = OUTPUT PORT (BUS DRIVERS - BUSDRVB CONT- ROLS THE BUS DATA LINES TO THE DISK DRIVE (BITS 0 - 7 = BUS DATA 0 - 7))Vb‚ˆ CMDREG ð ’ :� HEX 92 = OUTPUT PORT (COMMAND REGISTER - USED TO INITIATE THE FOLLOWING: DMA AND DISK TRANSFERS, DISK SELECTION, HEAD SELECTION, SEEKS, AND RECOVERY OPERATIONS)çbŒ� BITS - 0 = DISK WRITE, 1 = DMA WRITE, 2 = DMA READ, 3 = DISK READ, 4 = SELECT UNIT, 5 = SET CYLINDER, 6 = SET HEAD, 7 = FAULT RECOVERYŒc–ˆ SECADDP ð “:� HEX 93 = OUTPUT PORT (SECTOR ADDRESS - SELECTS THE SECTOR TO BE USED FOR THE NEXT READ OR WRITE OPERATION (BITS - 0 = LSB AND 7 = MSB))€d ˆ SECBUFP ð ”:� HEX 94 = INPUT PORT/OUTPUT PORT (SECTOR BUFFER - ALLOWS SOFTWARE TO READ AND WRITE THE SECTOR BUFFER (1K OF RAM LOGICALLY PLACED BETWEEN THE DISK AND USER'S MEMORY. SIZE = BYTES OF USER MEMORY + HEADER BYTES.))-eªˆ STATPRT ð —:� HEX 97 = INPUT/OUTPUT PORT (STATUS - ALLOWS DONE, READY AND ERROR STATUS TO BE READ. WRITING TO THIS I/O PORT RESETS THE SECTOR BUFFER ADDRESS)Äe´� BITS - 0 = SELECTED, 1 = SEEK ERROR, 2 = CHECKSUM ERROR, 3 = BUSY OR PROTECTED, 4 = ON CYLINDER, 5 = DISK FAULT, 6 = DISK READY 7 = DONEõeÈ� * * * DEFINE SMC-200 LEGAL COMMANDS * * *GfÒˆ RESETS ð :� HEX 0 (RESETS DONE AND INTERRUPT, NO DATA SET-UP REQUIRED)›f܈ DSKWRT ð :� HEX 1 (WRITES THE CONTENTS OF THE SECTOR BUFFER TO THE DISK)gæ� THE DATA IS WRITTEN ON THE CURRENTLY SELECTED DRIVE, HEAD AND TRACK AT THE SECTOR SELECTED BY THE SECTOR ADDRESS REGISTERqgðˆ DSKRD ð :� HEX 8 (READS A SECTOR FROM THE DISK INTO THE SECTOR BUFFER)ígú� THE SECTOR READ IS DEFINED BY THE SECTOR REGISTER AND IS TAKEN FROM THE CURRENTLY SELECTED DRIVE, HEAD, AND TRACKEhˆ SELUNIT ð :� HEX 10 (THIS COMMAND CAUSES THE SELECT TAG LINE TO BE STROBED)¸h� PRIOR TO ISSUING THIS COMMAND THE ADDRESS OF THE DRIVE TO BE SEL- ECTED IS SET INTO THE BUSDRVA REGISTEREiˆ SETCYL ð  :� HEX 20 (CAUSES THE SELECTED DRIVE TO SEEK TO THE CYLINDER SELECTED BY BUS 0 - 9 LINES (SET BY BUSDRVA AND BUSDRVB))®i"ˆ SETHEAD ð @:� HEX 40 (SELECTS THE DISK HEAD IDENTIFIED BY THE BUS LINES (SET BY OUT BUSDRVB))j,ˆ FLTCLR ð €:� HEX 80 (PERFORMS THE FAULT CLEAR FUNCTION IDENT- IFIED BY THE BUS LINES)�j6ˆ FLTREC ð ˆ:� HEX 88 (READS A SECTOR FROM THE DISK (SAME AS 08H) WITH ERROR RECOVERY FUNCTIONS SELECTED BY OUT BUSDRVA AND BUSDRVB)¿jô‰  N :� JUMP TO MAIN PROGRAMãjè� * * * CLEAR DRIVE FAULT * * *kê� BUSDRVA, :� MSB SET TO ZERO%kí� BUSDRVB,:� FAULT CLEARKkò� CMDREG,FLTCLR :� FAULT RECOVERYekü� ˆ :� GET STATUSES„k� ì :� IDENTIFY STATUSESœk‹ DSKFLT ð  Ï 8ºk.Ž :� BACK TO MAIN PROGRAMàk8‘" ":‘ " * * * ERROR * * * ":‘" "lB‘"DISK FAULT CLEAR ON UNIT ";UNITó;" WAS UNSUCCESSFUL "$lL�Ol°� * * * DISPLAY CURRENT STATUSES * * *ilº� ˆ :� GET STATUSESˆlÄ� ì :� IDENTIFY STATUSES¦lÎ� X :� DISPLAY STATUSES¬lØŽØl� * * * RETURN TO ZERO SEEK (RTZ) * * *ûl� BUSDRVA, :� MSB SET TO ZEROm� BUSDRVB,@ :� HEX 40 = RTZBm(� CMDREG,FLTCLR :� FAULT RECOVERYVm-� CMDREG,RESETSpm2� ˆ :� GET STATUSES�m<� ì :� IDENTIFY STATUSES¬mF‹ DONE ð € Ï P :¢ 2ÌmP‹ SEEKERR ñï  Ï Z :¢ xÕmZ� OKómnŽ :� BACK TO MAIN PROGRAMnx‘" ":‘" * * * ERROR * * * ":‘" "an‡‘"RETURN TO ZERO (RTZ) SEEK WAS UNSUCCESSFUL FOR DISK UNIT ";UNITógnŒ�‹nÜ� * * * MAIN SEEK ROUTINE * * *Ænæ� *** CONVERT CYLINDER ADDRESS (TWO BINARY DIGITS) ***ãnð‹ XCYL ïð  Ï ñ :¢ ùoñ ‹ XCYL ñ  Ï ó :¢ ù oó LCYL ð XCYL :MCYL ð -oö ‰ Loù‹ XCYL ïð  Ï ú :¢ loú ‹ XCYL ñ  Ï ü :¢ �oü LCYL ð XCYL ó  :MCYL ð œoÿ ‰ »o‹ XCYL ïð  Ï  :¢  Ûo ‹ XCYL ñ  Ï  :¢  þo LCYL ð XCYL ó  :MCYL ð  p ‰ *p ‹ XCYL ïð  Ï   :¢ ÂJp  ‹ XCYL ñ  Ï  :¢ ®mp LCYL ð XCYL ó  :MCYL ð zp ‰ ˆp� DO SEEK›p6� BUSDRVA,MCYL®p@� BUSDRVB,LCYLÂpJ� CMDREG,SETCYLÖpO‘"LCYL = ";LCYLêpP‘"MCYL = ";MCYLqT� ˆ :� GET STATUSES#q^� ì :� IDENTIFY STATUSES@qh‹ DONE ð € Ï r :¢ T`qr‹ SEEKERR ñï  Ï | :¢ �iq|� OK‡q†Ž :� BACK TO MAIN PROGRAM¬q�‘" ":‘" * * * ERROR * * * ":‘" "÷qš‘"SEEK TO CYLINDER ";XCYL;" WAS UNSUCCESSFUL FOR DISK UNIT ";UNIT ó ýq¤�3r®‘"THERES NOT THAT MANY CYLINDERS (0 - 1023) MAX "Qr¸Ž :� BACK TO MAIN PROGRAM�r‘"NO SUCH THING AS A NEGATIVE CYLINDER (0 - 1023) MAX "šrÄSCYL ð §rÆECYL ð ´rÈXCYL ð ÒrÌŽ :� BACK TO MAIN PROGRAMñr� * * * DISK RELEASE * * * s� BUSDRVA, :� RELEASE0s� BUSDRVB, :� LSB SET TO ZEROUs&� CMDREG,FLTCLR:� FAULT RECOVERYos0� ˆ :� GET STATUSESŽs:� ì :� IDENTIFY STATUSES¥sD‹ SELECT ð  Ï XÈsNŽ :� OK - BACK TO MAIN PROGRAMísX‘" ":‘" * * * ERROR * * * ":‘" "*tb‘"DISK RELEASE WAS UNSUCCESSFUL ON DISK UNIT ";UNIT ó 0tl�Nt”� * * * SELECT UNIT * * *atž� BUSDRVA,UNITvt¨� CMDREG,SELUNIT�t«� ˆ :� GET STATUSES¯t®� ì :� IDENTIFY STATUSESÍt²‹ SELECT ð  Ï · :¢ Æát·� CMDREG,RESETSÿt¼Ž :� BACK TO MAIN PROGRAM$uÆ‘" ":‘" * * * ERROR * * * ":‘" "QuБ"UNABLE TO SELECT DISK UNIT ";UNIT ó WuÚ�vuˆ� * * * GET STATUSES * * *�u’STATUS ð ÿ�(STATPRT)•uâ޹uì� * * * IDENTIFY STATUSES * * *åuöSELECT ð STATUS ÷  :� HEX 1 = SELECTEDvSEEKERR ð STATUS ÷  :� HEX 2 = SEEK ERRORFv CHKSUM ð STATUS ÷  :� HEX 4 = CHECKSUM ERROR�vBSYWRP ð STATUS ÷  :� HEX 8 = BUSY OR WRITE PROTECTED±vONCYL ð STATUS ÷  :� HEX 10 = ON-CYLINDERáv(DSKFLT ð STATUS ÷  :� HEX 20 = DISK FAULTw2DSKRDY ð STATUS ÷ @ :� HEX 40 = DISK READY9w<DONE ð STATUS ÷ € :� HEX 80 = DONE?wFŽ`wX� * * * PRINT ROUTINES * * *wZ� *** DISPLAY STATUSES ***�w[‘" ":‘" "—w]� ”¡wb� ¨«wg� Ƶwl� ä¿wq� Éwv�  Ów{� >Ýw€� \çw…� zíwŠŽ x”‹ SELECT ð  Ï ž :¢ Ž?xž‘"DISK UNIT ";UNIT ó ;" IS CURRENTLY SELECTED "Ex£Žbx¨‹ SEEKERR ð  Ï ² :¢ Ž“x²‘"DISK UNIT ";UNIT ó ;" HAS A SEEK ERROR "™x¼޵xÆ‹ CHKSUM ð  Ï Ð :¢ ŽêxБ"DISK UNIT ";UNIT ó ;" HAS A CHECKSUM ERROR "ðxÚŽ yä‹ BSYWRP ð  Ï î :¢ Ž?yî‘"DISK UNIT ";UNIT ó ;" IS WRITE PROTECTED "EyøŽay‹ ONCYL ð  Ï   :¢ Ž�y ‘"DISK UNIT ";UNIT ó;" IS ON-CYLINDER "•y޲y ‹ DSKFLT ð  Ï * :¢ ŽÜy*‘"DISK UNIT ";UNITó;" HAS A FAULT "ây4Žÿy>‹ DSKRDY ð @ Ï H :¢ Ž&zH‘"DISK UNIT ";UNITó;" IS READY ",zRŽGz\‹ DONE ð € Ï f :¢ Žmzf‘"DISK UNIT ";UNITó;" IS DONE "szpŽ—zz‘"STATUS = ";ÿš(STATUS);" HEX "¦z‘ " ":‘" "¬z„ŽÖz'� * * * SELECT DISK UNIT (TEST) * * *{'…"ENTER DISK UNIT TO BE SELECTED (0 - 15 DECIMAL) ";UNIT4{'UNIT ð UNIT ò  :� ADD BIASM{'� ” :� SELECT UNIT‰{$'‘"SELECTION OF DISK UNIT ";UNIT ó ;" WAS SUCCESSFUL "§{.'� Z :� DISPLAY STATUSES½{V'Ž :� BACK TO MENUñ{o'� * * * DISPLAY STATUS DEFINITIONS (TEST) * * *;|Ø'‘"DONE - IS SET TRUE AT COMPLETION, OF A SEEK OPERATION (SUCCESSFU- "…|Ý'‘"L OR UNSUCCESSFUL) AND UPON THE COMPLETION OF A DISK TRANSFER. S- "²|â'‘"ELECTING A DISK MAY ALSO CAUSE DONE. "»|ç'‘" "}ì'‘"DISK READY - INDICATES THAT THE SELECTED DISK IS UP TO SPEED, THE "O}ñ'‘"HEADS ARE POSITIONED OVER THE RECORDING TRACKS, AND NO FAULT CON- "s}ö'‘"DITION EXISTS IN THE DRIVE. "|}û'‘" "Å}(‘"DISK FAULT - INDICATES A FAULT CONDITION EXISTS IN THE SELECTED "Ù}(‘"DISK DRIVE. "â}(‘" ")~ (‘"ON CYLINDER - INDICATES THE HEADS ARE POSITIONED OVER A TRACK. "7~(‘" ":‘" "�~(‘"BUSY - USED ONLY ON DUAL CHANNEL DISKS. INDICATES THAT THE SELEC- "Ë~(‘"TED DRIVE IS CURRENTLY BEING ACCESSED BY, OR IS RESERVED BY, AN- "å~(‘"OTHER CONTROLLER. "î~ (‘" "8#(‘"CHECKSUM ERROR - INDICATES A READ ERROR HAS OCCURRED. WILL BE CL- "c-(‘"EARED BY THE NEXT SUCCESSFUL READ. "l7(‘" "™8(‘"TYPE RETURN TO CONTINUE ":… XX:‘ÿ–( )ãA(‘"SEEK ERROR - INDICATES A SEEK ERROR HAS OCCURRED ON THE SELECTED "-€K(‘"DRIVE. THE ERROR MAY ALSO BE CLEARED BY PERFORMING A RTZ ( RETURN "E€U(‘"TO ZERO ) SEEK. "N€_(‘" "™€i(‘"SELECTED - INDICATES THAT THE LAST SELECT OPERATION WAS SUCCESSFUL."¢€n(‘" "á€s(‘"WRITE PROTECT - INDICATES THE DISK IS WRITE PROTECTED. "ê€}(‘" "�Œ(Ž :� BACK TO MENU-�)� * * * RETURN TO ZERO (RTZ) SEEK (TEST)F�)�  :� DO RTZ SEEK��)‘"RETURN TO ZERO (RTZ) SEEK WAS SUCCESSFUL FOR DISK UNIT ";UNIT ó ­�)� Z :� DISPLAY STATUSESÃ�")Ž :� BACK TO MENUí�6)� * * * DISPLAY STATUSES (TEST) * * *‚@)� ° :� DO STATUSES AND DISPLAY THEM2‚J)Ž :� BACK TO MAIN MENU]‚h)� * * * CLEAR DRIVE FAULT (TEST) * * *{‚r)� è :� CLEAR DISK FAULTµ‚|)‘"DISK FAULT CLEAR WAS SUCCESSFUL ON UNIT ";UNIT ó Ó‚†)� Z :� DISPLAY STATUSESé‚�)Ž :� BACK TO MENUƒÂ)� * * * SEQ FWD SEEK (TEST) * * *<ƒÌ)…"ENTER STARTING CYLINDER ADDRESS ";SCYLgƒÖ)…"ENTER ENDING CYLINDER ADDRESS ";ECYLŠƒÛ)…"ENTER SEEK STEP AMOUNT ";STPšƒà)XCYL ð SCYL¯ƒê)� Ü :� DO SEEKàƒþ)ˆ XCYL ð XCYL ò STP :� GENERATE NEXT ADDRESS„*‹ XCYL ïð ECYL ò  Ï * :¢ ê)N„*‘"SEQUENTIAL FORWAD SEEK TEST WAS SUCCESSFUL FOR DISK UNIT ";UNIT ól„&*� Z :� DISPLAY STATUSES‚„0*Ž :� BACK TO MENU¨„ø*� * * * SEQ REV SEEK (TEST) * * *Õ„+…"ENTER STARTING CYLINDER ADDRESS ";SCYL… +…"ENTER ENDING CYLINDER ADDRESS ";ECYL#…+…"ENTER SEEK STEP AMOUNT ";STP3… +XCYL ð SCYLH…*+� Ü :� DO SEEKy…4+ˆ XCYL ð XCYL ó STP :� GENERATE NEXT ADDRESS�…>+‹ XCYL ñð ECYL ó  Ï H+ :¢ *+ç…H+‘"SEQUENTIAL REVERSE SEEK TEST WAS SUCCESSFUL FOR DISK UNIT ";UNITó†R+� Z :� DISPLAY STATUSES†\+Ž :� BACK TO MENUA†À+� * * * RANDOM SEEK (TEST) * * * f†Ê+…"ENTER MAXIMUM CYLINDER ";MXCYL‘†Ô+…"ENTER HOW MANY SEEKS YOU WANT ";MCNTÁ†Þ+XCYL ð ÿ…(ÿˆ ô è) :� GENERATE CYL ADDRESS߆ã+‘" ";XCYL‡è+‹ XCYL ïð MXCYL ò  Ï Þ+ :� PICK LEGAL CYLINDER(‡ò+SCNT ð SCNT ò E‡ü+‹ SCNT ïð MCNT ò  Ï ,Z‡,� Ü :� DO SEEKd‡ ,‰ Þ+¤‡,‘"RANDOM SEEK TEST WAS SUCCESSFUL FOR DISK UNIT ";UNIT ó Ç,‘"TOTAL SEEKS = ";SCNT ó á‡,� Z :� DISPLAY STATUSESˆ,SCNT ð  :� RESET SEEK COUNTERˆ$,Ž :� BACK TO MENUEˆˆ,� * * * OSCILLATING SEEK (TEST) * * *jˆ’,…"ENTER STARTING CYLINDER ";SCYL�ˆœ,…"ENTER ENDING CYLINDER ";ECYL¸ˆ¦,…"ENTER HOW MANY SEEKS YOU WANT ";MCNTȈ°,XCYL ð SCYL݈º,� Ü :� DO SEEKíˆÄ,XCYL ð ECYL‰Î,� Ü :� DO SEEK‰Ø,SCNT ð SCNT ò /‰â,‹ SCNT ïð MCNT Ï ö,9‰ì,‰ °,~‰ö,‘"OSCILLATING SEEK TEST WAS SUCCESSFUL FOR DISK UNIT ";UNIT ó ™‰û,‘"TOTAL SEEKS = ";SCNT·‰-� Z :� DISPLAY STATUSESÚ‰-SCNT ð  :� RESET SEEK COUNTERð‰ -Ž :� BACK TO MENUŠP-� * * * DISK RELEASE (TEST) * * *.ŠZ-�  :� DO RELEASEdŠd-‘"RELEASE WAS SUCCESSFUL ON DISK UNIT ";UNIT ó ‚Šn-� Z :� DISPLAY STATUSES�Šx-Ž :� BACK TO MAIN MENU¤Š N� ÁŠ*N‘ ÿ–( ) :� CLEAR SCREENÜŠ„N� * * * MENU * * *‹òN‹ IP$ ñï "DONE" Ï � lR :� INIT. USER JUST ONCE‹üN‘" "a‹O‘" * * * * * * MAID-III * * * * * * "j‹O‘" "s‹O‘" "�‹$O‘" 1) - DISK SELECT "§‹.O‘" 2) - CLEAR FAULT "Ï‹8O‘" 3) - RETURN TO ZERO (RTZ) SEEK "õ‹BO‘" 4) - SEQUENTIAL FORWARD SEEK "ŒLO‘" 5) - SEQUENTIAL REVERSE SEEK "5ŒVO‘" 6) - RANDOM SEEK "TŒ`O‘" 7) - OSCILLATING SEEK "€ŒjO‘" 8) - DISPLAY CURRENT DISK STATUSES "®ŒtO‘" 9) - DISPLAY DEFINITIONS OF STATUSES "ÕŒ~O‘"10) - DISK RELEASE (DE-SELECT) "O‘"11) - FORMAT DISK " �’O‘"12) - FORMAT VERIFY "0�œO‘"13) - WRITE - READ - COMPARE "h�¦O‘"14) - OSCILLATING SEEK WITH HEADER CHECK (FAST) "•�°O‘"15) - DISPLAY SECTOR WRITTEN TO DISK "Á�ºO‘"16) - DISPLAY SECTOR READ FROM DISK "Ç�ÄO�Í�ÎO�Ó�ØO�Ù�âO�ß�ìO�å�öO�ë�P�ñ� P�ÿ�P‘" ":‘" ")ŽP…"ENTER NUMBER FOR DESIRED TEST";TESTFŽP‘ ÿ–( ) :� CLEAR SCREEN]ŽP‹ TEST ð  Ï � 'tŽ(P‹ TEST ð  Ï � h)‹Ž2P‹ TEST ð  Ï � )¢ŽbAOSBUFF ð %P�\”HbAISBUFF ð )R�p”RbAHDR1 ð %P�„”\bAHDR2 ð &P�˜”fbAHDR3 ð 'P�¬”pbAHDR4 ð (P�À”zbAXCYL ð P�Ô”„bAXHD ð P�蔎bAXSECT ð P�ü”˜bAXDATA ð P�•¢bAXPRGCNT ð P�•ÔbŽY•œc� *** PASS FORMAL PARAMETERS TO MACHINE LANGUAGE ROUTINES ***k•°c™ ASUNIT,UNIT}•ºc™ ASCYL,MSCYL“•¿c™ ASCYL ò ,LSCYL¥•Äc™ AECYL,MECYL»•Éc™ AECYL ò ,LECYLÊ•Îc™ ASHD,SHDÙ•Øc™ AEHD,EHDì•âc™ ASSECT,SSECTÿ•ìc™ AESECT,ESECT–öc™ ASDATA,SDATA'–d™ APRGCMD,PRGCMD<– d™ APRGMOD,PRGMODQ–d™ ADATMOD,DATMODg–d™ APRGCNT,MPRGCNT�–#d™ APRGCNT ò ,LPRGCNT‡–,eŽË–�e� *** PASS FORMAL PARAMETERS FROM MACHINE LANGUAGE ROUTINES ***ä–¤eCSTATS ð ÿ—(ACSTATS)ý–®ePSTATS ð ÿ—(APSTATS)—ÂeMXCYL ð ÿ—(AXCYL)-—ÌeLXCYL ð ÿ—(AXCYL ò )@—ÖeXHD ð ÿ—(AXHD)W—àeXSECT ð ÿ—(AXSECT)n—êeXDATA ð ÿ—(AXDATA)Š—ôeMXPRGCNT ð ÿ—(AXPRGCNT)ª—þeLXPRGCNT ð ÿ—(AXPRGCNT ò )°—iŽë—xi� *** CONVERT CYLINDER ADDRESS (TWO BINARY DIGITS) ***˜ i‹ XCYL ïð  Ï ªi :¢ Èi(˜ªi ‹ XCYL ñ  Ï ´i :¢ ÈiE˜´i LCYL ð XCYL :MCYL ð R˜¾i ‰ @jq˜Èi‹ XCYL ïð  Ï Òi :¢ ði‘˜Òi ‹ XCYL ñ  Ï Üi :¢ ði´˜Üi LCYL ð XCYL ó  :MCYL ð Á˜æi ‰ @jà˜ði‹ XCYL ïð  Ï úi :¢ j™úi ‹ XCYL ñ  Ï j :¢ j#™j LCYL ð XCYL ó  :MCYL ð 0™j ‰ @jO™j‹ XCYL ïð  Ï "j :¢ �jo™"j ‹ XCYL ñ  Ï ,j :¢ |j’™,j LCYL ð XCYL ó  :MCYL ð Ÿ™6j ‰ @j°™@j � DO SEEK¹™Jj Žï™|j‘"THERES NOT THAT MANY CYLINDERS (0 - 1023) MAX "õ™†j�1š�j‘"NO SUCH THING AS A NEGATIVE CYLINDER (0 - 1023) MAX ">ššjSCYL ð Kš¤jECYL ð Xš®jXCYL ð ^š¸j�„š0u� *** GENERAL PARAMETER INPUT ***ªšNu…"ENTER STARTING CYLINDER ";ESCYLΚXu…"ENTER ENDING CYLINDER ";EECYLïšbu…"ENTER STARTING HEAD ";ESHD›lu…"ENTER ENDING HEAD ";EEHD3›vu…"ENTER STARTING SECTOR ";ESSECTV›€u…"ENTER ENDING SECTOR ";EESECTg›”uXCYL ð ESCYL|›žu� xi :� CONVERT�›¨uMSCYL ð MCYLž›²uLSCYL ð LCYL¯›¼uXCYL ð EECYLÄ›Æu� xi :� CONVERTÕ›ÐuMECYL ð MCYLæ›ÚuLECYL ð LCYLõ›äuSHD ð ESHDœîuEHD ð EEHDœøuSSECT ð ESSECT*œvESECT ð EESECT0œ*vŽUœÀv� *** DISPLAY PROGRAM STATUS ***sœòv‹ PSTATS ð  Ï üv :¢ w–œüv‘"PROGRAM STATUS - NO ERRORS "œœwŽºœw‹ PSTATS ð  Ï w :¢ .wòœw‘"PROGRAM STATUS - UNABLE TO SELECT DRIVE (ERROR) "øœ$wŽ�.w‹ PSTATS ð  Ï 8w :¢ LwJ�8w‘"PROGRAM STATUS - SEEK ERROR OCCURED (ERROR) "P�BwŽn�Lw‹ PSTATS ð  Ï Vw :¢ jwº�Vw‘"PROGRAM STATUS - MISSING STATUS (RDY,ONCYL,SEL) BEFORE WRITE (ERROR)"À�`wŽÞ�jw‹ PSTATS ð  Ï tw :¢ ˆw0žtw‘"PROGRAM STATUS - BAD STATUS (FLT,PROTECTED,SEEK ERR) BEFORE WRITE (ERROR) "6ž~wŽTžˆw‹ PSTATS ð  Ï ’w :¢ ¦w ž’w‘"PROGRAM STATUS - MISSING STATUS (RDY,ONCYL,SEL) AFTER WRITE (ERROR) "¦žœwŽÄž¦w‹ PSTATS ð  Ï °w :¢ ÄwŸ°w‘"PROGRAM STATUS - BAD STATUS (FLT,PROTECTED,SEEK ERR) AFTER WRITE (ERROR) "ŸºwŽ9ŸÄw‹ PSTATS ð  Ï Îw :¢ âw…ŸÎw‘"PROGRAM STATUS - MISSING STATUS (RDY,ONCYL,SEL) BEFORE READ (ERROR) "‹ŸØwŽªŸâw‹ PSTATS ð  Ï ìw :¢ xñŸìw‘"PROGRAM STATUS - BAD STATUS (FLT,SEEK ERR) BEFORE READ (ERROR) "÷ŸöwŽ x‹ PSTATS ð  Ï  x :¢ xa  x‘"PROGRAM STATUS - MISSING STATUS (RDY,ONCYL,SEL) AFTER READ (ERROR) "g xކ x‹ PSTATS ð  Ï (x :¢ §ÞŠ� œcJ§èж MLANGT§òŠ� �er§üŠ‹ PSTATS ð  Ï ‹ :¢ 8‹}§‹� GOODº§‹‘"FORMAT VERIFY WAS SUCCESSFUL FOR DISK UNIT ";UNIT ó Þ§‹� Àv :� DISPLAY PROGRAM STATUS¨$‹� ° :� GET,DECODE, DISPLAY CURRENT STATUSES&¨.‹Ž :� BACK TO MENUe¨8‹‘"FORMAT VERIFY WAS UNSUCCESSFUL FOR DISK UNIT ";UNIT ó †¨=‹� y :� DISPLAY LAST HEADERª¨B‹� Àv :� DISPLAY PROGRAM STATUSΨL‹STATUS ð CSTATS :� GET STATUSESí¨V‹� ì :� IDENTIFY STATUSES ©`‹� X :� DISPLAY STATUSES!©j‹Ž :� BACK TO MENUF©Ø‹� *** WRITE - READ - COMPARE ***x©â‹‘" * * * WRITE - READ - COMPARE * * * "�©ì‹‘" "É©ö‹PRGCMD ð  :� TELL MACHINE LANGUAGE PRG. TO WRITE,READ THEN COMPAREÓ©Œ� 0u ªŒ…"ENTER DATA BYTE TO USE (0 - 255) DECIMAL ";ESDATAªŒSDATA ð ESDATA(ª Œ� œc4ªŒ¶ MLANG>ªŒ� �e\ª(Œ‹ PSTATS ð  Ï 2Œ :¢ dŒgª2Œ� GOOD°ª<Œ‘"TEST - WRITE,READ,COMPARE WAS SUCCESSFUL FOR DISK UNIT ";UNIT ó ÔªFŒ� Àv :� DISPLAY PROGRAM STATUS«PŒ� ° :� GET,DECODE,DISPLAY CURRRENT STATUSES«ZŒŽ :� BACK TO MENUg«dŒ‘"TEST - WRITE,READ,COMPARE WAS UNSUCCESSFUL FOR DISK UNIT ";UNIT ó ˆ«iŒ� y :� DISPLAY LAST HEADER¬«nŒ� Àv :� DISPLAY PROGRAM STATUSЫxŒSTATUS ð CSTATS :� GET STATUSESï«‚Œ� ì :� IDENTIFY STATUSES ¬ŒŒ� X :� DISPLAY STATUSES#¬–ŒŽ :� BACK TO MENUU¬Ì�� *** OSCILLATING SEEK WITH HEADER VERIFY ***”¬Ö�‘" * * * OSCILLATING SEEK WITH HEADER VERIFY * * * "�¬à�‘" "ܬê�PRGCMD ð  :� TELL MACHINE LANGUAGE PROG. TO DO OSC. SEEKSæ¬ô�� 0u­ø�…"ENTER HOW MANY SEEKS YOU WANT ";ELPRGCNT(­ù�XXX ð ELPRGCNTD­ú�‹ XXX ï ÿ Ï û� :¢ þ�W­û�XXX ð XXX ó ÿh­ü�LPRGCNT ð ÿr­ý�‰ Ž„­þ�LPRGCNT ð XXX˜­ÿ�XXX ð XXX ó XXX¢­Ž� œc®­޶ MLANG¸­Ž� �eÖ­Ž‹ PSTATS ð  Ï &Ž :¢ XŽá­&Ž� GOODý­*Ž‹ XXX ñð  Ï +Ž :¢ ú�$®+ŽSEKCNT ð ELPRGCNT ó XXX ó LXPRGCNTA®-Ž‘"TOTAL SEEKS = ";SEKCNT�®0Ž‘"OSCILLATING SEEK WAS SUCCESSFUL FOR DISK UNIT ";UNIT ó ¥®:Ž� Àv :� DISPLAY PROGRAM STATUSÖ®DŽ� ° :� GET,DECODE,DISPLAY CURRENT STATUSESì®NŽŽ :� BACK TO MENU.¯XŽ‘"OSCILLATING SEEK WAS UNSUCCESSFUL FOR DISK UNIT ";UNIT ó U¯YŽSEKCNT ð ELPRGCNT ó XXX ó LXPRGCNTr¯ZŽ‘"TOTAL SEEKS = ";SEKCNT“¯]Ž� y :� DISPLAY LAST HEADER·¯bŽ� Àv :� DISPLAY PROGRAM STATUSÛ¯lŽSTATUS ð CSTATS :� GET STATUSESú¯vŽ� ì :� IDENTIFY STATUSES°€Ž� X :� DISPLAY STATUSES.°ŠŽŽ :� BACK TO MENUY°ˆ�� *** DISPLAY OUTPUT SECTOR BUFFER ***e°œ�‘ÿ–( )•°¦�‘" * * * OUTPUT SECTOR BUFFER * * * "ž°°�‘" "ɰº�…"DUMP IN HEX (H), OR DECIMAL (D) ";B$Þ°Ä�BUFPTR ð AOSBUFFè°Ø�� }þ°â�Ž :� BACK TO MENU(±ì�� *** DISPLAY INPUT SECTOR BUFFER ***4±‘‘ÿ–( )c± ‘‘" * * * INPUT SECTOR BUFFER * * * "l±‘‘" "—±‘…"DUMP IN HEX (H), OR DECIMAL (D) ";B$¬±(‘BUFPTR ð AISBUFF¶±<‘� }̱F‘Ž :� BACK TO MENUR BUFFER * * * "l±‘‘" "