þþñ èX;SAVE #D2:DUPCMD1.M65òA’MAIN MENU ROUTINESAüX; **** DOS MENU ****X;X;…DMENU …CLSCR$( A¡DISK OPERATING SYSTEM II VERSION A. €=A… 2.5 A8) AšCOPYRIGHT 1984 ATARI CORP.A=‚CR=‚CRB, A¡A. DISK DIRECTORY I. FORMAT DISKA=‚CRL/ A¤B. RUN CARTRIDGE J. DUPLICATE DISKA=‚CRV, A¡C. COPY FILE K. BINARY SAVEA=‚CR`, A¡D. DELETE FILE(S) L. BINARY LOADA=‚CRj/ A¤E. RENAME FILE M. RUN AT ADDRESSA=‚CRt/ A¤F. LOCK FILE N. CREATE MEM.SAVA=‚CR~/ A¤G. UNLOCK FILE O. DUPLICATE FILEA=‚CRˆ. A£H. WRITE DOS FILES P. FORMAT SINGLEA=‚CR’ ƒCDN=ƒCDN=ƒCDN=ƒCDN=ƒCDNœ …DMEND ¦…DULEN…DMEND…DMENU°X;º‡@ALIGN u Ä…DOSOS!†:DOSOSÎX;Ø>…DUJPT †DIRLST=…STCAR=†CPYFIL=†DELFIL=†RENFIL=…LKFIL=…ULFILâ7 …WBOOT=†FMTDSK=†DUPDSK=†SAVFIL=…LDFIL=„BRUN=†MEMSAVì †DUPFIL=†SGLFMTö!…DUNUM;;NUMBER OF FUNCTIONS 0X; **** DISK OPERATING SYS MONITOR ****X;X;(†:DOSOS$>ÿ2 -;;MAKE SURE DECIMAL MODE OFF< &†BRKKEYF2P &†LOADFGZQ>d P†LMARGNnQ>'xP†RMARGN;;SET MARGINS‚%Q†POKMSK;;ENABLE BREAK INTERRRUPTSŒL>€– P†POKMSK  P…IRQENª †INITIO;;CLOSE FILES´X;¾#X; Check for mini-dup of DOS 2.5ÈX;Ò QˆOLDPRMSGÜ!R>L;; If not a JMP, then 2.0sæ F†DSKUTLðX;ú(ˆ:NEED2.0Q>;; Set DUP not in memory P†DUPFLGQ>4Š:WRONGMINI$>5Š:WRONGMINI" …WAITY' !ˆ:NEED2.0,X;67Š:WRONGMINI }=AžInsert DOS 2.0s, type Y ÒÅÔÕÒÎA=‚CR@X;J X; DISK UTILITY MONITORTX;^ †DSKUTLhƒDU1Q>…DUNUMrP†MENUSZ;;SET MENU SIZE| Q>4…DUJPT† P†JMPTBL Q>5…DUJPTš)P†JMPTBL;;SET UP JUMP TABLE ADDRESS¤X; FALL THRU TO MENU SELECT®X;¸X;ÂX;ÌCX; MENU SELECT MONITOR -- VECTORS TO ROUTINE SELECTED FROM MENU.ÖX;à$…SHMENQ>4…DMENU;;GET MENU ADDRESSê P…ICBALô Q>5…DMENUþ P…ICBAHQ>4…DULEN;;GET MENU LENGTH P…ICBLL Q>5…DULEN& P…ICBLH0 †DSPMSG;;SHOW MENU:X;D!X; SELECT ITEM FROM MENUNX9X; **** FUNCTIONS COME HERE WHEN THEY ARE DONE ****bX;l)†MENUSL$>ÿ;;RESET STACK AT THIS POINTvB€2Š!&†WCFLAG;;CLEAR WILD-CARD FLAG”Q>4ƒSIT;;SELECT ITEM MESSAGEž $>5ƒSIT¨ ‡PRNTMSG²Q>@;;MAKE SURE UPPER CASE¼ P†SHFLOKÆ" †CHRGET;;GO GET KEYBOARD CHAR.ÐX;ÚR>‚CR;;IF CR RE-DISPLAY MENUä F…SHMENîX;ø;0S> A;;CONVRT ASCII CHAR. TO BINARY # & SUB. 1 0G…RANGE;;IF ASCII CHAR NOT A #, GO READ AGAIN*R†MENUSZ;;IS THE # ENTERED > MENU SIZE? "I…RANGE;;IF YES, GO READ AGAIN.*T?4#?;;SET INDEX TO (MENU # - 1) * 2> Q@†JMPTBL7H3RP…RAMLO;;GET STRING POINTER\ Q@†JMPTBL7f P…RAMLOp+%>;;LOAD STRING POINTER INTO REGISTERSzQ@…RAMLO7;;FOR DSPLIN„>Ž1˜ Q@…RAMLO7¢) †DSPLIN;;PRINT MODULES INITIAL STRING¬ …SCROL;;SCROLL INPUT WINDOW¶1Q…RAMLO;;INC BY 2 TO POINT PAST STRING POINTERÀ,ÊO>Ô P…RAMLOÞDŒ:DOSELECTIONè #…RAMLOü<Œ:DOSELECTION!@…RAMLO:;;JUMP TO ROUTINE SELECTED BY MENU. …RANGEQ>4ƒNSI $>5ƒNSI ! †DSPLIN;;NO SUCH ITEM MESSAGE$ !†MENUSL. 8 ƒNSI AŒNO SUCH ITEMA=‚CRB X;L GX;PROMPT FOR MENU SELECTION OR REDISPLAY MENU - RETURN IS IN INVERSEV X;` ƒSIT ASELECT ITEM OR Aj  €=A†RETURNAt  A‰ FOR MENUA=‚CR~ „MNSL†MENUSL