/INCLUDE REXX /**********************************************************************/ /* */ /* REXX program to generate and proccess menus for Z80 SIMULATOR */ /* */ /* (c) Niall Downey & Peter Coghlan 1988 */ /* */ /**********************************************************************/ /* If parameters were used when this program was called then */ /* immediately run the simulator with these parameters. */ PARSE ARG PARM; IF PARM^='' THEN; DO; 'Z80.EXE 'PARM; EXIT; END; 'PANEL Z80PAN'; /* Read in options but if there are no options saved in a file then */ /* create new default options */ MUSIO READ Z80.OPT 10; IF RC ^= 0 THEN; DO; MC='Z80.MC';ASM='Z80.ASM';EXEC='0000';IN='Z80.IN';OUT='Z80.OUT'; LIST=' ';NMI='0';INT='0';DEST='SCSELEC';CC='CC'; END; ELSE; DO; PULL ASM;PULL MC;PULL EXEC;PULL IN;PULL OUT;PULL LIST; PULL NMI;PULL INT;PULL DEST;PULL CC; END; MUSIO CLOSE Z80.OPT; /* Start of main section which generates the menu panel and then */ /* determines which key was pressed. */ START: 'PANEL Z80MENU ASM MC EXEC IN OUT LIST NMI INT DEST CC CHOICE'; SELECT; WHEN CHOICE='C'×AID='07' THEN; DO; 'EDIT 'ASM' NEW;I /INFO Z80;TAB 7,14,31,73;TEXT LC;INPUT'; END; WHEN CHOICE='D'×AID='11' THEN; DO; SAY 'Do you really want to delete your file 'ASM' (Y/N) ?'; PARSE UPPER EXTERNAL ASK;IF ASK='Y' THEN 'PURGE 'ASM; END; WHEN CHOICE='E'×AID='04' THEN 'EDIT 'ASM';TAB 7,14,31,73;TEXT LC'; WHEN CHOICE='A'×AID='08' THEN 'SUBMIT 'ASM; WHEN CHOICE='O'×AID='10' THEN 'OUTPUT'; WHEN CHOICE='R'×AID='06' THEN; DO; IF MC=' ' THEN; DO; SAY ' Enter program name'; PARSE EXTERNAL MC; SIGNAL START; END; BUFFER=MC; IF IN^=' ' THEN BUFFER=BUFFER' IN 'IN; IF OUT^=' ' THEN BUFFER=BUFFER' OUT 'OUT; IF EXEC^=' ' THEN BUFFER=BUFFER' EX 'EXEC; IF NMI^=' ' THEN BUFFER=BUFFER' NMI 'NMI; IF INT^=' ' THEN BUFFER=BUFFER' INT 'INT; IF LIST^=' ' THEN BUFFER=BUFFER' LIST 'LIST; 'Z80.EXE 'BUFFER; END; WHEN CHOICE='P'×AID='05' THEN; DO; 'PRINT 'LIST' R('DEST') 'CC; RC='000'; END; WHEN CHOICE='Q'×AID='03' THEN; /* Save options in a file called Z80.OPT. If the file is not in */ /* the library then create it, if it is then create it. */ DO; PUSH CC;PUSH DEST;PUSH INT;PUSH NMI;PUSH LIST; PUSH OUT;PUSH IN;PUSH EXEC;PUSH MC;PUSH ASM; 'REXLIB Z80.OPT Q'; IF QUEUED()=0 THEN; DO; 'PURGE Z80.OPT -NOLIST'; END; MUSIO WRITE Z80.OPT 10; EXIT; END; WHEN CHOICE='QQ' THEN EXIT; OTHERWISE; END; IF RC^=0 THEN; /* If an error has occured anywhere above then clear the page. */ DO; DO I=0 TO 20;SAY ' ';END; END; CHOICE=' '; SIGNAL START