DEFINITION MODULE EmuMenu; FROM SYSTEM IMPORT BYTE,WORD; TYPE PhysDiskPars = RECORD cpm_drive : BYTE; first_phys_sec : BYTE; phys_tracks : BYTE; phys_sec_pt : BYTE; bytes_per_sec : BYTE; autologin_flag : BYTE; END; dpb = RECORD spt : WORD; bsh : BYTE; blm : BYTE; exm : BYTE; dsm : WORD; drm : WORD; al0 : BYTE; al1 : BYTE; cks : WORD; off : WORD; END; DPBPtr = POINTER TO dpb; PDPPtr = POINTER TO PhysDiskPars; PROCEDURE DoMenue(x,y:CARDINAL;messages:ARRAY OF CHAR; VAR WinSave:ARRAY OF CHAR;VAR res:CARDINAL); (* Pop Up Menue, obere linke Ecke des Rahmens bei x,y. messages = String mit darzustellenden Menuepunkten; Stringende = 0C. Menuepunkte werden durch | getrennt, auch nach letztem Menuepunkt MUSS | stehen. Jeder Menuepunkt darf durch Druecken eines einzigen Zeichens angewaehlt werden, das hell dargestellt wird. Diesem Zeichen muss der Backslash \ vorangestellt werden. Es duerfen maximal 20 Menuepunkte sein. WinSave muss genug Platz enthalten, um Hintergrund + dessen Attribute abzuspeichern, = (Laengster Menuepunkt+2)*2*(Menuepunkte+2) *) PROCEDURE EditDPB(p:DPBPtr;q:PDPPtr; VAR WinSave:ARRAY OF CHAR;VAR OK:BOOLEAN); (* Len WinSave=20*18*2=720 *) PROCEDURE InputString(VAR WinSave,s,p:ARRAY OF CHAR); (* Es wird vorrausgesetzt, daá prompt p < 30 und string s < 30 *) PROCEDURE About(VAR WinSave:ARRAY OF CHAR); (* Author ausgeben *) END EmuMenu.