þþ¿èX;SAVE #D2:DUPCMDS.M65òAŒRENAME, ETC.Aü(X; **** RENAME FILE ROUTINE ****X;X;IX;RENAME SETS UP IOCB #1 WITH THE OLD FILE NAME AND THE BUFFER ADDRESS$IX;POINTS TO THE NEW FILE NAME. THE NEW FILE SPECIFICATION CANNOT HAVE.JX;A DEVICE ID. THE DEVICE ID IS THE SAME AS SPECIFIED FOR THE OLD FILE8CX;D2:ABC.S2,QQQ.R3 THIS RENAMES ABC.S2 ON DRIVE #2 TO QQQ.R3BX;L†RENFIL „RNMGV1 †GETIC1;;GET OLD FILE SPEC & PUT ADDR IN IOCB` ‡GETNAME;;GET NEW FILE NAMEj# „PERX;;EXIT IF PARAMETER ERRORStX;~% †CHKVER;;MAKE SURE VER 2 DISKETTEˆX;’ X; CONTINUE WITH RENAMEœX;¦ Q>†RENAME°$>º P…ICCOM9Ä …CIOCLÎ !†MENUSLØ+„RNMG A›RENAME - GIVE OLD NAME, NEWA=‚CRâX;ì;X;******************* SUBROUTINE *******************öX;5X; MAKE SURE THIS IS A VERSION 2 FORMAT DISK X;+†CHKVER%>;;ASSUME DRIVE 1- GET DRIVE #3QƒPAR;;TEST CHAR 2 OF FILE SPEC FOR SEMICOLON('R> :;;IF IS, USING DEFAULT DRIVE (1)2!F„DRV1;;IT IS, SO SAVE DRIVE #<,M>;;ELSE CHAR 2 IS ASCII REP OF DRIVE #F!?;;CONVERT TO BINARY & SAVE ITP„DRV1'„UNNO;;SAVE DRIVE #ZX;d5!‡TSTVER2;;TST FOR VERS. 2 DISK- WONT RTURN IF NOTnX;x‚(X; **** FORMAT DISK ROUTINE ****ŒX;–X; (†SGLFMT ƒWHD;; Single density format!ªQ>ˆFORCEFMT´H‹:FMTOPTIONS¾X;ȆFMTDSK ƒWHDÒ Q>†FORMATÜ‹:FMTOPTIONSP‡FMTTYPEæ †GETLINð …GETDNú,O> 0 P„DDSK P„CDSK" „PERX,(Q>4ƒVFM;;QUERY TO VERIFY DRIVE NUMBER6 $>5ƒVFM@ †DSPLINJ †CHRGETTR> Y;;SEE IF OK^HƒFMXh Q‡FMTTYPEr%> !| …DOFMT†ƒFMX!†MENUSL;;EXIT.X;š‡FMTTYPE¤X;® …DOFMT$>¸ P…ICCOM9 Q>4ƒFDPÌ P…ICBAL9Ö Q>5ƒFDPà P…ICBAH9êCô P…ICAX19þ!!…CIOCL;;CALL CIO TO DO FORMAT%ƒWHD A–WHICH DRIVE TO FORMAT?A=‚CR/ƒVFM A…TYPE A="=AYA="=A TO FORMAT DISK A „DDSK& ‚CR0 ƒFDP ADA: „CDSKD A:A=‚CRNX,X; **** START CARTRIDGE ROUTINE ****bX;lX;v…SYVBL†SYSVBV€…XTVBL†XITVBVŠ%…STCAR „SCMG;;NO MSG, PRINT A ”†ROMTSTý¿ž!%†ROMTST;;TEST IF RAM OR OTHER¨Q>ª;;PATTERN #1² P†ROMTST¼ R†ROMTSTÆH†NOTRAM;;BRANCH IF NOT RAMÐQ>U;;PATTERN #2Ú P†ROMTSTä R†ROMTSTîH†NOTRAM;;BRANCH IF NOT RAMøX;-'†ROMTST;;THERE IS VALID RAM - SAY NO CART †NOCARTQ>4ƒNCA$>5ƒNCA;;SAY NO CART  †DSPLIN* !†MENUSL4X;>/X; CHECK IF ROM OR EMPTY ADDRESS SPACEHX;R#†NOTRAMQü¿;;KNOWN ROM ZERO BYTE\*H†NOCART;;BRANCH IF EMPTY ADDRESS SPACEfX;p+>;;SINCE EMPTY ADDR SPACE GIVES A RANDOMz8†CKCARTQ†ROMTST;;VALUE, TEST THE SAME LOC MANY TIMES.„#F†NOCART;;BRANCH IF NO CARTRIDGEŽ R†ROMTST˜#H†NOCART;;BRANCH IF NO CARTRIDGE¢2¬H†CKCART;;LOOP BACK¶X;ÀX;Ê=X; RESET VERTICAL BLANK VECTORS BEFORE ENTERING CARTÔX;Þ †INITIOèQ>;;SET VVBLKIò$>5…SYVBL;;HI BYTEü %>4…SYVBL †SETVBV Q>;;SET VVBLKD $>5…XTVBL$ %>4…XTVBL. †SETVBV8 !†CLMJMPB L ƒNCA AŒNO CARTRIDGEAV „SCMG ‚CR` X;j X;t +X; ******* RUN AT ADDRESS *******~ X;ˆ X;’ X;œ „BRUN „BRMG¦ †GETLIN° …GETNOº „PERXÄ P…RAMLOÎ &…RAMLOØ QƒCTRâ R>ì 2F…MOUT1;;RETURN TO MENU IF NO RUN ADDRESS GIVENö . †INITIO;;CLOSE ALL IOCB'S, THEN REOPEN S/E )!„LMTR;;LOAD MEM.SAV & JUMP TO ADDRESS X; X; &„BRMG A–RUN FROM WHAT ADDRESS?A=‚CR( 2 2X; **** CREATE MEM.SAV FILE ON DISK ****< X;F X;P 6„MEMS A…TYPE A="=AYA="=A’ TO CREATE MEM.SAVA=‚CRZ †MEMSAV „MEMSd  †CHRGET;;GET CHAR (CR)n R> Yx *H„MOUT;;BRANCH IF USER'S ANSWER NOT A Y‚ †MEMSVQ;;TRY TO OPEN MEM.SAVŒ +G…MCONT;;IF FILE DOESN'T EXIST THEN JUMP– -Q>4…MEMSG;;ELSE 'MEMORY.SAVE' AREADY EXIST  $>5…MEMSG;;ª  †DSPLIN;;DISPLAY THIS FACT´ )„MOUT …CLOSX;;EXIT AFTER CLOSING IOCB1¾ …MOUT1!†MENUSL;;È X;Ò X; WRITE MEMORY.SAVE TO DISKÜ X;æ …MCONT †MWRITE;;WRITE FILEð I„MOUTú „MERR!†CIOER1;;DISPLAY ERROR X; ,…MEMSG A›MEM.SAV FILE ALREADY EXISTSA=‚CR