bobc@tikal.UUCP (Bob Campbell) (05/08/86)
# The rest of this file is a shell script which will extract: # BDPackage.DEF ControlManager.DEF Conversions.DEF Cursors.DEF # DeskManager.DEF DialogManager.DEF EventManager.DEF FileManager.DEF echo x - BDPackage.DEF cat >BDPackage.DEF <<'!Funky!Stuff!' DEFINITION MODULE BDPackage; FROM MacSYSTEM IMPORT LONGINT; EXPORT QUALIFIED NumToString,StringToNum; PROCEDURE NumToString(theNum:LONGINT;VAR theString:ARRAY OF CHAR); PROCEDURE StringToNum(VAR theString:ARRAY OF CHAR;VAR theNum:LONGINT); END BDPackage. !Funky!Stuff! echo x - ControlManager.DEF cat >ControlManager.DEF <<'!Funky!Stuff!' DEFINITION MODULE ControlManager; FROM SYSTEM IMPORT ADDRESS; FROM MacSYSTEM IMPORT LONGINT,Handle; FROM QuickDraw IMPORT Point,Rect; FROM WindowManager IMPORT WindowPtr; EXPORT QUALIFIED (*CONST*) pushButProc,checkBoxProc,radioButProc,useWFont,scrollBarProc, (* Part codes *) inButton,inCheckBox,inUpButton,inDownButton,inPageUp,inPageDown,inThumb, (* Axis constraints for DragControl *) noConstraint,hAxizOnly,vAxisOnly, (* Messages to control definition function *) drawCntl,testCnt,calcCRgns,initCntl,dispCntl,posCntl, thumbCntl,dragCntl,autoTrack, (*TYPE*) ControlRecord,ControlPtr,ControlHandle, (*PROC*) (* Init and Alloc *) NewControl,GetNewControl,DisposeControl,KillControls, (* Control Display *) SetCTitle,GetCTitle,HideControl,ShowControl,DrawControls,HiliteControl, (* Mouse Location *) TestControl,FindControl,TrackControl,TrackProcA,TrackProcB, (* Control Movement and Sizing *) MoveControl,DragControl,SizeControl, (* Control Setting and Range *) SetCtlValue,GetCtlValue,SetCtlMin,GetCtlMin,SetCtlMax,GetCtlMax, (* Miscellaneous Utilities *) SetCRefCon,GetCRefCon,SetCtlAction,GetCtlAction; CONST pushButProc = 0; (* simple button *) checkBoxProc = 1; (* check box *) radioButProc = 2; (* radio button *) useWFont = 8; (* add to above to use window's font *) scrollBarProc = 16; (* scroll bar *) (* Part codes *) inButton = 10; (* simple button *) inCheckBox = 11; (* check box or radio button *) inUpButton = 20; (* up arrow of a scroll bar *) inDownButton = 21; (* down arrow of a scroll bar *) inPageUp = 22; (* "page up" region of a scroll bar *) inPageDown = 23; (* "page down" region of a scroll bar *) inThumb = 129; (* thumb of a scroll bar *) (* Axis constraints for DragControl *) noConstraint = 0; (* no constraint *) hAxizOnly = 1; (* horizontal axiz only *) vAxisOnly = 2; (* vertical axis only *) (* Messages to control definition function *) drawCntl = 0; (* draw the control (of control part)*) testCnt = 1; (* test where mouse button was pressed *) calcCRgns = 2; (* calculate control's region (or indicator's) *) initCntl = 3; (* do any additional control initialization *) dispCntl = 4; (* take any additional disposal actions *) posCntl = 5; (* reposition control's indicator and update it *) thumbCntl = 6; (* calculate parameters for dragging indicator *) dragCntl = 7; (* drag control (or its indicator) *) autoTrack = 8; (* execute control's action procedure *) TYPE ControlHandle = POINTER TO ControlPtr; ControlPtr = POINTER TO ControlRecord; ControlRecord = RECORD nextContrl: ControlHandle; (* next control *) controlOwner: WindowPtr; contrlRect: Rect; contrlVis: BOOLEAN; contrlHilite: BOOLEAN; contrlValue: INTEGER; contrlMin: INTEGER; contrlMax: INTEGER; contrlDefProc: Handle; contrlData: Handle; contrlAction: ADDRESS; contrlRfCon: LONGINT; ContrlTitle: ARRAY [0..255] OF CHAR; END; (* Init and Alloc *) PROCEDURE NewControl(Wind: WindowPtr; bounds: Rect; VAR title: ARRAY OF CHAR; visible: BOOLEAN; value: INTEGER; min,max: INTEGER; procID: INTEGER; refCon: LONGINT): ControlHandle; PROCEDURE GetNewControl (controlID:INTEGER;wind:WindowPtr):ControlHandle; PROCEDURE DisposeControl (theControl:ControlHandle); PROCEDURE KillControls (wind:WindowPtr); (* Control Display *) PROCEDURE SetCTitle (theControl:ControlHandle;VAR title:ARRAY OF CHAR); PROCEDURE GetCTitle (theControl:ControlHandle;VAR title:ARRAY OF CHAR); PROCEDURE HideControl (theControl:ControlHandle); PROCEDURE ShowControl (theControl:ControlHandle); PROCEDURE DrawControls (theWindow:WindowPtr); PROCEDURE HiliteControl (theControl:ControlHandle;hiliteState:INTEGER); (* Mouse Location *) PROCEDURE TestControl (theControl: ControlHandle;thePoint:Point):INTEGER; PROCEDURE FindControl (thePoint:Point; theWindow: WindowPtr; VAR whichControl: ControlHandle):INTEGER; PROCEDURE TrackControl (theControl: ControlHandle; startPt:Point; actionProc: ADDRESS):INTEGER; PROCEDURE TrackProcA(p:PROC):ADDRESS; TYPE PROCHI = PROCEDURE (ControlHandle,INTEGER); PROCEDURE TrackProcB(c:PROCHI):ADDRESS; (* Control Movement and Sizing *) PROCEDURE MoveControl (theControl: ControlHandle; h,v: INTEGER); PROCEDURE DragControl (theControl: ControlHandle; ptartPt:Point; limitRect,slopRect: Rect; axis: INTEGER); PROCEDURE SizeControl (theControl: ControlHandle; w,h: INTEGER); (* Control Setting and Range *) PROCEDURE SetCtlValue (theControl: ControlHandle; theValue: INTEGER); PROCEDURE GetCtlValue (theControl: ControlHandle):INTEGER; PROCEDURE SetCtlMin (theControl: ControlHandle;minValue:INTEGER); PROCEDURE GetCtlMin (theControl: ControlHandle):INTEGER; PROCEDURE SetCtlMax (theControl: ControlHandle; maxValue:INTEGER); PROCEDURE GetCtlMax (theControl: ControlHandle):INTEGER; (* Miscellaneous Utilities *) PROCEDURE SetCRefCon (theControl: ControlHandle; data: LONGINT); PROCEDURE GetCRefCon (theControl: ControlHandle):LONGINT; PROCEDURE SetCtlAction (theControl: ControlHandle;actionProc:ADDRESS); PROCEDURE GetCtlAction (theControl: ControlHandle):ADDRESS; END ControlManager. !Funky!Stuff! echo x - Conversions.DEF cat >Conversions.DEF <<'!Funky!Stuff!' DEFINITION MODULE Conversions; FROM SYSTEM IMPORT WORD; EXPORT QUALIFIED IntToStr,StrToInt,CardToStr,StrToCard,HexToStr, StrToHex,OctToStr,StrToOct; PROCEDURE IntToStr(i : INTEGER;VAR s : ARRAY OF CHAR; p : CARDINAL):BOOLEAN; PROCEDURE StrToInt(VAR s : ARRAY OF CHAR; VAR i : INTEGER):BOOLEAN; PROCEDURE CardToStr(c:CARDINAL; VAR s:ARRAY OF CHAR; p : CARDINAL):BOOLEAN; PROCEDURE StrToCard(VAR s:ARRAY OF CHAR; VAR c:CARDINAL):BOOLEAN; PROCEDURE HexToStr(w:WORD;VAR s:ARRAY OF CHAR; p : CARDINAL):BOOLEAN; PROCEDURE StrToHex(VAR s:ARRAY OF CHAR;VAR w:WORD):BOOLEAN; PROCEDURE OctToStr(w:WORD;VAR s:ARRAY OF CHAR; p : CARDINAL):BOOLEAN; PROCEDURE StrToOct(VAR s:ARRAY OF CHAR;VAR w:WORD):BOOLEAN; END Conversions. !Funky!Stuff! echo x - Cursors.DEF cat >Cursors.DEF <<'!Funky!Stuff!' DEFINITION MODULE Cursors; FROM QuickDraw IMPORT Point,Rect,Bits16,Cursor; EXPORT QUALIFIED (*CONST*) iBeamCursor,crossCursor,plusCursor,watchCursor, (*TYPE*) CursPtr,CursHandle, (*PROCS*) GetCursor,InitCursor,SetCursor,HideCursor, ShowCursor,ObscureCursor,ShieldCursor; CONST (*Resource IDs of standard cursors *) iBeamCursor = 1; crossCursor = 2; plusCursor = 3; watchCursor = 4; TYPE CursPtr = POINTER TO Cursor; CursHandle = POINTER TO CursPtr; (* Cursor Routines *) PROCEDURE GetCursor(cursorID:INTEGER):CursHandle; PROCEDURE InitCursor; PROCEDURE SetCursor(VAR crsr: Cursor); PROCEDURE HideCursor; PROCEDURE ShowCursor; PROCEDURE ObscureCursor; PROCEDURE ShieldCursor(shieldRect:Rect;offsetPt:Point); END Cursors. !Funky!Stuff! echo x - DeskManager.DEF cat >DeskManager.DEF <<'!Funky!Stuff!' DEFINITION MODULE DeskManager; FROM MacSYSTEM IMPORT LONGINT; FROM EventManager IMPORT EventRecord; FROM WindowManager IMPORT WindowPtr; EXPORT QUALIFIED OpenDeskAcc,CloseDeskAcc, SystemClick,SystemEdit,SystemTask,SystemEvent,SystemMenu; PROCEDURE OpenDeskAcc(VAR theAcc:ARRAY OF CHAR):INTEGER; PROCEDURE CloseDeskAcc(refNum:INTEGER); PROCEDURE SystemClick(VAR theEvent:EventRecord;theWindow:WindowPtr); PROCEDURE SystemEdit(editCmd:INTEGER):BOOLEAN; PROCEDURE SystemTask; PROCEDURE SystemEvent(VAR theEvent:EventRecord):BOOLEAN; PROCEDURE SystemMenu(menuResult:LONGINT); END DeskManager. !Funky!Stuff! echo x - DialogManager.DEF cat >DialogManager.DEF <<'!Funky!Stuff!' DEFINITION MODULE DialogManager; FROM QuickDraw IMPORT Rect; FROM MacSYSTEM IMPORT Handle, LONGINT, Ptr; FROM WindowManager IMPORT WindowPtr, WindowRecord; FROM TextEdit IMPORT TEHandle; FROM EventManager IMPORT EventRecord; FROM SYSTEM IMPORT ADDRESS; EXPORT QUALIFIED (*constants*) ctrlItem,btnCtrl,chkCtrl,radCtrl,resCtrl,statText,editText,iconItem, picItem,userItem,itemDisable, ok,cancel, stopIcon,noteIcon,cautionIcon, (*types*) DialogPtr,DialogPeek,DialogRecord, DialogTHndl,DialogTPtr,DialogTemplate, AlertTHndl,AlertTPtr,AlertTemplate, StageList, FilterProc,ItemProc,SoundProc, (* Variables *) ResumeProc,DAStrings,DABeeper,DlgFont,ACount,ANumber, (*procedures*) UseFilterProc,NoFilterProc,UseSoundProc, InitDialogs,ErrorSound,SetDAFont, NewDialog,GetNewDialog,CloseDialog,DisposDialog,CouldDialog,FreeDialog, ModalDialog,IsDialogEvent,DialogSelect, DlgCut,DlgCopy,DlgPaste,DlgDelete,DrawDialog, Alert,StopAlert,NoteAlert,CautionAlert,CouldAlert,FreeAlert, ParamText,GetDItem,SetDItem,GetIText,SetIText,SelIText, GetAlrtStage,ResetAlrtStage; CONST (* item types *) ctrlItem = 4; (* add to following four constants *) btnCtrl = 0; chkCtrl = 1; radCtrl = 2; resCtrl = 3; statText = 8; editText = 16; iconItem = 32; picItem = 64; itemDisable = 128; userItem = 0; (* Item numbers of OK and Cancel buttons *) ok = 1; cancel = 2; (* Resource IDs of alert icons *) stopIcon = 0; noteIcon = 1; cautionIcon = 2; TYPE DialogPtr = WindowPtr; DialogPeek = POINTER TO DialogRecord; DialogRecord = RECORD window: WindowRecord; items: Handle; textH: TEHandle; editField: INTEGER; editOpen: INTEGER; aDefItem: INTEGER; END; DialogTHndl = POINTER TO DialogTPtr; DialogTPtr = POINTER TO DialogTemplate; DialogTemplate = RECORD boundsRect: Rect; procID: BOOLEAN; visible: BOOLEAN; filler1: BOOLEAN; goAwayFlag: BOOLEAN; filler2: BOOLEAN; refCon: LONGINT; itemsID: INTEGER; title: ARRAY [0..255] OF CHAR; END; StageList = BITSET; AlertTHndl = POINTER TO AlertTPtr; AlertTPtr = POINTER TO AlertTemplate; AlertTemplate = RECORD boundsRect: Rect; itemsID: INTEGER; stages: StageList; END; (* filterproc function for modal dialogs and alerts *) FilterProc = PROCEDURE(DialogPtr,VAR EventRecord,VAR INTEGER):BOOLEAN; (* useritem procedure *) ItemProc = PROCEDURE(WindowPtr,INTEGER); (* sound procedure *) SoundProc = PROCEDURE(INTEGER); VAR ResumeProc[0A8CH] : ADDRESS; DAStrings[0AA0H] : ARRAY [0..3] OF ADDRESS; DABeeper[0A9CH] : ADDRESS; DlgFont[0AFAH] : INTEGER; ACount[0A9AH] : INTEGER; ANumber : INTEGER; (* initialization *) PROCEDURE InitDialogs (restartProc: ADDRESS); PROCEDURE UseSoundProc(MySound: SoundProc):ADDRESS; PROCEDURE ErrorSound (MySound: ADDRESS); PROCEDURE SetDAFont (fontNum: INTEGER); (* Creating and disposing OF dialogs *) PROCEDURE NewDialog(dStorage: ADDRESS; boundsRect:Rect; VAR title:ARRAY OF CHAR;visible: BOOLEAN;procID: INTEGER; behind: WindowPtr;goAwayFlag: BOOLEAN; refCon: LONGINT; items: Handle) : DialogPtr; PROCEDURE GetNewDialog(dialogID: INTEGER; dStorage: ADDRESS; behind: WindowPtr) : DialogPtr; PROCEDURE CloseDialog(theDialog: DialogPtr); PROCEDURE DisposDialog(theDialog: DialogPtr); PROCEDURE CouldDialog(dialogID: INTEGER); PROCEDURE FreeDialog(dialogID: INTEGER); (* Handling Dialog events *) PROCEDURE NoFilterProc():ADDRESS; PROCEDURE UseFilterProc(myFilter:FilterProc):ADDRESS; PROCEDURE ModalDialog(myFilter:ADDRESS; VAR itemHit: INTEGER); PROCEDURE IsDialogEvent(VAR theEvent: EventRecord) : BOOLEAN; PROCEDURE DialogSelect(VAR theEvent: EventRecord; VAR theDialog: DialogPtr; VAR itemHit: INTEGER) : BOOLEAN; PROCEDURE DlgCut(theDialog: DialogPtr); PROCEDURE DlgCopy(theDialog: DialogPtr); PROCEDURE DlgPaste(theDialog: DialogPtr); PROCEDURE DlgDelete(theDialog: DialogPtr); PROCEDURE DrawDialog (theDialog: DialogPtr); (* invoking alerts *) PROCEDURE Alert(alertID: INTEGER; myFilter:ADDRESS): INTEGER; PROCEDURE StopAlert(alertID: INTEGER; myFilter:ADDRESS): INTEGER; PROCEDURE NoteAlert(alertID: INTEGER; myFilter:ADDRESS): INTEGER; PROCEDURE CautionAlert(alertID: INTEGER; myFilter:ADDRESS): INTEGER; PROCEDURE CouldAlert(alertID: INTEGER); PROCEDURE FreeAlert(alertID: INTEGER); (* manipulation items in dialog and alerts *) PROCEDURE ParamText(VAR param0,param1,param2,param3: ARRAY OF CHAR); PROCEDURE GetDItem(theDialog: DialogPtr; itemNo: INTEGER; VAR type: INTEGER; VAR item: Handle; VAR box: Rect); PROCEDURE SetDItem (theDialog: DialogPtr; itemNo: INTEGER; type: INTEGER; item: Handle; VAR box: Rect); PROCEDURE GetIText(item: Handle; VAR text: ARRAY OF CHAR); PROCEDURE SetIText(item: Handle; VAR text: ARRAY OF CHAR); PROCEDURE SelIText(theDialog: DialogPtr; itemNo: INTEGER; strtSel,endSel: INTEGER); PROCEDURE GetAlrtStage(): INTEGER; PROCEDURE ResetAlrtStage; END DialogManager. !Funky!Stuff! echo x - EventManager.DEF cat >EventManager.DEF <<'!Funky!Stuff!' DEFINITION MODULE EventManager; (* MacIntosh ToolBox Event Manager Operations *) (* Some Items still not present * GetDblTime, GetCaretTime, and GetEvQHdr *) FROM MacSYSTEM IMPORT LONGINT,OSErr; FROM QuickDraw IMPORT Point; FROM SYSTEM IMPORT ADDRESS,WORD; EXPORT QUALIFIED (*Const*) nullEvent,mouseDown,mouseUp,keyDown,keyUp,autoKey, updateEvt,diskEvt,activateEvt,abortEvt,networkEvt,driverEvt, app1Evt,app2Evt,app3Evt,app4Evt, charCodeMask,keyCodeMask, nullMask,mDownMask,mUpMask,keyDownMask,keyUpMask,autoKeyMask, updateMask,diskMask,activMask,abortMask,networkMask,driverMask, app1Mask,app2Mask,app3Mask,app4Mask,everyEvent, activeFlag,btnState,cmdKey,shiftKey,alphaLock,optionKey,changeFlag, activeFlagBit,btnStateBit,cmdKeyBit,shiftKeyBit,alphaLockBit, optionKeyBit,changeFlagBit, evtNotEnb, (*Types*) EventRecord,KeyMap, (*Toolbox Procs*) EventAvail,GetNextEvent,StillDown,WaitMouseUp,GetMouse,TickCount, Button,GetKeys, (*OS Procs*) PostEvent,FlushEvents,SetEventMask,OSEventAvail,GetOSEvent; CONST (* Event Codes *) nullEvent = 0; mouseDown = 1; mouseUp = 2; keyDown = 3; keyUp = 4; autoKey = 5; updateEvt = 6; diskEvt = 7; activateEvt = 8; abortEvt = 9; networkEvt = 10; driverEvt = 11; app1Evt = 12; app2Evt = 13; app3Evt = 14; app4Evt = 15; (* Masks for accessing keyboard event message *) keyCodeMask = 00000FF00H; charCodeMask= 0000000FFH; (* Masks for forming event mask *) nullMask = 00001H; mDownMask = 00002H; mUpMask = 00004H; keyDownMask = 00008H; keyUpMask = 00010H; autoKeyMask = 00020H; updateMask = 00040H; diskMask = 00080H; activMask = 00100H; abortMask = 00200H; networkMask = 00400H; driverMask = 00800H; app1Mask = 01000H; app2Mask = 02000H; app3Mask = 04000H; app4Mask = 08000H; everyEvent = 0FFFFH; (* modifiers *) optionKey = 00800H; (* Bit 3 of high byte *) alphaLock = 00400H; (* Bit 2 *) shiftKey = 00200H; (* Bit 1 *) cmdKey = 00100H; (* Bit 0 *) btnState = 00080H; (* Bit 7 of low byte is mouse button state *) activeFlag = 00001H; (* bit 0 of modifiers for activate event *) changeFlag = 00002H; (* bit 1 of modifiers for activate event *) optionKeyBit = 11; alphaLockBit = 10; shiftKeyBit = 9; cmdKeyBit = 8; btnStateBit = 7; changeFlagBit = 1; activeFlagBit = 0; (* Result codes returned by PostEvent *) evtNotEnb = 1; (* event type not designated in system event mask *) TYPE EventRecord = RECORD what: INTEGER; CASE CARDINAL OF 0: message: LONGINT | 1: Unused: CARDINAL; KeyCode: CHAR; CharacterCode: CHAR | 2: Window: ADDRESS | 3: Code: INTEGER; Drive: INTEGER END (*CASE*); when: LONGINT; where: Point; CASE BOOLEAN OF TRUE: modifiers: CARDINAL; | FALSE: modifierSet: BITSET END (* modifier word *) END; KeyMap = ARRAY[0..7] OF BITSET;(* PACKED ARRAY [1..128] OF BOOLEAN *) PROCEDURE EventAvail(mask:WORD; VAR theEvent: EventRecord): BOOLEAN; PROCEDURE GetNextEvent(mask:WORD; VAR theEvent: EventRecord): BOOLEAN; PROCEDURE StillDown ():BOOLEAN; PROCEDURE WaitMouseUp ():BOOLEAN; PROCEDURE GetMouse (VAR pt: Point); PROCEDURE TickCount ():LONGINT; PROCEDURE Button (): BOOLEAN; PROCEDURE GetKeys(VAR k: KeyMap); PROCEDURE PostEvent (eventNum: WORD; eventMsg: LONGINT): OSErr; PROCEDURE FlushEvents (whichMask,stopMask: WORD); PROCEDURE SetEventMask (theMask: WORD); PROCEDURE GetOSEvent (mask: WORD; VAR theEvent: EventRecord): BOOLEAN; PROCEDURE OSEventAvail (mask: WORD; VAR theEvent: EventRecord): BOOLEAN; END EventManager. !Funky!Stuff! echo x - FileManager.DEF cat >FileManager.DEF <<'!Funky!Stuff!' DEFINITION MODULE FileManager; FROM SYSTEM IMPORT ADDRESS,WORD; FROM MacSYSTEM IMPORT LONGINT,StringPtr,OSErr; FROM QuickDraw IMPORT Point; FROM FileTypes IMPORT (*CONST*) fHasBundle,fInvisible,fTrash,fDesktop,fDisk, fsAtMark,fsFromStart,fsFromLEOF,fsFromMark, fsCurPerm,fsRdPerm,fsWrPerm,fsRdWrPerm, badMDBErr,bdNamErr,dirFulErr,dskFulErr,dupFNErr,eofErr, extFSErr,fBsyErr,fLckdErr,fnfErr,fnOpnErr,fsRnErr, ioErr,mFulErr,nsDrvErr,noMacDskErr,nsvErr, opWrErr,paramErr,permErr,posErr,rfNumErr,tmfoErr, volOffLinErr,volOnLinErr,vLckdErr,wrPermErr,wPrErr, (*TYPE*) OSType,FInfo,ParamBlkPtr,ParamBlkType,ParamBlockRec; EXPORT QUALIFIED (* Accessing Volumes *) GetVInfo,GetVol,SetVol,FlushVol,UnmountVol,Eject, (* Changine File Contents *) Create,FSOpen,FSRead,FSWrite,GetFPos,SetFPos, GetEOF,SetEOF,Allocate,FSClose, (* Changing Information About Files *) GetFInfo,SetFInfo,SetFLock,RstFLock,Rename,FSDelete; (* Accessing Volumes *) PROCEDURE GetVInfo(drvNum:INTEGER;volName:StringPtr; VAR vRefNum:INTEGER; VAR freeBytes:LONGINT):OSErr; PROCEDURE GetVol(volName:StringPtr;VAR vRefNum:INTEGER):OSErr; PROCEDURE SetVol(volName:StringPtr;vRefNum:INTEGER):OSErr; PROCEDURE FlushVol(volName:StringPtr;vRefNum:INTEGER):OSErr; PROCEDURE UnmountVol(volName:StringPtr;vRefNum:INTEGER):OSErr; PROCEDURE Eject(volName:StringPtr;vRefNum:INTEGER):OSErr; (* Changine File Contents *) PROCEDURE Create(VAR fileName:ARRAY OF CHAR;vRefNum:INTEGER; creator,filetype:OSType):OSErr; PROCEDURE FSOpen(VAR fileName:ARRAY OF CHAR;vRefNum:INTEGER; VAR refNum:INTEGER):OSErr; PROCEDURE FSRead(refNum:INTEGER;VAR count:LONGINT;buff:ADDRESS):OSErr; PROCEDURE FSWrite(ref:INTEGER;VAR count:LONGINT;buff:ADDRESS):OSErr; PROCEDURE GetFPos(refNum:INTEGER;VAR filePos:LONGINT):OSErr; PROCEDURE SetFPos(ref:INTEGER;posMode:INTEGER;posOff:LONGINT):OSErr; PROCEDURE GetEOF(ref:INTEGER;VAR logEOF:LONGINT):OSErr; PROCEDURE SetEOF(ref:INTEGER;logEOF:LONGINT):OSErr; PROCEDURE Allocate(ref:INTEGER;VAR count:LONGINT):OSErr; PROCEDURE FSClose(ref:INTEGER):OSErr; (* Changing Information About Files *) PROCEDURE GetFInfo(VAR file:ARRAY OF CHAR;vRef:INTEGER;VAR fndr:FInfo):OSErr; PROCEDURE SetFInfo(VAR file:ARRAY OF CHAR;vRef:INTEGER;fndrInfo:FInfo):OSErr; PROCEDURE SetFLock(VAR file:ARRAY OF CHAR;vRef:INTEGER):OSErr; PROCEDURE RstFLock(VAR file:ARRAY OF CHAR;vRef:INTEGER):OSErr; PROCEDURE Rename(VAR old:ARRAY OF CHAR;vRef:INTEGER;VAR new:ARRAY OF CHAR):OSErr; PROCEDURE FSDelete(VAR name:ARRAY OF CHAR;vRef:INTEGER):OSErr; END FileManager. !Funky!Stuff!
bobc@tikal.UUCP (Bob Campbell) (05/08/86)
# The rest of this file is a shell script which will extract: # FileTypes.DEF FontManager.DEF IUPackage.DEF InOut.DEF MacSYSTEM.DEF # MathLib0.DEF MathLib1.DEF echo x - FileTypes.DEF cat >FileTypes.DEF <<'!Funky!Stuff!' DEFINITION MODULE FileTypes; FROM SYSTEM IMPORT ADDRESS,WORD; FROM MacSYSTEM IMPORT LONGINT,StringPtr; FROM QuickDraw IMPORT Point; EXPORT QUALIFIED (*CONST*) fHasBundle,fInvisible,fTrash,fDesktop,fDisk, fsAtMark,fsFromStart,fsFromLEOF,fsFromMark, fsCurPerm,fsRdPerm,fsWrPerm,fsRdWrPerm, badMDBErr,bdNamErr,dirFulErr,dskFulErr,dupFNErr,eofErr, extFSErr,fBsyErr,fLckdErr,fnfErr,fnOpnErr,fsRnErr, ioErr,mFulErr,nsDrvErr,noMacDskErr,nsvErr, opWrErr,paramErr,permErr,posErr,rfNumErr,tmfoErr, volOffLinErr,volOnLinErr,vLckdErr,wrPermErr,wPrErr, (*TYPE*) OSType,FInfo,ParamBlkPtr,ParamBlkType,ParamBlockRec; CONST fHasBundle = 32; (* File has bundle *) fInvisible = 64; (* file's icon is invisible *) fTrash = -3; (* file is in trash window *) fDesktop = -2; (* file is on desktop *) fDisk = 0; (* file is in disk window *) (* Values for posMode and ioPosMode *) fsAtMark = 0; (* at current position of mark *) (* (posOff or ioPosOffset ignored) *) fsFromStart = 1; (* offset from beginning of file *) fsFromLEOF = 2; (* offset from logical end-of-file *) fsFromMark = 3; (* offset from current mark *) (* Values for requesting read/write access *) fsCurPerm = 0C; (* whatever is currently allowed *) fsRdPerm = 1C; (* read only *) fsWrPerm = 2C; (* write only *) fsRdWrPerm = 3C; (* request to read and write *) (* Result Codes *) badMDBErr = -60; (* Master Block Bad *) bdNamErr = -37; (* Bad file name or volume name *) dirFulErr = -33; (* File directory full *) dskFulErr = -34; (* All allocation blocks on volume are full *) dupFNErr = -48; (* file name already exists *) eofErr = -39; extFSErr = -58; (* External FS error, .... *) fBsyErr = -47; (* One or more files open? *) fLckdErr = -45; (* File is locked *) fnfErr = -43; (* File not found *) fnOpnErr = -38; (* File not open *) fsRnErr = -59; (* Problem during Rename *) ioErr = -36; (* Disk I/O error *) mFulErr = -41; (* System heap is full *) nsDrvErr = -56; (* Drive not in Drive Queue *) noMacDskErr = -57; (* Volume lacks Macintosh-format *) nsvErr = -35; (* Volume does not exist *) opWrErr = -49; (* Permissions only allow one access path *) paramErr = -50; (* No Default Volume *) permErr = -54; (* Permission disallowed *) posErr = -40; (* Attempt to position before start of file *) rfNumErr = -51; (* Nonexistent access path *) tmfoErr = -42; (* only 12 files can be open at one time *) volOffLinErr= -53; (* volume not on line *) volOnLinErr = -55; (* volume already on line *) vLckdErr = -46; (* volume is locked by a software flag *) wrPermErr = -61; (* writing not allowed *) wPrErr = -44; (* volume is locked by hardware *) TYPE OSErr = INTEGER; OSType = ARRAY [0..3] OF CHAR; FInfo = RECORD fdType: OSType; (* file type *) fdCreator: OSType; (* file's creator *) fdFlags: INTEGER;(* flags *) fdLocation: Point; (* file's location *) fdFldr: INTEGER;(* file's window *) END; ParamBlkPtr = POINTER TO ParamBlockRec; ParamBlkType = (ioParam,fileParam,volumeParam,cntrlParam); ParamBlockRec = RECORD qLink: ADDRESS; (* next queue entry *) qType: INTEGER; (* queue type *) ioTrap: INTEGER; (* routine trap *) ioCmdAddr: ADDRESS; (* routine address *) ioCompletion: ADDRESS; (* completion routine *) ioResult: OSErr; (* result code *) ioNamePtr: POINTER TO ARRAY [0..255] OF CHAR; ioVRefNum: INTEGER; CASE ParamBlkType OF ioParam: ioRefNum: INTEGER; (* Path reference number *) ioVersNum: CHAR; (* version number *) ioPermssn: CHAR; (* read/write permission *) ioMisc: ADDRESS; (* miscellaneous *) ioBuffer: ADDRESS; (* data buffer *) ioReqCount: LONGINT; (* requested number of bytes *) ioActCount: LONGINT; (* actual number of bytes *) ioPosMode: INTEGER; (* newlint character any type of * positioning operation *) ioPosOffset:LONGINT; (* size of positioning offset *) | fileParam: ioFRefNum: INTEGER; (* path reference number *) ioFVersNum: CHAR; (* version Number *) filler1: CHAR; (* pad *) ioFDirIndex: INTEGER; (* File Number *) ioFlAttrib: CHAR; (* File Attributes *) ioFlVersNum: CHAR; (* version number *) ioFlFndrInfo: FInfo; (* finder information *) ioFlNum: LONGINT; (* file number *) ioFlStBlk: INTEGER; (* first block of data fork *) ioFlLgLen: LONGINT; (* Logical end-of-file data fork *) ioFlPyLen: LONGINT; (* physical end-of-file data fork *) ioFlRStBlk: INTEGER; (* first block of resource fork *) ioFlRLgLen: LONGINT; (* logical EOF resource fork *) ioFlRPyLen: LONGINT; (* physical EOF resource fork *) ioFlCrDat: LONGINT; (* date and time of creation *) ioFlMdDat: LONGINT; (* date and time of modification *) | volumeParam: filler2: LONGINT; (* not used *) ioVolIndex: INTEGER; (* volume index *) ioVCrDate: LONGINT; (* time of initialization *) ioVLsBkUp: LONGINT; (* time of last back up *) ioVAtrb: INTEGER; (* bit 15=1 if volume locked *) ioVNmFls: INTEGER; (* number of files in directory *) ioVDirSt: INTEGER; (* first block of file directory *) ioVBlLn: INTEGER; (* number of blocks in directory *) ioVNmAlBlks: INTEGER; (* number of blocks on volume *) ioVAlBlkSiz: LONGINT; (* number of bytes per block *) ioVClpSiz: LONGINT; (* number of bytes to allocate *) ioAlBlSt: INTEGER; (* first block in volume block map*) ioVNxtFNum: LONGINT; (* next free file number *) ioVFrBlk: INTEGER; END (*CASE*) END (*RECORD*); (* NOT USED * VCB = RECORD * qLink: QElemPtr; (* next queue entry *) * qType: INTEGER; (* not used *) * vcbFlags: INTEGER; (* bit 15=1 if dirty *) * vcbSigWord: INTEGER; (* always $D2D7 *) * vcbCrDate: LONGINT; (* date volume was initialized *) * vcbLsBkUp: LONGINT; (* date volume was last backed up *) * vcbAtrb: INTEGER; (* volume attributes *) * vcbNmFls: INTEGER; (* number of fines in directory *) * vcbDirSt: INTEGER; (* directory's first block *) * vcbBlLn: INTEGER; (* length of file directory *) * vcbNmBlks: INTEGER; (* number of allocation blocks *) * vcbAlBlkSize:LONGINT; (* size of allocation blocks *) * vcbClpSiz: LONGINT; (* number of bytes to allocate *) * vcbAlBlSt: INTEGER; (* first block in block map *) * vcbNxtFNum: LONGINT; (* next unused file number *) * vcbFreeBks: INTEGER; (* number of unused blocks *) * vcbVN: ARRAY [0..27] OF CHAR; (* vol Name *) * vcbDrvNum: INTEGER; * vcbDRefNum: INTEGER; (* Driver reference number *) * vcbFSID: INTEGER; (* file system identifier *) * vcbVRefNum: INTEGER; (* volume reference number *) * vcbMAdr: ADDRESS; (* location of block map *) * vcbBufAdr: ADDRESS; (* location of volume buffer *) * vcbMLen: INTEGER; (* number of bytes in block map *) * vcbDirIndex:INTEGER; (* internal use *) * vcbDirBlk: INTEGER; (* internal use *) * END; * * DrvQEl = RECORD * (* flags: LONGINT *) * qLink: QElemPtr; * qType: INTEGER; * dQDrive:INTEGER; * dQRefNum:INTEGER; * dQFSID: INTEGER; * dQDrvSize:INTEGER * END; * *VAR *(*FSQHdr EQU $360; file system queue header (10 bytes)*) * FSQHdr[0360H]:QHdr; *(*VCBQHdr EQU $356; VCB queue header*) * VCBQHdr[0356H]:QHdr; *(*DrvQHdr EQU $308; queue header of drives in system [10 bytes]*) * DrvQHdr[0308H]:QHdr; *) END FileTypes. !Funky!Stuff! echo x - FontManager.DEF cat >FontManager.DEF <<'!Funky!Stuff!' DEFINITION MODULE FontManager; FROM MacSYSTEM IMPORT LONGINT,BYTE,Handle; FROM SYSTEM IMPORT ADDRESS,WORD; FROM QuickDraw IMPORT Style,Point; (* * This is the Font Manager from Inside Macintosh(TM) Volume I * * Because of problems with the extreme size of QuickDraw, the font * routine GetFontInfo, and the record FontInfo are in here not * in QuickDraw. *) EXPORT QUALIFIED (*CONST*) systemFont,applFont,newYork,geneva,monaco,venice,london, athens,sanFran,toronto,cairo,losAngeles,times,helvetica,courier, symbol,taliesin, commandMark,checkMark,diamondMark,appleMark, propFont,fixedFont,fontWid, (*TYPE*) FMInput,FMOutPtr,FMOutput,FontRec,FontInfo, (*PROC*) GetFontName,GetFNum,RealFont,GetFontInfo,SetFontLock,FMSwapFont; CONST systemFont = 0; applFont = 1; newYork = 2; geneva = 3; monaco = 4; venice = 5; london = 6; athens = 7; sanFran = 8; toronto = 9; cairo = 11; losAngeles = 12; times = 20; helvetica = 21; courier = 22; symbol = 23; taliesin = 24; (* special characters *) commandMark = 21C; checkMark = 22C; diamondMark = 23C; appleMark = 24C; propFont = 09000H; (* proportional font *) fixedFont = 0B000H; (* fixed-width font *) fontWid = 0ACB0H; (* font width table *) TYPE FMInput = RECORD family: INTEGER; (* font number *) size: INTEGER; (* font size *) face: Style; (* character style *) needBits: BOOLEAN; (* TRUE if drawing *) device: INTEGER; (* device-specific information *) numer: Point; (* numerators of scaling factors *) denom: Point; (* denominators of scaling factors *) END; FMOutPtr = POINTER TO FMOutput; FMOutput = RECORD errNum: INTEGER; (* not used *) fontHandle: Handle; (* handle to font record *) bold: BYTE; (* bold factor *) italic: BYTE; (* italic factor *) ulOffset: BYTE; (* underline shadow *) ulThick: BYTE; (* underline thickness *) shadow: BYTE; (* shadow factor *) extra: BYTE; (* width of style *) ascent: BYTE; (* ascent *) descent: BYTE; (* descent *) widMax: BYTE; (* width of style *) leading: BYTE; (* leading *) unused: BYTE; (* not used *) numer: Point; (* numerators of scaling factors *) denom: Point; (* denominators of scaling factors *) END; FontRec = RECORD fontType: INTEGER; (* proportional or fixed width *) firstChar: INTEGER; (* code of first defined char *) lastChar: INTEGER; (* code of last defined char *) widMax: INTEGER; (* maximum character width *) kernMax: INTEGER; (* negative of maximum character kern *) nDescent: INTEGER; (* negative of descent in pixels *) fRectWidth: INTEGER; (* width of font rectangle *) fRectHeight: INTEGER; (* height of font rectangle *) owTLoc: INTEGER; (* Offset to owTable in words *) ascent: INTEGER; (* Ascent in pixels *) descent: INTEGER; (* Descent in pixels *) leading: INTEGER; (* Leading in pixels *) rowWords: INTEGER; (* Row width of bitImage in Words *) (* bitImage: ARRAY [1..rowWords,1..chHeight] OF INTEGER; *) (* locTable: ARRAY [firstChar..lastChar+2] OF INTEGER; *) (* owTable: ARRAY [firstChar..lastChar+2] OF INTEGER; *) END; FontInfo = RECORD ascent: INTEGER; descent: INTEGER; widMax: INTEGER; leading: INTEGER; END; PROCEDURE GetFontName(fontNumber:INTEGER;VAR name:ARRAY OF CHAR); PROCEDURE GetFNum(VAR name:ARRAY OF CHAR;VAR fontNumber:INTEGER); PROCEDURE RealFont(fontNumber:INTEGER;pointSize:INTEGER):BOOLEAN; PROCEDURE GetFontInfo(VAR info:FontInfo); PROCEDURE SetFontLock(lock:BOOLEAN); PROCEDURE FMSwapFont (inRec: FMInput) : FMOutPtr; END FontManager. !Funky!Stuff! echo x - IUPackage.DEF cat >IUPackage.DEF <<'!Funky!Stuff!' DEFINITION MODULE IUPackage; FROM SYSTEM IMPORT ADDRESS; FROM MacSYSTEM IMPORT LONGINT,Handle; EXPORT QUALIFIED (*CONST*) currSymLead,currNegSym,currTrailingZ,currLeadingZ, mdy,dmy,ymd, dayLeadingZ,mntLeadingZ,century, secLeadingZ,minLeadingZ,hrLeadingZ, verUS,verFrance,verBritain,verGermany,verItaly, (*TYPE*) Intl0Hndl,Intl0Ptr,Intl0Rec, Intl1Hndl,Intl1Ptr,Intl1Rec, DateForm, (* Routines *) IUDateString,IUDatePString,IUTimeString,IUTimePString, IUMetric,IUGetIntl,IUSetIntl,IUCompString,IUMagString, IUEqualString,IUMagIDString; CONST (* Masks for currency format *) currSymLead = 16; (* set if currency symbol leads *) currNegSym = 32; (* set if minus sign for negative *) currTrailingZ = 64; (* set if trailing decimal zeroes *) currLeadingZ = 128; (* set if leading integer zero *) (* order of short date elements *) mdy = 0; (* Month Day Year *) dmy = 1; (* day month year *) ymd = 2; (* year month day *) (* masks for short date format *) dayLeadingZ = 32; (* set if leading zero for day *) mntLeadingZ = 64; (* set if leading zero for month *) century = 128; (* set if century included *) (* Masks for time format *) secLeadingZ = 32; (* set if leading zero for seconds *) minLeadingZ = 64; (* set if leading zero for minutes *) hrLeadingZ = 128; (* set if leading zero for hours *) (* High-order byte of version information *) verUS = 0; verFrance = 1; verBritain = 2; verGermany = 3; verItaly = 4; TYPE Intl0Hndl = POINTER TO Intl0Ptr; Intl0Ptr = POINTER TO Intl0Rec; Intl0Rec = RECORD decimalPt: CHAR; (* decimal point character *) thousSep: CHAR; (* thousands separator *) listSep: CHAR; (* list separator *) currSym1: CHAR; (* currency symbol *) currSym2: CHAR; currSym3: CHAR; currFmt: CHAR; (* currency format *) dateOrder: CHAR; (* order of short date elements *) shortDateFmt: CHAR; (* short date format *) dateSep: CHAR; (* date separator *) timeCycle: CHAR; (* 0 if 24-hour, 255 if 12-hour *) timeFmt: CHAR; (* time format *) mornStr: ARRAY [1..4] OF CHAR; (* trailing string for first 12-hour cycle *) eveStr: ARRAY [1..4] OF CHAR; (* trailing string for second 12-hour cycle *) timeSep: CHAR; (* time separator *) time1Suff: CHAR; (* trailing string for 24-hour cycle *) time2Suff: CHAR; time3Suff: CHAR; time4Suff: CHAR; time5Suff: CHAR; time6Suff: CHAR; time7Suff: CHAR; time8Suff: CHAR; metricSys: CHAR; (* 255 if metric, 0 if not *) intl0Vers: INTEGER;(* version information *) END; Intl1Hndl = POINTER TO Intl1Ptr; Intl1Ptr = POINTER TO Intl1Rec; Intl1Rec = RECORD days: ARRAY [1..7] OF ARRAY [0..15] OF CHAR; (* Day Names *) months: ARRAY [1..12] OF ARRAY [0..15] OF CHAR; (* month names *) suppressDay: CHAR; (* 0 for day name, 255 for none *) longDateFmt: CHAR; (* order of long date elements *) dayleading0: CHAR; (* 255 for leading 0 in day number *) abbrLen: CHAR; (* length for abbreviating names *) st0: ARRAY [1..4] OF CHAR; (* strings *) st1: ARRAY [1..4] OF CHAR; (* for *) st2: ARRAY [1..4] OF CHAR; (* long *) st3: ARRAY [1..4] OF CHAR; (* date *) st4: ARRAY [1..4] OF CHAR; (* format *) intl1Vers: INTEGER; (* version information *) localRtn: INTEGER; (* routine for localizing string *) (* comparision; actually may be longer than one integer *) END; DateForm = (shortDate, longDate, abbbrevDate,DFPad3,DFPad4, DFPad5,DFPad6,DFPad7,DFPad8); (* force to be WORD size *) (* Routines *) PROCEDURE IUDateString (dateTime:LONGINT;form:DateForm; VAR result:ARRAY OF CHAR); PROCEDURE IUDatePString (dateTime:LONGINT;form:DateForm; VAR result:ARRAY OF CHAR;intlParam:Handle); PROCEDURE IUTimeString(dateTime:LONGINT;wantSeconds:BOOLEAN; VAR result:ARRAY OF CHAR); PROCEDURE IUTimePString(dateTime:LONGINT;wantSeconds:BOOLEAN; VAR result:ARRAY OF CHAR; intlParam:Handle); PROCEDURE IUMetric():BOOLEAN; PROCEDURE IUGetIntl(theID:INTEGER):Handle; PROCEDURE IUSetIntl(refNum:INTEGER; theID:INTEGER;intlParam:Handle); PROCEDURE IUCompString(VAR aStr,bStr:ARRAY OF CHAR):INTEGER; (* Pascal Only *) PROCEDURE IUMagString(aPtr,bPtr:ADDRESS;aLen,bLen:INTEGER):INTEGER; PROCEDURE IUEqualString(VAR aStr,bStr:ARRAY OF CHAR):INTEGER; (* Pascal Only *) PROCEDURE IUMagIDString(aPtr,bPtr:ADDRESS;aLen,bLen:INTEGER):INTEGER; END IUPackage. !Funky!Stuff! echo x - InOut.DEF cat >InOut.DEF <<'!Funky!Stuff!' DEFINITION MODULE InOut; (* * copied from the book "PROGRAMMING IN * MODULA-2" by Miklaus Wirth Edited by * David Gries pages 103 and 104. *) FROM SYSTEM IMPORT WORD; EXPORT QUALIFIED EOL, Done, termCH, OpenInput, OpenOutput, CloseInput, CloseOutput, Read, ReadString, ReadInt, ReadCard, Write, WriteLn, WriteString, WriteInt, WriteCard, WriteOct,WriteHex; CONST EOL = 15C; (* SYSTEM DEPENDENT *) VAR Done: BOOLEAN; VAR termCH: CHAR; PROCEDURE OpenInput (VAR defext: ARRAY OF CHAR); (* request a file name and open input file "in". Done := "file was successfully opened". If open, subsequent input is read from this file. If name ends with ".", append extension defext*) (* This procedure will use the SFPackage on the Mac BC *) PROCEDURE OpenOutput (VAR defext: ARRAY OF CHAR); (* request a file name and open output file "out" Done := "file was successfully opened. If open, subsequent output is written on this file *) (* This procedure will also use the SFPackage on the Mac BC *) PROCEDURE CloseInput; (* closes input file; returns input to the terminal *) PROCEDURE CloseOutput; (* closes output file; returns output to terminal*) PROCEDURE Read (VAR ch:CHAR); (* Done := NOT in.eof *) (* if EOF then ch = 0C *) PROCEDURE ReadString (VAR s:ARRAY OF CHAR); (*read string, i.e. sequence of characters not containing blanks nor control characters; leading blanks are ignored. Input is terminated by any character <= " "; this character is assigned to termCH. DEL is used for backspacing when input from terminal*) (* I will make this a backspace for the Mac BC *) PROCEDURE ReadInt (VAR x:INTEGER); (* read strings and convert to integer. Syntax: integer = ["+"|"-"]digit{digit}. leading blanks are ignored. Done := "integer was read" *) PROCEDURE ReadCard (VAR x:CARDINAL); (*read string and convert to cardinal. Syntax: cardinal = digit {digit} Leading blanks are ignored. Done := "cardinal was read"*) PROCEDURE Write (ch:CHAR); PROCEDURE WriteLn; (*terminate line*) PROCEDURE WriteString (VAR s:ARRAY OF CHAR); PROCEDURE WriteInt (x: INTEGER; n: CARDINAL); (*write integer x with (at least) n characters on file "out". If n is greater than the number of digits needed, blanks are added preceding the number*) PROCEDURE WriteCard (x,n: CARDINAL); PROCEDURE WriteOct (x: WORD; n: CARDINAL); PROCEDURE WriteHex (x: WORD; n: CARDINAL); END InOut. !Funky!Stuff! echo x - MacSYSTEM.DEF cat >MacSYSTEM.DEF <<'!Funky!Stuff!' DEFINITION MODULE MacSYSTEM; FROM SYSTEM IMPORT WORD,ADDRESS; EXPORT QUALIFIED LONGINT,LONGCARD,DOUBLE,EXTENDED,COMP,BYTE, Fixed,Int64Bit,Ptr,Handle,Str255,StringPtr,StringHandle,OSErr,noErr; CONST noErr = 0; TYPE LONGINT = ADDRESS; LONGCARD = ADDRESS; DOUBLE = RECORD Long1:LONGCARD; Long2:LONGCARD; END; EXTENDED = ARRAY [0..4] OF CARDINAL; COMP = DOUBLE; BYTE = CHAR; Fixed = LONGINT; Int64Bit = RECORD hiLong: LONGINT; loLong: LONGINT; END; Ptr = ADDRESS; Handle = POINTER TO Ptr; Str255 = ARRAY [0..255] OF CHAR; StringPtr = POINTER TO Str255; StringHandle = POINTER TO StringPtr; OSErr = INTEGER; END MacSYSTEM. !Funky!Stuff! echo x - MathLib0.DEF cat >MathLib0.DEF <<'!Funky!Stuff!' DEFINITION MODULE MathLib0; (*Mathematical library 0 *) EXPORT QUALIFIED sqrt, sin, cos, arctan, exp, ln, real, entier; PROCEDURE sqrt (x: REAL) : REAL; PROCEDURE sin (x: REAL) : REAL; PROCEDURE cos (x: REAL) : REAL; PROCEDURE arctan (x: REAL) : REAL; PROCEDURE exp (x: REAL) : REAL; PROCEDURE ln (x: REAL) : REAL; PROCEDURE entier (x: REAL) : INTEGER; PROCEDURE real (x: INTEGER) : REAL; END MathLib0. !Funky!Stuff! echo x - MathLib1.DEF cat >MathLib1.DEF <<'!Funky!Stuff!' DEFINITION MODULE MathLib1; (* Math. library 1 *) (* additional mathematical functions*) (* M. Schneider 4. Juli 1983 *) EXPORT QUALIFIED exp2, log2, tan, random, setrandom, PI; PROCEDURE exp2 ( x: REAL ): REAL; PROCEDURE log2 ( x: REAL ): REAL; PROCEDURE tan ( x: REAL ): REAL; PROCEDURE random(): REAL; (* range: 0.0 <= random < 1.0 *) PROCEDURE setrandom( x0: REAL ); PROCEDURE PI(): REAL; END MathLib1. !Funky!Stuff!
bobc@tikal.UUCP (Bob Campbell) (05/08/86)
# The rest of this file is a shell script which will extract: # MemoryManager.DEF MenuManager.DEF PascalStrings.DEF Pictures.DEF # QuickDraw.DEF Regions.DEF echo x - MemoryManager.DEF cat >MemoryManager.DEF <<'!Funky!Stuff!' DEFINITION MODULE MemoryManager; FROM SYSTEM IMPORT ADDRESS; FROM MacSYSTEM IMPORT Handle,LONGINT,OSErr,noErr; EXPORT QUALIFIED (*CONST*) maxSize, (* Result codes *) memFullErr,memLockedErr,memPurErr,memWZErr,nilHandleErr, (*TYPES*) Size,THz,Zone,MyGrowZone, (*VAR*) DefltStack,MinStack,MemTop,ScrnBase,BufPtr,CurrentA5, CurStackBase,ApplLimit,HeapEnd,ApplZone,SysZone,TheZone,GZRootHnd, (* Routines *) InitApplZone,SetApplBase,InitZone,GetApplLimit,SetApplLimit,MaxApplZone, MoreMasters, GetZone,SetZone,SystemZone,ApplicZone, NewHandle,DisposHandle,GetHandleSize,SetHandleSize, HandleZone,RecoverHandle,ReallocHandle, NewPtr,DisposPtr,GetPtrSize,SetPtrSize,PtrZone, FreeMem,MaxMem,CompactMem,ResrvMem,PurgeMem,EmptyHandle, HLock,HUnlock,HPurge,HNoPurge, SetGrowZone,GZSaveHnd, BlockMove,TopMem,MoveHHi,MemError; CONST maxSize = 0800000H; (* Result codes *) memFullErr = -108; (* not enough room in zone *) memLockedErr = -117; (* block is locked *) memPurErr = -112; (* attempt to purge a locked block *) memWZErr = -111; (* attempt to operate on a free block *) nilHandleErr = -109; (* NIL master pointer *) TYPE Size = LONGINT; THz = POINTER TO Zone; Zone = RECORD bkLim: ADDRESS; (* limit pointer *) purgePtr: ADDRESS; (* used internally *) hFatFree: ADDRESS; (* first free master pointer *) zcbFree: LONGINT; (* number of free bytes *) gzProc: ADDRESS; (* grow zone function *) moreMast: INTEGER; (* master pointers to allocate *) flags: INTEGER; (* used internally *) cntRel: INTEGER; (* relocatable blocks *) maxRel: INTEGER; (* maximum cntRel value *) cntNRel: INTEGER; (* nonrelocatable blocks *) maxNRel: INTEGER; (* maximum maxRel value *) cntEmpty: INTEGER; (* empty master pointers *) cntHandles: INTEGER; (* total master pointers *) minCBFree: LONGINT; (* minimum zcbFree value *) purgeProc: ADDRESS; (* purge warning procedure *) sparePtr: ADDRESS; (* used internally *) allocPtr: ADDRESS; (* used internally *) heapData: INTEGER; (* first usable byte in zone *) END; MyGrowZone = PROCEDURE(Size):Size; VAR DefltStack[0322H]: LONGINT; MinStack[031EH]: LONGINT; MemTop[0108H]: ADDRESS; ScrnBase[0824H]: ADDRESS; BufPtr[010CH]: ADDRESS; CurrentA5[0904H]: ADDRESS; CurStackBase[0908H]: ADDRESS; ApplLimit[0130H]: ADDRESS; HeapEnd[0114H]: ADDRESS; ApplZone[02AAH]: ADDRESS; SysZone[02A6H]: ADDRESS; TheZone[0118H]: ADDRESS; GZRootHnd[0328H]: ADDRESS; (* Routines *) (* Initialization and Allocation *) PROCEDURE InitApplZone; PROCEDURE SetApplBase(startPtr:ADDRESS); PROCEDURE InitZone(pGrowZone:ADDRESS;cMoreMasters:INTEGER; limitPtr,startPtr:ADDRESS); PROCEDURE GetApplLimit():ADDRESS;(* Not in ROM *) PROCEDURE SetApplLimit(zoneLimit:ADDRESS); PROCEDURE MaxApplZone; (* No trap Macro *) PROCEDURE MoreMasters; (* Heap Zone Access *) PROCEDURE GetZone():THz; PROCEDURE SetZone(hz:THz); PROCEDURE SystemZone():THz; (* No trap macro *) PROCEDURE ApplicZone():THz; (* No trap macro *) (* Allocating and Releasing Relocatable Blocks *) PROCEDURE NewHandle(logicalSize:Size):Handle; PROCEDURE DisposHandle(h:Handle); PROCEDURE GetHandleSize(h:Handle):Size; PROCEDURE SetHandleSize(h:Handle;newSize:Size); PROCEDURE HandleZone(h:Handle):THz; PROCEDURE RecoverHandle(p:ADDRESS):Handle; PROCEDURE ReallocHandle(h:Handle;logicalSize:Size); (* Allocating and Releasing Nonrelocatable Blocks *) PROCEDURE NewPtr(logicalSize:Size):ADDRESS; PROCEDURE DisposPtr(p:ADDRESS); PROCEDURE GetPtrSize(p:ADDRESS):Size; PROCEDURE SetPtrSize(p:ADDRESS;newSize:Size); PROCEDURE PtrZone(p:ADDRESS):THz; (* Freeing Space in the Heap *) PROCEDURE FreeMem():LONGINT; PROCEDURE MaxMem(VAR grow:Size):Size; PROCEDURE CompactMem(cbNeeded:Size):Size; PROCEDURE ResrvMem(cbNeeded:Size); PROCEDURE PurgeMem(cbNeeded:Size); PROCEDURE EmptyHandle(h:Handle); (* Properties of Relocatable Blocks *) PROCEDURE HLock(h:Handle); PROCEDURE HUnlock(h:Handle); PROCEDURE HPurge(h:Handle); PROCEDURE HNoPurge(h:Handle); (* Grow Zone Operations *) PROCEDURE SetGrowZone(growZone:ADDRESS); PROCEDURE GZSaveHnd():Handle; (* No trap macro *) (* Miscellaneous Routines *) PROCEDURE BlockMove(src,dst:ADDRESS;count:Size); PROCEDURE TopMem():ADDRESS; (* No trap macro *) PROCEDURE MoveHHi(h:Handle); (* No trap macro *) PROCEDURE MemError():OSErr; (* No trap macro *) END MemoryManager. !Funky!Stuff! echo x - MenuManager.DEF cat >MenuManager.DEF <<'!Funky!Stuff!' DEFINITION MODULE MenuManager; FROM SYSTEM IMPORT ADDRESS,WORD; FROM MacSYSTEM IMPORT LONGINT,Handle; FROM QuickDraw IMPORT Point,Rect,Style; FROM ResourceManager IMPORT ResType; EXPORT QUALIFIED (*CONST*) (* Special Characters *) noMark,commandMark,checkMark,diamondMark,appleMark, (* Messages to menu definition procedure *) mDrawMsg,mChooseMsg,mSizeMsg, (* Resource ID of standard menu definition procedure *) textMenuProc, (*TYPE*) MenuHandle,MenuPtr,MenuInfo, (*PROC*) NewMenu,GetMenu,DisposeMenu, (*Forming the Menus*) AppendMenu,AddResMenu,InsertResMenu, (*Forming the Menus*) InsertMenu,DrawMenuBar,DeleteMenu,ClearMenuBar,GetNewMBar, GetMenuBar,SetMenuBar, (*Choosing from a menu*) MenuSelect,MenuKey,HiliteMenu, (*Controlling Items' Appearance*) SetItem,GetItem,DisableItem,EnableItem,CheckItem,SetItemMark, GetItemMark,SetItemIcon,GetItemIcon,SetItemStyle,GetItemStyle, (*Miscellaneous Routines*) CalcMenuSize,CountMItems,GetMHandle,FlashMenuBar,SetMenuFlash; CONST (* Special Characters *) noMark = 0C; (* NULL Char, to remove a mark *) commandMark = 021C; (* Command Key Symbol *) checkMark = 022C; diamondMark = 023C; appleMark = 024C; (* Messages to menu definition procedure *) mDrawMsg = 0; (* draw the menu *) mChooseMsg = 1; (* tell which item was chosen and highlight it *) mSizeMsg = 2; (* calculate the menu's dimensions *) (* Resource ID of standard menu definition procedure *) textMenuProc = 0; TYPE MenuHandle = POINTER TO MenuPtr; MenuPtr = POINTER TO MenuInfo; MenuInfo = RECORD menuID: INTEGER; menuWidth: INTEGER; menuHeight: INTEGER; menuProc: Handle; enableFlags: LONGINT; menuData: ARRAY [0..255] OF CHAR; END; PROCEDURE NewMenu(menuID:INTEGER;VAR menuTitle:ARRAY OF CHAR):MenuHandle; PROCEDURE GetMenu(resourceID:INTEGER):MenuHandle; PROCEDURE DisposeMenu(theMenu:MenuHandle); (*Forming the Menus*) PROCEDURE AppendMenu(theMenu:MenuHandle;VAR data:ARRAY OF CHAR); PROCEDURE AddResMenu(theMenu:MenuHandle;theType:ResType); PROCEDURE InsertResMenu(theMenu:MenuHandle;theType:ResType; afterItem:INTEGER); (*Forming the Menus*) PROCEDURE InsertMenu(theMenu:MenuHandle;beforeID:INTEGER); PROCEDURE DrawMenuBar; PROCEDURE DeleteMenu(menuID:INTEGER); PROCEDURE ClearMenuBar; PROCEDURE GetNewMBar(menuBarID:INTEGER):Handle; PROCEDURE GetMenuBar():Handle; PROCEDURE SetMenuBar(menuList:Handle); (*Choosing from a menu*) PROCEDURE MenuSelect(startPt:Point):LONGINT; PROCEDURE MenuKey(ch:CHAR):LONGINT; PROCEDURE HiliteMenu(menuID:INTEGER); (*Controlling Items' Appearance*) PROCEDURE SetItem(theMenu:MenuHandle;item:INTEGER;VAR itemString:ARRAY OF CHAR); PROCEDURE GetItem(theMenu:MenuHandle;item:INTEGER;VAR itemString:ARRAY OF CHAR); PROCEDURE DisableItem(theMenu:MenuHandle;item:INTEGER); PROCEDURE EnableItem(theMenu:MenuHandle;item:INTEGER); PROCEDURE CheckItem(theMenu:MenuHandle;item:INTEGER;checked:BOOLEAN); PROCEDURE SetItemMark(theMenu:MenuHandle;item:INTEGER;markChar:CHAR); PROCEDURE GetItemMark(theMenu:MenuHandle;item:INTEGER;VAR markChar:CHAR); PROCEDURE SetItemIcon(theMenu:MenuHandle;item:INTEGER;icon:CHAR); PROCEDURE GetItemIcon(theMenu:MenuHandle;item:INTEGER;VAR icon:CHAR); PROCEDURE SetItemStyle(theMenu:MenuHandle;item:INTEGER;chStyle:Style); PROCEDURE GetItemStyle (theMenu: MenuHandle;item:INTEGER; VAR chStyle:Style); (*Miscellaneous Routines*) PROCEDURE CalcMenuSize(theMenu:MenuHandle); PROCEDURE CountMItems(theMenu:MenuHandle):INTEGER; PROCEDURE GetMHandle(menuID:INTEGER):MenuHandle; PROCEDURE FlashMenuBar(menuID:INTEGER); PROCEDURE SetMenuFlash(count:INTEGER); END MenuManager. !Funky!Stuff! echo x - PascalStrings.DEF cat >PascalStrings.DEF <<'!Funky!Stuff!' DEFINITION MODULE PascalStrings; (* A.W. 20-NOV-84*) (* last modification 19.01.85 fxk *) (* * This module converts arrays of characters into strings, as expected by * the Lisa's or MacIntoshOS, and vice versa. *) EXPORT QUALIFIED MakePascalString, MakeModulaString, emptyPascalString; PROCEDURE MakePascalString(VAR in: ARRAY OF CHAR; VAR out: ARRAY OF CHAR); (* converts a modula string into a pascal string. NOTE: If "out" is not * long enough to hold the converted string, the latter is truncated! *) PROCEDURE MakeModulaString(VAR in: ARRAY OF CHAR; VAR out: ARRAY OF CHAR); (* converts a pascal string into a modula string. NOTE: If "out" is not * long enough to hold the converted string, the latter is truncated! *) PROCEDURE emptyPascalString(VAR string:ARRAY OF CHAR); (* makes an empty PascalString by setting length byte to zero *) END PascalStrings. !Funky!Stuff! echo x - Pictures.DEF cat >Pictures.DEF <<'!Funky!Stuff!' DEFINITION MODULE Pictures; FROM QuickDraw IMPORT Rect; EXPORT QUALIFIED (*CONST*) picLParen,picRParen, (*TYPES*) PicHandle,PicPtr,Picture, (* Picture Routines *) GetPicture,OpenPicture,ClosePicture, KillPicture,DrawPicture,PicComment; CONST picLParen =0; picRParen =1; (* standard picture comments *) TYPE PicHandle = POINTER TO PicPtr; PicPtr = POINTER TO Picture; Picture = RECORD picSize: INTEGER; picFrame: Rect; (* picture definition data *) END; (* Picture Routines *) PROCEDURE GetPicture(picID:INTEGER):PicHandle; PROCEDURE OpenPicture (VAR picFrame:Rect):PicHandle; PROCEDURE ClosePicture; PROCEDURE KillPicture (thePicture:PicHandle); PROCEDURE DrawPicture (thePicture:PicHandle;VAR inRect:Rect); PROCEDURE PicComment (kind,dataSize:INTEGER;data:PicHandle); END Pictures. !Funky!Stuff! echo x - QuickDraw.DEF cat >QuickDraw.DEF <<'!Funky!Stuff!' DEFINITION MODULE QuickDraw; (* Franz Kronseder 07.12.84 *) (* last modification 06.02.85 *) (* standalone modification 20.02.86 *) FROM SYSTEM IMPORT ADDRESS,WORD; FROM MacSYSTEM IMPORT LONGINT; (* * This code is addapted from Inside Macintosh(TM) Volume I * * Because of the extreme size of this module some parts have been * put in other modules where they make more sence. * * FontManager: GetFontInfo, and FontInfo. * Cursors: InitCursor, SetCursor, HideCursor, ShowCursor, * and ObscureCursor. * Pictures: picLParen, picRParen, PicHandle, PicPtr, Picture, OpenPicture, * PicComment, ClosePicture, DrawPicture, and KillPicture. * Regions: NewRgn, OpenRgn, CloseRgn, DisposeRgn, SetEmptyRgn, * RectRgn, CopyRgn, PtInRgn, RectInRgn, OffsetRgn, InsetRgn, EmptyRgn, * UnionRgn, SectRgn, DiffRgn, XOrRgn, EqualRgn, MapRgn, FrameRgn, * PaintRgn, FillRgn, EraseRgn, and InvertRgn. * Toolbox: Random, and StuffHex. *) EXPORT QUALIFIED (*CONST*) srcCopy,srcOr,srcXor,srcBic,notSrcCopy,notSrcOr,notSrcXor,notSrcBic, patCopy,patOr,patXor,patBic,notPatCopy,notPatOr,notPatXor,notPatBic, blackColor,whiteColor,redColor,greenColor,blueColor,cyanColor, magentaColor,yellowColor, (*TYPE*) Str255,QDHandle, StyleItem,Style,VHSelect,Point,Rect,RgnHandle,RgnPtr,Region, BitMap,Pattern,Bits16,Cursor,(*QDProcsPtr,QDProcs,*) GrafPtr, GrafPort,PolyHandle,PolyPtr,Polygon,PenState,GrafVerb, (*VAR*) randSeed,screenBits,arrow,dkGray,ltGray,gray,black,white,thePort, (* GrafPort Routines *) OpenPort,InitPort,ClosePort,SetPort,GetPort,GrafDevice, SetPortBits,PortSize,MovePortTo,SetOrigin,SetClip,GetClip, ClipRect,BackPat, (* Line Routines *) HidePen,ShowPen,GetPen,GetPenState,SetPenState,PenSize,PenMode, PenPat,PenNormal,MoveTo,Move,LineTo,Line, (* Text Routines *) TextFont,TextFace,TextMode,TextSize,SpaceExtra,DrawChar,DrawString, DrawText,CharWidth,StringWidth,TextWidth, (* Point Calculations *) AddPt,SubPt,SetPt,EqualPt,ScalePt,MapPt,LocalToGlobal,GlobalToLocal, (* Rectangle Calculations *) SetRect,EqualRect,EmptyRect,OffsetRect,MapRect,InsetRect,SectRect, UnionRect,PtInRect,Pt2Rect, (* Graphical Operations on Rectangles *) FrameRect,PaintRect,EraseRect,InvertRect,FillRect, (* RoundRect Routines *) FrameRoundRect,PaintRoundRect,FillRoundRect,EraseRoundRect, InvertRoundRect, (* Drawing Ovals *) FrameOval,PaintOval,EraseOval,InvertOval,FillOval, (* Arc Routines *) FrameArc,PaintArc,FillArc,EraseArc,InvertArc,PtToAngle, (* Polygon Routines *) OpenPoly,ClosePoly,KillPoly,OffsetPoly,MapPoly,FramePoly,PaintPoly, FillPoly,ErasePoly,InvertPoly, (* Graphical Operations on BitMaps *) ScrollRect,CopyBits, (* Misc Utility Routines *) GetPixel,ForeColor,BackColor,ColorBit; (* these definitions come from the MacIntosh Interface files * on the Lisa Workshop Supplement for the MAC. * Copyright 1983 Apple Computer Inc. *) (* the 16 transfer modes *) CONST srcCopy = 0; srcOr = 1; srcXor = 2; srcBic = 3; notSrcCopy = 4; notSrcOr = 5; notSrcXor = 6; notSrcBic = 7; patCopy = 8; patOr = 9; patXor = 10; patBic = 11; notPatCopy = 12; notPatOr = 13; notPatXor = 14; notPatBic = 15; (* normal screen mapping inverse screen mapping *) (* RGB additive mapping CMYBk subtractive mapping *) (* colors expressed in these mappings *) blackColor = 33; whiteColor = 30; redColor = 205; greenColor = 341; blueColor = 409; cyanColor = 273; magentaColor = 137; yellowColor = 69; TYPE QDHandle = POINTER TO ADDRESS; (* blind handle *) Str255 = ARRAY [0..255] OF CHAR; (* Pascal compatible String *) StyleItem = (bold,italic,underline,outline,shadow,condense,extend, unused1,unused2); (* sets of < 8 elements are a byte *) Style = SET OF StyleItem; VHSelect = (v,h); Point = RECORD CASE INTEGER OF 0: v: INTEGER;h: INTEGER; | 1: vh: ARRAY VHSelect OF INTEGER | 2: param:LONGINT END END; Rect = RECORD CASE INTEGER OF 0: top: INTEGER; left: INTEGER; bottom: INTEGER; right: INTEGER; | 1: topLeft: Point; botRight: Point; END END; (* Region Definitions are here to avoid cyclic imports *) RgnHandle = POINTER TO RgnPtr; RgnPtr = POINTER TO Region; Region = RECORD rgnSize: INTEGER; (* rgnSize = 10 for rectangular *) rgnBBox: Rect; (* plus more data if not rectangular *) END; BitMap = RECORD baseAddr: ADDRESS; rowBytes: INTEGER; bounds: Rect; END; Pattern = ARRAY[0..7] OF SET OF [0..7]; Bits16 = ARRAY[0..15] OF INTEGER; Cursor = RECORD data: Bits16; mask: Bits16; hotSpot: Point; END; (* * Not supported yet, removed to save space. * * QDProcsPtr = POINTER TO QDProcs; * QDProcs = RECORD * textProc: ADDRESS; * lineProc: ADDRESS; * rectProc: ADDRESS; * rRectProc: ADDRESS; * ovalProc: ADDRESS; * arcProc: ADDRESS; * polyProc: ADDRESS; * rgnProc: ADDRESS; * bitsProc: ADDRESS; * commentProc: ADDRESS; * txMeasProc: ADDRESS; * getPicProc: ADDRESS; * putPicProc: ADDRESS; * END; *) GrafPtr = POINTER TO GrafPort; GrafPort = RECORD device: INTEGER; portBits: BitMap; portRect: Rect; visRgn: RgnHandle; clipRgn: RgnHandle; bkPat: Pattern; fillPat: Pattern; pnLoc: Point; pnSize: Point; pnMode: INTEGER; pnPat: Pattern; pnVis: INTEGER; txFont: INTEGER; txFace: Style; txMode: INTEGER; txSize: INTEGER; spExtra: LONGINT; fgColor: LONGINT; bkColor: LONGINT; colrBit: INTEGER; patStretch: INTEGER; picSave: QDHandle; rgnSave: QDHandle; polySave: QDHandle; grafProcs: ADDRESS; (* was QDProcsPtr *) END; (* PicHandle, PicPtr, and Picture moved to Pictures *) PolyHandle = POINTER TO PolyPtr; PolyPtr = POINTER TO Polygon; Polygon = RECORD polySize: INTEGER; polyBBox: Rect; polyPoints: ARRAY [0..0] OF Point END; PenState = RECORD pnLoc: Point; pnSize: Point; pnMode: INTEGER; pnPat: Pattern; END; GrafVerb = (frame,paint,erase,invert,fill); VAR (* Must pad for Private QuickDraw Values *) QDPad: ARRAY[0..37] OF CARDINAL; (* wideOpen EQU $FFFFFF7E ; RgnHandle wideMaster EQU $FFFFFF7A ; RgnPtr wideData EQU $FFFFFF70 ; Fake Region rgnBuf EQU $FFFFFF6C ; PointsHandle rgnIndex EQU $FFFFFF6A ; INTEGER rgnMax EQU $FFFFFF68 ; INTEGER playPic EQU $FFFFFF64 ; Long playIndex EQU $FFFFFF62 ; INTEGER thePoly EQU $FFFFFF5E ; POLYHANDLE polyMax EQU $FFFFFF5C ; INTEGER patAlign EQU $FFFFFF58 ; Point fontAdj EQU $FFFFFF54 ; Fixed Point fontPtr EQU $FFFFFF50 ; long, ^FMOutput record fontData EQU $FFFFFF36 ; FMOutput record lastGrafGlob EQU $FFFFFF36 *) randSeed: LONGINT; (* -126 *) screenBits: BitMap; (* -122 *) arrow: Cursor; (* -108 *) dkGray: Pattern; (* -40 *) ltGray: Pattern; (* -32 *) gray: Pattern; (* -24 *) black: Pattern; (* -16 *) white: Pattern; (* -8 *) thePort: GrafPtr; (* 0 *) (* GrafPort Routines *) (* InitGraf is automaticly called *) PROCEDURE OpenPort (port: GrafPtr); PROCEDURE InitPort (port: GrafPtr); PROCEDURE ClosePort (port: GrafPtr); PROCEDURE SetPort (port: GrafPtr); PROCEDURE GetPort (VAR port: GrafPtr); PROCEDURE GrafDevice (device: INTEGER); PROCEDURE SetPortBits(VAR bm: BitMap); PROCEDURE PortSize (width,height: INTEGER); PROCEDURE MovePortTo (leftGlobal,topGlobal: INTEGER); PROCEDURE SetOrigin (h,v: INTEGER); PROCEDURE SetClip (rgn: RgnHandle); PROCEDURE GetClip (rgn: RgnHandle); PROCEDURE ClipRect (VAR r: Rect); PROCEDURE BackPat (VAR pat: Pattern); (* Cursor Routines moved to Cursors *) (* Line Routines *) PROCEDURE HidePen; PROCEDURE ShowPen; PROCEDURE GetPen (VAR pt: Point); PROCEDURE GetPenState(VAR pnState: PenState); PROCEDURE SetPenState(VAR pnState: PenState); PROCEDURE PenSize (width,height: INTEGER); PROCEDURE PenMode (mode: INTEGER); PROCEDURE PenPat (VAR pat: Pattern); PROCEDURE PenNormal; PROCEDURE MoveTo (h,v: INTEGER); PROCEDURE Move (dh,dv: INTEGER); PROCEDURE LineTo (h,v: INTEGER); PROCEDURE Line (dh,dv: INTEGER); (* Text Routines *) PROCEDURE TextFont (font: INTEGER); PROCEDURE TextFace (face: Style); PROCEDURE TextMode (mode: INTEGER); PROCEDURE TextSize (size: INTEGER); PROCEDURE SpaceExtra (extra: LONGINT); PROCEDURE DrawChar (ch: CHAR); PROCEDURE DrawString (VAR s:ARRAY OF CHAR); PROCEDURE DrawText (textBuf: ADDRESS; firstByte,byteCount: INTEGER); PROCEDURE CharWidth (ch: CHAR): INTEGER; PROCEDURE StringWidth (VAR s:ARRAY OF CHAR): INTEGER; PROCEDURE TextWidth (textBuf: ADDRESS; firstByte,byteCount: INTEGER): INTEGER; (* GetFontInfo moved to FontManager *) (* Drawing In Color *) PROCEDURE ForeColor (color:LONGINT); PROCEDURE BackColor (color:LONGINT); PROCEDURE ColorBit (whichBit:INTEGER); (* Rectangle Calculations *) PROCEDURE SetRect (VAR r:Rect;left,top,right,bottom:INTEGER); PROCEDURE OffsetRect(VAR r:Rect;dh,dv:INTEGER); PROCEDURE InsetRect (VAR r:Rect;dh,dv:INTEGER); PROCEDURE SectRect (VAR src1,src2:Rect;VAR dstRect:Rect):BOOLEAN; PROCEDURE UnionRect (VAR src1,src2:Rect;VAR dstRect:Rect); PROCEDURE PtInRect (pt: Point; dstRect:Rect):BOOLEAN; PROCEDURE Pt2Rect (pt1,pt2:Point;VAR dstRect:Rect); PROCEDURE PtToAngle(inRect:Rect;thePoint:Point;VAR theAngle:INTEGER); PROCEDURE EqualRect(VAR rect1,rect2:Rect):BOOLEAN; PROCEDURE EmptyRect(VAR r:Rect):BOOLEAN; (* Graphical Operations on Rectangles *) PROCEDURE FrameRect (VAR r: Rect); PROCEDURE PaintRect (VAR r: Rect); PROCEDURE EraseRect (VAR r: Rect); PROCEDURE InvertRect (VAR r: Rect); PROCEDURE FillRect (VAR r: Rect;VAR pat: Pattern); (* Drawing Ovals *) PROCEDURE FrameOval(VAR inRect:Rect); PROCEDURE PaintOval(VAR inRect:Rect); PROCEDURE EraseOval(VAR inRect:Rect); PROCEDURE InvertOval(VAR inRect:Rect); PROCEDURE FillOval(VAR inRect:Rect;VAR pat:Pattern); (* RoundRect Routines *) PROCEDURE FrameRoundRect (VAR theRect:Rect;cornerWidth,cornerHeigth:INTEGER); PROCEDURE PaintRoundRect (VAR theRect:Rect;cornerWidth,cornerHeight:INTEGER); PROCEDURE EraseRoundRect(VAR theRect:Rect;cornerWidth,cornerHeight:INTEGER); PROCEDURE InvertRoundRect(VAR theRect:Rect;cornerWidth,cornerHeigth:INTEGER); PROCEDURE FillRoundRect (VAR theRect:Rect;cornerWidth,cornerHeigth:INTEGER; VAR fillPat:Pattern); (* Arc Routines *) PROCEDURE FrameArc(VAR inRect:Rect;startAngle,arcAngle:INTEGER); PROCEDURE PaintArc(VAR inRect:Rect;startAngle,arcAngle:INTEGER); PROCEDURE EraseArc(VAR inRect:Rect;startAngle,arcAngle:INTEGER); PROCEDURE InvertArc(VAR inRect:Rect;startAngle,arcAngle:INTEGER); PROCEDURE FillArc(VAR inRect:Rect;startAngle,arcAngle:INTEGER; VAR fillpat:Pattern); (* Region routines move to Regions *) (* Graphical Operations on BitMaps *) PROCEDURE ScrollRect(VAR dstRect: Rect; dh,dv: INTEGER; updateRgn: RgnHandle); PROCEDURE CopyBits (VAR srcBits,dstBits: BitMap; VAR srcRect,dstRect: Rect; mode: INTEGER; maskRgn: RgnHandle); (* Picture routines moved to Pictures *) (* Polygon Routines *) PROCEDURE OpenPoly():PolyHandle; PROCEDURE ClosePoly; PROCEDURE KillPoly (thePolygon:PolyHandle); PROCEDURE OffsetPoly (thePolygon:PolyHandle;hOffset,vOffset:INTEGER); PROCEDURE FramePoly (thePolygon:PolyHandle); PROCEDURE PaintPoly (thePolygon:PolyHandle); PROCEDURE ErasePoly (thePolygon:PolyHandle); PROCEDURE InvertPoly (thePolygon:PolyHandle); PROCEDURE FillPoly (thePolygon:PolyHandle;VAR fillPat:Pattern); (* Point Calculations *) PROCEDURE AddPt (src:Point;VAR dst:Point); PROCEDURE SubPt (src:Point;VAR dst:Point); PROCEDURE SetPt (VAR pt: Point;h,v:INTEGER); PROCEDURE EqualPt (pt1,pt2: Point) :BOOLEAN; PROCEDURE LocalToGlobal (VAR pt:Point); PROCEDURE GlobalToLocal (VAR pt:Point); (* Misc Utility Routines *) PROCEDURE GetPixel(h,v:INTEGER):BOOLEAN; PROCEDURE ScalePt (VAR pt:Point;VAR fromRect,toRect:Rect); PROCEDURE MapPt (VAR pt:Point;VAR fromRect,toRect:Rect); PROCEDURE MapRect (VAR r:Rect;VAR fromRect,toRect:Rect); (* MapRgn moved to Regions *) PROCEDURE MapPoly (thePolygon:PolyHandle;VAR fromRect,toRect:Rect); END QuickDraw. !Funky!Stuff! echo x - Regions.DEF cat >Regions.DEF <<'!Funky!Stuff!' DEFINITION MODULE Regions; FROM QuickDraw IMPORT RgnHandle,RgnPtr,Region,Point,Rect,Pattern; EXPORT QUALIFIED (* Region Calculations *) NewRgn,OpenRgn,CloseRgn,DisposeRgn,SetEmptyRgn,RectRgn,CopyRgn, PtInRgn,RectInRgn,OffsetRgn,InsetRgn,EmptyRgn,UnionRgn,SectRgn, DiffRgn,XOrRgn,EqualRgn,MapRgn, (* Drawing Regions *) FrameRgn,PaintRgn,FillRgn,EraseRgn,InvertRgn; (* Region Calculations *) PROCEDURE NewRgn ():RgnHandle; PROCEDURE OpenRgn; PROCEDURE CloseRgn (theRegion:RgnHandle); PROCEDURE DisposeRgn (theRegion:RgnHandle); PROCEDURE SetEmptyRgn (theRegion:RgnHandle); PROCEDURE RectRgn (theRegion:RgnHandle;VAR theRect:Rect); PROCEDURE SetRectRgn (theRegion:RgnHandle;left,top,right,bottom:INTEGER); PROCEDURE CopyRgn (fromRegion,toRegion:RgnHandle); PROCEDURE PtInRgn (thePoint:Point;theRegion:RgnHandle):BOOLEAN; PROCEDURE RectInRgn (VAR theRect:Rect;theRegion:RgnHandle):BOOLEAN; PROCEDURE OffsetRgn (theRegion:RgnHandle;hOffset,vOffset:INTEGER); PROCEDURE InsetRgn (theRegion:RgnHandle;hInset,vInset:INTEGER); PROCEDURE EmptyRgn (theRegion:RgnHandle):BOOLEAN; PROCEDURE UnionRgn (region1,region2,resultRegion:RgnHandle); PROCEDURE SectRgn (region1,region2,resultRegion:RgnHandle); PROCEDURE DiffRgn (region1,region2,resultRegion:RgnHandle); PROCEDURE XOrRgn (region1,region2,resultRegion:RgnHandle); PROCEDURE EqualRgn (region1,region2:RgnHandle):BOOLEAN; PROCEDURE MapRgn (theRegion:RgnHandle;VAR fromRect,toRect:Rect); (* Drawing Regions *) PROCEDURE FrameRgn (theRegion:RgnHandle); PROCEDURE PaintRgn (theRegion:RgnHandle); PROCEDURE FillRgn (theRegion:RgnHandle;VAR fillPat:Pattern); PROCEDURE EraseRgn (theRegion:RgnHandle); PROCEDURE InvertRgn (theRegion:RgnHandle); END Regions. !Funky!Stuff!
bobc@tikal.UUCP (Bob Campbell) (05/08/86)
# The rest of this file is a shell script which will extract:
# ResourceManager.DEF SFPackage.DEF SYSTEMX.DEF ScrapManager.DEF
# Storage.DEF Streams.DEF Terminal.DEF TextEdit.DEF Toolbox.DEF
# WindowManager.DEF
echo x - ResourceManager.DEF
cat >ResourceManager.DEF <<'!Funky!Stuff!'
DEFINITION MODULE ResourceManager;
FROM SYSTEM IMPORT ADDRESS;
FROM MacSYSTEM IMPORT LONGINT,Handle;
EXPORT QUALIFIED
(*CONST*)
(* Resource attributes *)
resSysRef,resSysHeap,resPurgeable,resLocked,resProtected,
resPreload,resChanged,
(* Resource Manager Result codes *)
resNotFound,resFNotFound,addResFailed,addRefFailed,rmvResFailed,
rmvRefFailed,
(* Resource file attributes *)
mapReadOnly,mapCompact,mapChanged,
(*TYPE*)
ResType,ParamResType,
(*VAR*)
CurMap,CurApRefNum,SysMap,SysResName,SysMapHndl,TopMapHndl,ResLoad,
ResErr,
(*PROC*)
CreateResFile,OpenResFile,CloseResFile,
ResError,
CurResFile,HomeResFile,UseResFile,
CountTypes,GetIndType,
SetResLoad,CountResources,GetIndResource,GetResource,
GetNamedResource,LoadResource,ReleaseResource,DetachResource,
UniqueID,GetResInfo,GetResAttrs,SizeResource,
SetResInfo,SetResAttrs,ChangedResource,AddResource,
RmveResource,UpdateResFile,WriteResource,SetResPurge,
GetResFileAttrs,SetResFileAttrs;
CONST
(* Resource attributes *)
resSysRef = 128; (* set if system reference *)
resSysHeap = 64; (* set if read into system heap *)
resPurgeable = 32; (* set if purgeable *)
resLocked = 16; (* set if locked *)
resProtected = 8; (* set if protected *)
resPreload = 4; (* set if to be preloaded *)
resChanged = 2; (* set if to be written to res file *)
(* Resource Manager Result codes *)
resNotFound = -192; (* resource not found *)
resFNotFound = -193; (* resource file not found *)
addResFailed = -194; (* AddResource failed *)
addRefFailed = -195; (* AddReference failed *)
rmvResFailed = -196; (* RmveResource failed *)
rmvRefFailed = -197; (* RmveReference failed *)
(* Resource file attributes *)
mapReadOnly = 128; (* set if file is read-only *)
mapCompact = 64; (* set to compact file on update*)
mapChanged = 32; (* set to write map on update *)
TYPE
ResType = ARRAY [0..3] OF CHAR;
ParamResType = RECORD
CASE INTEGER OF
0:
res:ResType
| 1:
param:LONGINT
END
END;
VAR
TopMapHndl[0A50H]: Handle;
SysMapHndl[0A54H]: Handle;
SysMap[0A58H]: CARDINAL;
CurMap[0A5AH]: CARDINAL;
ResLoad[0A5EH]: BOOLEAN;
ResErr[0A60H]: INTEGER;
CurApRefNum[0900H]: CARDINAL;
SysResName[0AD8H]: ARRAY [0..20] OF CHAR;
(* Opening and Closing Resource Files *)
PROCEDURE CreateResFile(VAR fileName:ARRAY OF CHAR);
PROCEDURE OpenResFile(VAR fileName:ARRAY OF CHAR):INTEGER;
PROCEDURE CloseResFile(refNum:INTEGER);
(* Checking for Errors *)
PROCEDURE ResError():INTEGER;
(* Setting the Current Resource File *)
PROCEDURE CurResFile():INTEGER;
PROCEDURE HomeResFile(theResource:Handle):INTEGER;
PROCEDURE UseResFile(refNum:INTEGER);
(* Getting Resource Types *)
PROCEDURE CountTypes():INTEGER;
PROCEDURE GetIndType(VAR theType:ResType;index:INTEGER);
(* Getting and Disposing of Resources *)
PROCEDURE SetResLoad(load:BOOLEAN);
PROCEDURE CountResources(theType:ResType):INTEGER;
PROCEDURE GetIndResource(theType:ResType;index:INTEGER):Handle;
PROCEDURE GetResource(theType:ResType;theID:INTEGER):Handle;
PROCEDURE GetNamedResource(theType:ResType;VAR name:ARRAY OF CHAR):Handle;
PROCEDURE LoadResource(theResource:Handle);
PROCEDURE ReleaseResource(theResource:Handle);
PROCEDURE DetachResource(theResource:Handle);
(* Getting Resource Information *)
PROCEDURE UniqueID(theType:ResType):INTEGER;
PROCEDURE GetResInfo(theResource:Handle;VAR theID:INTEGER;
VAR theType:ResType; VAR name:ARRAY OF CHAR);
PROCEDURE GetResAttrs(theResource:Handle):INTEGER;
PROCEDURE SizeResource(theResource:Handle):LONGINT;
(* Modifying Resources *)
PROCEDURE SetResInfo(theResource:Handle; theID:INTEGER;VAR name:ARRAY OF CHAR);
PROCEDURE SetResAttrs(theResource:Handle;attrs:INTEGER);
PROCEDURE ChangedResource(theResource:Handle);
PROCEDURE AddResource(theData:Handle;theType:ResType;theID:INTEGER;
VAR name:ARRAY OF CHAR);
PROCEDURE RmveResource(theResource:Handle);
PROCEDURE UpdateResFile(refNum:INTEGER);
PROCEDURE WriteResource(theResource:Handle);
PROCEDURE SetResPurge(install:BOOLEAN);
(* Advanced Routines *)
PROCEDURE GetResFileAttrs(refNum:INTEGER):INTEGER;
PROCEDURE SetResFileAttrs(refNum:INTEGER;attrs:INTEGER);
END ResourceManager.
!Funky!Stuff!
echo x - SFPackage.DEF
cat >SFPackage.DEF <<'!Funky!Stuff!'
DEFINITION MODULE SFPackage;
FROM SYSTEM IMPORT ADDRESS,WORD;
FROM QuickDraw IMPORT Point;
FROM FileTypes IMPORT OSType,ParamBlkPtr;
FROM DialogManager IMPORT DialogPtr;
EXPORT QUALIFIED putDlgID,getDlgID,SFReply,SFTypeList,
SFPutFile,SFPPutFile, SFGetFile,SFPGetFile,
putSave ,putCancel,putEject ,putDrive ,putName,
getOpen,getCancel,getEject,getDrive,getScroll,
getNmList,MyDlgType,MyFileFilterType,NoFileFilter,NoDlg,
UseDlg,UseFileFilter;
(* constants for Standard File package *)
CONST
putDlgID = -3999; (* SFPutFile dialog template ID} *)
getDlgID = -4000; (* SFGetFile dialog template ID} *)
putSave = 1; (* save button} *)
putCancel = 2; (* cancel button} *)
putEject = 5; (* eject button} *)
putDrive = 6; (* drive button} *)
putName = 7; (* editTExt item for file name} *)
getOpen = 1; (* open button} *)
getCancel = 3; (* cancel button} *)
getEject = 5; (* eject button} *)
getDrive = 6; (* drive button} *)
getNmList = 7; (* userItem for file name list} *)
getScroll = 8; (* userItem for scroll bar} *)
TYPE
SFReply = RECORD
good: BOOLEAN; (* ignore command if FALSE} *)
copy: BOOLEAN; (* not used} *)
fType: OSType; (* file type or not used} *)
vRefNum: INTEGER; (* volume reference number} *)
version: INTEGER; (* file's version number} *)
fName: ARRAY [0..63] OF CHAR
END; (* SFReply *)
SFTypeList = ARRAY[0..3] OF OSType;
MyDlgType = PROCEDURE(INTEGER,DialogPtr):INTEGER;
MyFileFilterType = PROCEDURE(ParamBlkPtr):BOOLEAN;
PROCEDURE NoDlg():ADDRESS;
PROCEDURE UseDlg(Dlg:MyDlgType):ADDRESS;
PROCEDURE NoFileFilter():ADDRESS;
PROCEDURE UseFileFilter(FileFilter:MyFileFilterType):ADDRESS;
PROCEDURE SFPutFile(lefttop:Point;
VAR prompt: ARRAY OF CHAR; VAR origName: ARRAY OF CHAR;
dlgHook: ADDRESS; VAR reply: SFReply);
PROCEDURE SFPPutFile(lefttop:Point;
VAR prompt: ARRAY OF CHAR; VAR origName: ARRAY OF CHAR;
dlgHook: ADDRESS; VAR reply: SFReply; dlgID: INTEGER;
filterProc: ADDRESS);
PROCEDURE SFGetFile(lefttop:Point;
VAR prompt: ARRAY OF CHAR; fileFilter: ADDRESS;
numTypes: INTEGER; VAR typeList: SFTypeList;
dlgHook: ADDRESS; VAR reply: SFReply);
PROCEDURE SFPGetFile(lefttop:Point;
VAR prompt: ARRAY OF CHAR; fileFilter: ADDRESS;
numTypes: INTEGER; VAR typeList: SFTypeList;
dlgHook: ADDRESS; VAR reply: SFReply;
dlgID: INTEGER; filterProc: ADDRESS);
END SFPackage.
!Funky!Stuff!
echo x - SYSTEMX.DEF
cat >SYSTEMX.DEF <<'!Funky!Stuff!'
DEFINITION MODULE SYSTEMX;
FROM SYSTEM IMPORT ADDRESS,PROCESS;
EXPORT QUALIFIED SaveA5,SaveA6,SaveA7,SaveA0,
DoCASE,DoHALT,CheckStack,NEWPROCESS,TRANSFER,IOTRANSFER,
SYSProc7,SYSLongMult,SYSLongDivMod,SYSLongIntMult,SYSProc11,
SYSRealAdd,SYSRealSub,SYSRealMult,SYSRealDiv,SYSRealCMP,
SYSRealTST,SYSRealFLOAT,SYSRealTRUNC;
VAR
SaveA5,SaveA7,SaveA6,SaveA0:ADDRESS;
PROCEDURE DoCASE; (* 1 *)
PROCEDURE DoHALT; (* 2 *)
PROCEDURE CheckStack; (* 3 *)
PROCEDURE NEWPROCESS; (* 4 *)
PROCEDURE TRANSFER; (* 5 *)
PROCEDURE IOTRANSFER(p1,p2:PROCESS; via:ADDRESS); (* 6 *)
PROCEDURE SYSProc7; (* 7 *)
(* IF D0 = 2 THEN LISTEN ELSIF D0 = 3 THEN SYSRESET END *)
PROCEDURE SYSLongMult; (* 8 *)
PROCEDURE SYSLongDivMod; (* 9 *)
PROCEDURE SYSLongIntMult; (* 10 *)
PROCEDURE SYSProc11; (* 11 *)
PROCEDURE SYSRealAdd; (* 12 *)
PROCEDURE SYSRealSub; (* 13 *)
PROCEDURE SYSRealMult; (* 14 *)
PROCEDURE SYSRealDiv; (* 15 *)
PROCEDURE SYSRealCMP; (* 16 *)
PROCEDURE SYSRealTST; (* 17 *)
PROCEDURE SYSRealFLOAT; (* 18 *)
PROCEDURE SYSRealTRUNC; (* 19 *)
END SYSTEMX.
!Funky!Stuff!
echo x - ScrapManager.DEF
cat >ScrapManager.DEF <<'!Funky!Stuff!'
DEFINITION MODULE ScrapManager;
FROM MacSYSTEM IMPORT LONGINT,Handle,StringPtr;
FROM ResourceManager IMPORT ResType;
FROM SYSTEM IMPORT ADDRESS;
EXPORT QUALIFIED noScrapErr,noTypeErr,PScrapStuff,ScrapStuff,
InfoScrap,UnloadScrap,LoadScrap,ZeroScrap,PutScrap,GetScrap,
ScrapSize,ScrapHandle,ScrapCount,ScrapState,ScrapName;
CONST
noScrapErr = -100; (* desk scrap isn't initialized *)
noTypeErr = -102; (* no data of the requested type *)
TYPE
PScrapStuff = POINTER TO ScrapStuff;
ScrapStuff = RECORD
scrapSize: LONGINT; (* size of desk scrap *)
scrapHandle: Handle; (* handle to desk scrap *)
scrapCount: INTEGER; (* count changed by ZeroScrap *)
scrapState: INTEGER; (* tells where desk scrap is *)
scrapName: StringPtr; (* scrap file name *)
END;
VAR
ScrapSize[0960H]: LONGINT;
ScrapHandle[0964H]: Handle;
ScrapCount[0968H]: INTEGER;
ScrapState[096AH]: INTEGER;
ScrapName[096CH]: StringPtr;
PROCEDURE InfoScrap():PScrapStuff;
PROCEDURE UnloadScrap():LONGINT;
PROCEDURE LoadScrap():LONGINT;
PROCEDURE ZeroScrap():LONGINT;
PROCEDURE PutScrap(length: LONGINT; theType: ResType; source: ADDRESS):LONGINT;
PROCEDURE GetScrap(hDest:Handle;theType: ResType; VAR offset: LONGINT):LONGINT;
END ScrapManager.
!Funky!Stuff!
echo x - Storage.DEF
cat >Storage.DEF <<'!Funky!Stuff!'
DEFINITION MODULE Storage;
(* to be used unchanged for MacIntosh by Franz Kronseder 30.01.85 *)
(* Modified for standalone MacIntosh Code By Bob Campbell 10.02.86
* The Implementation now used the A-Line calls to the memory manager
* All of the storage allocated is set to zero. The Calls CreateHeap,
* and DestroyHeap have been removed.
*)
FROM SYSTEM IMPORT ADDRESS;
EXPORT QUALIFIED
ALLOCATE, DEALLOCATE, Available;
PROCEDURE ALLOCATE (VAR addr : ADDRESS; amount : CARDINAL);
(* allocates the requested amount of memory (in bytes) and returns the *)
(* starting address . Return NIL if the amount is not available *)
PROCEDURE DEALLOCATE (VAR addr : ADDRESS; amount : CARDINAL);
(* deallocates the given amount of memory (in bytes). *)
PROCEDURE Available (amount : CARDINAL) : BOOLEAN;
(* returns TRUE if an ALLOCATE of the specified amount (in bytes) *)
(* of memory would be possible *)
END Storage.
!Funky!Stuff!
echo x - Streams.DEF
cat >Streams.DEF <<'!Funky!Stuff!'
DEFINITION MODULE Streams;
(*
* Modified from the book "PROGRAMMING IN
* MODULA-2" by Miklaus Wirth Edited by
* David Gries pages 103 and 104.
*)
FROM SYSTEM IMPORT WORD,ADDRESS;
FROM MacSYSTEM IMPORT LONGINT;
FROM FileTypes IMPORT ParamBlkRec,OSType;
EXPORT QUALIFIED
STREAM,OpenMode,Open,Close,Create,
WriteWord,WriteChar,WriteBuffer,
ReadWord,ReadChar,ReadBuffer,
EOS,Reset,SetPos,GetPos,eolc;
CONST
eolc = 15C;
TYPE
STREAM = POINTER TO StreamRec;
StreamRec = RECORD
IsOpen : BOOLEAN;
Buffer : ADDRESS;
FileNum : INTEGER;
EOSPos : LONGINT;
CurrentPos : LONGINT;
PB : ParamBlkRec;
END;
OpenMode = (ReadOnly,WriteOnly,ReadWrite);
OSType = ARRAY [0..3] OF CHAR;
PROCEDURE Open(VAR file:STREAM; VAR Name:ARRAY OF CHAR;vref:INTEGER;
Mode:OpenMode);
PROCEDURE Create(VAR Name:ARRAY OF CHAR;vRef:INTEGER;
creator,type:OSType);
PROCEDURE Close(s:STREAM);
PROCEDURE WriteWord(s:STREAM;w:WORD);
PROCEDURE WriteChar(s:STREAM;c:CHAR);
PROCEDURE WriteBuffer(s:STREAM;b:ADDRESS;len:LONGINT):LONGINT;
PROCEDURE ReadWord(s:STREAM;VAR w:WORD);
PROCEDURE ReadChar(s:STREAM;VAR c:CHAR);
PROCEDURE ReadBuffer(s:STREAM;b:ADDRESS;len:LONGINT):LONGINT;
PROCEDURE EOS(s:STREAM):BOOLEAN;
PROCEDURE Reset(s:STREAM);
PROCEDURE SetPos(s:STREAM;pos:LONGINT);
PROCEDURE GetPos(s:STREAM;VAR pos:LONGINT);
END Streams.
!Funky!Stuff!
echo x - Terminal.DEF
cat >Terminal.DEF <<'!Funky!Stuff!'
DEFINITION MODULE Terminal;
(* A.Wespisser, 20-NOV-84
*---------------------------
* J.Wyttenbach, 11-jan-85
* B.Campbell, 10-FEB-86
*
* NOTE: - The procedures "KeyPress" and "GotoXY" and "ClearTerminal" are
* not contained in module "Terminal" on SMAKY8.
* - "BusyRead", "ReadString", "KeyPress" and "GotoXY" and
* "ClearTerminal" are not required by the compiler itself.
*)
EXPORT QUALIFIED Write, WriteString, WriteLn, Read, ReadString, ReadLn,
BusyRead, ReadAgain,KeyPress, GotoXY, ClearTerminal;
PROCEDURE Write (ch: CHAR);
PROCEDURE WriteString(VAR s:ARRAY OF CHAR);
PROCEDURE WriteLn; (*terminate line*)
PROCEDURE Read(VAR ch:CHAR);
PROCEDURE ReadString(VAR s:ARRAY OF CHAR);
PROCEDURE ReadLn (VAR s:ARRAY OF CHAR);
PROCEDURE BusyRead(VAR ch:CHAR);
PROCEDURE ReadAgain;
(* causes the last character read to be returned again
* upon the next call of Read
*)
PROCEDURE KeyPress():BOOLEAN;
PROCEDURE GotoXY(x,y:CARDINAL); (* Move to column x, row y *)
PROCEDURE ClearTerminal;
END Terminal.
!Funky!Stuff!
echo x - TextEdit.DEF
cat >TextEdit.DEF <<'!Funky!Stuff!'
DEFINITION MODULE TextEdit;
FROM SYSTEM IMPORT ADDRESS;
FROM MacSYSTEM IMPORT Handle,LONGINT,OSErr;
FROM QuickDraw IMPORT Style,Rect,Point,GrafPtr;
EXPORT QUALIFIED
teJustLeft,teJustCenter,teJustRight,
CharsHandle,CharsPtr,Chars,TEHandle,TEPtr,
TERec,
DoubleTime,CaretTime,TEScrpHandle,TEScrpLength,
TENew,TEDispose,TESetText,TEGetText,
TEIdle,TEClick,TESetSelect,TEActivate,TEDeactivate,
TEKey,TECut,TECopy,TEPaste,TEDelete,TEInsert,
TESetJust,TEUpdate,TextBox,TEScroll,
TEFromScrap,TEToScrap,TEScrapHandle,TEGetScrapLen,TESetScrapLen,
SetWordBreak,SetClikLoop,TECalText;
CONST
teJustLeft = 0;
teJustCenter = 1;
teJustRight = -1;
TYPE
Chars = ARRAY [0..32000] OF CHAR;
CharsPtr = POINTER TO Chars;
CharsHandle = POINTER TO CharsPtr;
TERec = RECORD
destRect: Rect;
viewRect: Rect;
selRect: Rect; (* used from assembly *)
lineHeight: INTEGER;
fontAscent: INTEGER;
selPoint: Point;
selStart: INTEGER;
selEnd: INTEGER;
active: INTEGER;
wordBreak: ADDRESS; (* ADDRESS of wordBreak Routine*)
clikLoop: ADDRESS; (* ADDRESS of clikLoop Routine *)
clickTime: LONGINT;
clickLoc: INTEGER;
caretTime: LONGINT;
caretState: INTEGER;
just: INTEGER;
teLength: INTEGER;
hText: Handle;
recalBack: INTEGER;
recalLines: INTEGER;
clikStuff: INTEGER;
crOnly: INTEGER;
txFont: INTEGER;
txFace: Style;
txMode: INTEGER;
txSize: INTEGER;
inPort: GrafPtr;
highHook: ADDRESS;
caretHook: ADDRESS;
nLines: INTEGER;
lineStarts: ARRAY [0..16000] OF INTEGER;
END;
TEPtr = POINTER TO TERec;
TEHandle = POINTER TO TEPtr;
VAR
DoubleTime[02F0H]: LONGINT;
CaretTime[02F4H]: LONGINT;
TEScrpHandle[0AB4H]: Handle;
TEScrpLength[0AB0H]: LONGINT;
PROCEDURE TENew(VAR destRect,viewRect:Rect):TEHandle;
(* VAR is for Modula is really by value *)
PROCEDURE TEDispose(hTE:TEHandle);
(* Accessing the Text of an Edit Record *)
PROCEDURE TESetText (text:ADDRESS;length:LONGINT;hTE:TEHandle);
PROCEDURE TEGetText (hTE: TEHandle):CharsHandle;
(*Insertion Point and Selection Range*)
PROCEDURE TEIdle (hTE:TEHandle);
PROCEDURE TEClick (pt:Point;extend:BOOLEAN;hTE:TEHandle);
PROCEDURE TESetSelect (selStart,selEnd: LONGINT; hTE:TEHandle);
PROCEDURE TEActivate (hTE: TEHandle);
PROCEDURE TEDeactivate (hTE:TEHandle);
(* Editing *)
PROCEDURE TEKey (key:CHAR;hTE:TEHandle);
PROCEDURE TECut (hTE:TEHandle);
PROCEDURE TECopy (hTE:TEHandle);
PROCEDURE TEPaste (hTE:TEHandle);
PROCEDURE TEDelete (hTE: TEHandle);
PROCEDURE TEInsert (text:ADDRESS;length:LONGINT;hTE:TEHandle);
(* Text Display and Scrolling *)
PROCEDURE TESetJust (just:INTEGER;hTE:TEHandle);
PROCEDURE TEUpdate (VAR rUpdate: Rect; hTE:TEHandle);
PROCEDURE TextBox (text:ADDRESS;
length:LONGINT;
VAR box:Rect;
just:INTEGER);
PROCEDURE TEScroll (dh,dv:INTEGER;hTE:TEHandle);
(* Scrap Handling *)
PROCEDURE TEFromScrap():OSErr;
PROCEDURE TEToScrap():OSErr;
PROCEDURE TEScrapHandle():Handle;
PROCEDURE TEGetScrapLen():LONGINT;
PROCEDURE TESetScrapLen(length:LONGINT);
(* Advanced Routine *)
PROCEDURE SetWordBreak(wBrkProc:ADDRESS; hTE: TEHandle);
PROCEDURE SetClikLoop(clickProc:ADDRESS; hTE: TEHandle);
PROCEDURE TECalText (hTE:TEHandle);
END TextEdit.
!Funky!Stuff!
echo x - Toolbox.DEF
cat >Toolbox.DEF <<'!Funky!Stuff!'
DEFINITION MODULE Toolbox;
(* Cursor routines and constants moved to Cursors *)
(* GetPic moved to Pictures *)
FROM SYSTEM IMPORT ADDRESS;
FROM MacSYSTEM IMPORT LONGINT,Handle,Fixed,Int64Bit,StringHandle;
FROM QuickDraw IMPORT Pattern,Str255,Point,Rect;
EXPORT QUALIFIED
(*CONST*)
sysPatListID,PatPtr,PatHandle,
(*VAR*)
ScrVRes,ScrHRes,
(*math*)
FixRatio,FixMul,FixRound,
(*strings*)
NewString,SetString,GetString,GetIndString,
(*byte manipulation*)
Munger,PackBits,UnpackBits,
(*bit Manipulation*)
BitTst,BitSet,BitClr,
(*Logical Operations*)
BitAnd,BitOr,BitXor,BitNot,BitShift,
(*Other Operations on Long Integers*)
HiWord,LoWord,LongMul,
(* Graphics Utilities *)
ScreenRes,GetIcon,PlotIcon,GetPattern,GetIndPattern,
(* Miscellaneous Utilities *)
Random,StuffHex,DeltaPoint,SlopeFromAngle,AngleFromSlope;
CONST
sysPatListID = 0;
TYPE
PatPtr = POINTER TO Pattern;
PatHandle = POINTER TO PatPtr;
VAR
ScrHRes[0104H]:INTEGER;
ScrVRes[0102H]:INTEGER;
PROCEDURE FixRatio(numer,denom:INTEGER):Fixed;
PROCEDURE FixMul(a,b:Fixed):Fixed;
PROCEDURE FixRound(x:Fixed):INTEGER;
(*String*)
PROCEDURE NewString(VAR theString:ARRAY OF CHAR):StringHandle;
PROCEDURE SetString(h:StringHandle;VAR theString:ARRAY OF CHAR);
PROCEDURE GetString(StringID:INTEGER):StringHandle;
PROCEDURE GetIndString(VAR theString:ARRAY OF CHAR;strListID:INTEGER;
index:INTEGER); (* no trap macro *)
(*byte manipulation*)
PROCEDURE Munger(h:Handle;offset:LONGINT;ptrl:ADDRESS;len1:LONGINT;
ptr2:ADDRESS;len2:LONGINT):LONGINT;
PROCEDURE PackBits(VAR srcPtr,dstPtr:ADDRESS; srcBytes:INTEGER);
PROCEDURE UnpackBits(VAR srcPtr,dstPtr:ADDRESS; dstBytes:INTEGER);
(*bit Manipulation*)
PROCEDURE BitTst(bytePtr:ADDRESS;bitNum:LONGINT):BOOLEAN;
PROCEDURE BitSet(bytePtr:ADDRESS;bitNum:LONGINT);
PROCEDURE BitClr(bytePtr:ADDRESS;bitNum:LONGINT);
(*Logical Operations*)
PROCEDURE BitAnd(val1,val2:LONGINT):LONGINT;
PROCEDURE BitOr (val1,val2:LONGINT):LONGINT;
PROCEDURE BitXor(val1,val2:LONGINT):LONGINT;
PROCEDURE BitNot(val:LONGINT):LONGINT;
PROCEDURE BitShift(value:LONGINT;count:INTEGER):LONGINT;
(*Other Operations on Long Integers*)
PROCEDURE HiWord(x:LONGINT):INTEGER;
PROCEDURE LoWord(x:LONGINT):INTEGER;
PROCEDURE LongMul(a,b:LONGINT;VAR dest:Int64Bit);
(* Graphics Utilities *)
PROCEDURE ScreenRes(VAR scrnHRes,scrnVRes:INTEGER);
PROCEDURE GetIcon(iconID:INTEGER):Handle;
PROCEDURE PlotIcon(theRect:Rect;theIcon:Handle);
PROCEDURE GetPattern(patID:INTEGER):PatHandle;
PROCEDURE GetIndPattern(VAR thePattern:Pattern;patListID:INTEGER;
index:INTEGER); (* no trap macro *)
(* ShieldCursor Left here because of cyclic input *)
(* Miscellaneous Utilities *)
PROCEDURE Random ():INTEGER;
PROCEDURE StuffHex (thingPtr:ADDRESS;VAR s:ARRAY OF CHAR);
PROCEDURE DeltaPoint(ptA,ptB:Point):LONGINT;
PROCEDURE SlopeFromAngle(angle:INTEGER):Fixed;
PROCEDURE AngleFromSlope(slope:Fixed):INTEGER;
END Toolbox.
!Funky!Stuff!
echo x - WindowManager.DEF
cat >WindowManager.DEF <<'!Funky!Stuff!'
DEFINITION MODULE WindowManager;
FROM SYSTEM IMPORT ADDRESS,WORD;
FROM MacSYSTEM IMPORT LONGINT,Handle,StringHandle;
FROM QuickDraw IMPORT GrafPort,GrafPtr,Point,VHSelect,Rect,RgnHandle;
FROM Pictures IMPORT PicHandle;
FROM EventManager IMPORT EventRecord;
EXPORT QUALIFIED
(*CONST*)
(* Window definition procedure IDs *)
documentProc,dBoxProc,plainDBox,altDBoxProc,noGrowDocProc,
rDocProc,
(* Types of Windows *)
dialogKind,userKind,
(* FindWindow result codes *)
inDesk,inMenuBar,inSysWindow,inContent,inDrag,inGrow,inGoAway,
(* Axis constraints for DragGrayRgn call *)
noConstraint,hAxsOnly,vAxsOnly,
(* Window Messages *)
wDraw,wHit,wCalcRgns,wNew,wDispose,wGrow,wDrawGIcon,
(* ... hit test codes *)
wNoHit,wInContent,wInDrag,wInGrow,wInGoAway,
deskPatID,
(*TYPE*)
WindowPtr,WindowPeek,WindowRecord,
(*PROCS*)
NewWindow,GetNewWindow,CloseWindow,DisposeWindow,
SetWTitle,GetWTitle,SetWRefCon,GetWRefCon,
HideWindow,ShowWindow,ShowHide,
MoveWindow,
SizeWindow,
FrontWindow,BringToFront,SendBehind,
HiliteWindow,
DrawGrowIcon,
BeginUpdate,EndUpdate,
InvalRect,InvalRgn,ValidRect,ValidRgn,
SetWindowPic,GetWindowPic,
FindWindow,
SelectWindow,
DragWindow,GrowWindow,TrackGoAway,
GetWMgrPort;
CONST
(* Types of Windows *)
dialogKind = 2;
userKind = 8;
(* Window definition procedure IDs *)
documentProc = 0;
dBoxProc = 1;
plainDBox = 2;
altDBoxProc = 3;
noGrowDocProc = 4;
rDocProc = 16;
(* FindWindow result codes *)
inDesk = 0;
inMenuBar = 1;
inSysWindow = 2;
inContent = 3;
inDrag = 4;
inGrow = 5;
inGoAway = 6;
(* Axis constraints for DragGrayRgn call *)
noConstraint = 0;
hAxsOnly = 1;
vAxsOnly = 2;
(* Window Messages *)
wDraw = 0;
wHit = 1;
wCalcRgns = 2;
wNew = 3;
wDispose = 4;
wGrow = 5;
wDrawGIcon = 6;
(* ... hit test codes *)
wNoHit = 0;
wInContent = 1;
wInDrag = 2;
wInGrow = 3;
wInGoAway = 4;
(* Resource ID of desktop pattern *)
deskPatID = 16;
TYPE
WindowPtr = GrafPtr;
WindowPeek = POINTER TO WindowRecord;
WindowRecord = RECORD
port: GrafPort; (* Graphics port for this window *)
windowKind: INTEGER; (* Window Class *)
visible: BOOLEAN;
hilited: BOOLEAN;
goAwayFlag: BOOLEAN;
spareFlag: BOOLEAN;
strucRgn: RgnHandle; (* Handle to structure region *)
contRgn: RgnHandle; (* Handle to content region *)
updateRgn: RgnHandle; (* Handle to update region *)
windowDefProc: Handle; (* Handle to Window Definition
* function
*)
dataHandle: Handle; (* Handle to definition function's
* data
*)
titleHandle: StringHandle;(*Handle to window's title *)
titleWidth: INTEGER; (* Private *)
controlList: Handle;
nextWindow: WindowPeek;
windowPic: PicHandle;
refCon: LONGINT
END;
PROCEDURE NewWindow(wStorage:ADDRESS;
VAR windowRect: Rect;
VAR title: ARRAY OF CHAR;
visible: BOOLEAN;
windowType: INTEGER;
behindWindow: WindowPtr;
hasClose: BOOLEAN;
refCon: LONGINT):WindowPtr;
PROCEDURE GetNewWindow(templateID:INTEGER;
wStorage: ADDRESS;
behindWindow: WindowPtr):WindowPtr;
PROCEDURE CloseWindow(theWindow:WindowPtr);
PROCEDURE DisposeWindow(theWindow:WindowPtr);
PROCEDURE SetWTitle(theWindow:WindowPtr;VAR newTitle:ARRAY OF CHAR);
PROCEDURE GetWTitle(theWindow:WindowPtr;VAR theTitle:ARRAY OF CHAR);
PROCEDURE SetWRefCon(theWindow:WindowPtr;newRefCon:LONGINT);
PROCEDURE GetWRefCon(theWindow:WindowPtr):LONGINT;
PROCEDURE HideWindow(theWindow:WindowPtr);
PROCEDURE ShowWindow(theWindow:WindowPtr);
PROCEDURE ShowHide(theWindow:WindowPtr;showFlag:BOOLEAN);
PROCEDURE MoveWindow(theWindow: WindowPtr;
hGlobal,vGlobal: INTEGER;
active: BOOLEAN);
PROCEDURE SizeWindow
(theWindow: WindowPtr;
newWidth,newHeight: INTEGER;
update: BOOLEAN);
PROCEDURE FrontWindow():WindowPtr;
PROCEDURE BringToFront(theWindow:WindowPtr);
PROCEDURE SendBehind(theWindow:WindowPtr;behindWindow:WindowPtr);
PROCEDURE HiliteWindow(theWindow:WindowPtr;onOrOff:BOOLEAN);
PROCEDURE DrawGrowIcon(theWindow:WindowPtr);
PROCEDURE BeginUpdate(theWindow:WindowPtr);
PROCEDURE EndUpdate(theWindow:WindowPtr);
PROCEDURE InvalRect(VAR badRect:Rect);
PROCEDURE InvalRgn(badRegion:RgnHandle);
PROCEDURE ValidRect(VAR goodRect:Rect);
PROCEDURE ValidRgn(goodRegion:RgnHandle);
PROCEDURE SetWindowPic (theWindow:WindowPtr;thePicture:PicHandle);
PROCEDURE GetWindowPic(theWindow:WindowPtr):PicHandle;
PROCEDURE FindWindow(MousePoint:Point;VAR theWindow:WindowPtr):INTEGER;
PROCEDURE SelectWindow(theWindow:WindowPtr);
PROCEDURE DragWindow
(theWindow:WindowPtr;
startPoint:Point;
LimitRect:Rect);
PROCEDURE GrowWindow
(theWindow: WindowPtr;
startPoint: Point;
sizeRect: Rect):LONGINT;
PROCEDURE TrackGoAway(wind:WindowPtr;start:Point):BOOLEAN;
PROCEDURE GetWMgrPort(VAR wMgrPort:GrafPtr);
END WindowManager.
!Funky!Stuff!