IAC Driver Demo (code)
Volume Number: 4
Issue Number: 11
Column Tag: Advanced Mac'ing
IAC Driver Demo in MPW C (code)
{1}
Listing: Editor.b
### Editor.b - Build the sample editor
#
# Usage:
# Set exit [0 | 1];
# If exit == 0, all compiles and assemblies will be completed. If
any errors occur, subsequent steps will be skipped. If exit == 1, the
procedure stops after the first error occurs.
#
# Set hlxSrc “source directory”; Export hlsSrc
# Set hlxEtc “result directory”; Export hlsEtc
# Set hlxProg “auxiliary program”; Export hlsProg
# general.b [ -r | -m] [makeParams]
# # -r Repeat previous build, using existing
“{hlxEtc}makeout”. (Actually, this option merely suppresses the
“makeout” creation.)
# # Must be the first (and only) parameter.
# # -m Make “{hlxEtc}makeout”, but do not execute it.
# # Must be the first parameter.
# # makeParams Additional parameters to make; e.g.:
# # -d pr=”-p” Report progress
# # -d e=”#” Suppress log detail
# # -e Make everything.
# # -t Merely touch dates to bring everything
up-to-date.
open “{log}”
#open “{worksheet}”
echo ‘Date -a -t‘ ‘Date -s -d‘ Start {hlxAlt} >> “{log}”
cd “{hlxSrc}”
set result Done
if “{1}” == “-m”
set result Made
shift 1
end
if “{1}” <> “-r”
If {result} == Done
echo set err 0 > “{hlxEtc}makeout”
unset err
make {“parameters”} -f {hlxprg}.m >> “{hlxEtc}makeout”
end || Set result Failed
end
if {result} == “Done”
“{hlxEtc}makeout” || Set result Failed
end
echo ‘Date -a -t‘ ‘Date -s -d‘ {result} >> “{log}”
{MacAppDone}
exit 1 If result == Failed
{2}
Listing: Editor.m
# Make file for the Sample IAC-friendly Editor
ob = {hlxEtc} #Set these definitions to your normal working
directories
sr = {hlxSrc}
prog = {hlx}
e = echo
COptions = -o {ob} -g -q2
AOptions = -i {mpw}AIncludes -o “{ob}”
“{prog}Editor” àEditor.r {ob}Editor.code
{e} ‘Date -a -t‘ Rez Editor >> “{log}”
Rez Editor.r -o “{prog}Editor” -t APPL -c IAC1
Setfile -a b “{prog}Editor” #set bundle bit
{ob}Editor.code à{ob}Editor.c.o {ob}IAC.c.o ∂
{ob}SysEnv.a.o {ob}Doc_rtns.c.o ∂
{ob}Edit_IAC_rtns.c.o {ob}Edit_rtns.c.o ∂
{ob}Editor.a.o {ob}Boxes.c.o
exit 1 if {err} <> 0
{e} ‘Date -a -t‘ Link Editor >> “{log}”
Link {ob}Editor.c.o {ob}IAC.c.o {ob}SysEnv.a.o ∂
{ob}Doc_rtns.c.o {ob}Edit_IAC_rtns.c.o {ob}Edit_rtns.c.o
{ob}Editor.a.o {ob}Boxes.c.o ∂
“{CLibraries}”CRuntime.o ∂
“{CLibraries}”CInterface.o ∂
“{CLibraries}”StdCLib.o ∂
“{CLibraries}”CSANElib.o ∂
“{Libraries}”Interface.o ∂
-t “OBJ “ -o {ob}Editor.code
{ob}Editor.c.o á{sr}Editor.c {sr}IAC.h {sr}Editor.h
{e} ‘Date -a -t‘ C Editor >> “{log}”
C {COptions} Editor.c || set err 1
{ob}IAC.c.o à{sr}IAC.c {sr}IAC.h
{e} ‘Date -a -t‘ C IAC >> “{log}”
C {COptions} IAC.c || set err 1
{ob}SysEnv.a.o á{sr}SysEnv.a
{e} ‘Date -a -t‘ Asm SysEnv >> “{log}”
Asm {AOptions} SysEnv.a || Set err 1
{ob}Editor.a.o á{sr}Editor.a
{e} ‘Date -a -t‘ Asm Editor.a >> “{log}”
Asm {AOptions} Editor.a || Set err 1
{ob}Doc_rtns.c.o ï{sr}Doc_rtns.c {sr}IAC.h {sr}Editor.h
{e} ‘Date -a -t‘ C Doc_rtns >> “{log}”
C {COptions} Doc_rtns.c || set err 1
{ob}Edit_IAC_rtns.c.o ï{sr}Edit_IAC_rtns.c {sr}IAC.h
{sr}Editor.h
{e} ‘Date -a -t‘ C Edit_IAC_rtns >> “{log}”
C {COptions} Edit_IAC_rtns.c || set err 1
{ob}Edit_rtns.c.o ï{sr}Edit_rtns.c {sr}IAC.h {sr}Editor.h
{e} ‘Date -a -t‘ C Edit_rtns >> “{log}”
C {COptions} Edit_rtns.c || set err 1
{ob}Boxes.c.o ï{sr}Boxes.c {sr}IAC.h {sr}Editor.h
{e} ‘Date -a -t‘ C Boxes >> “{log}”
C {COptions} Boxes.c || set err 1
{3}
Listing: Editor.h
/*
* Resource ID constants.
*/
# define appleID 128