Article View: comp.sys.atari.st
Article #38851Re: German MODULA2 compiler
From: Piet van Oostrum
Date: Wed, 17 May 1989 10:25
Date: Wed, 17 May 1989 10:25
230 lines
13118 bytes
13118 bytes
In article <2971@ncsuvx.ncsu.edu>, mark@ncsuvx (Mark Boyd) writes:
`
`I have been unable to invoke the editor from within the modula shell.
`I tried renaming gnome to editor.prg, but it didn't work. Any suggestions
`on an available ( pd ) editor to use with this environment?
`
I tried to use xmg (``micro-gnu-emacs''), but had a few problems:
1. There was no cursor
2. The environment was empty, so xmg didn't know where to get its init file
Modula doesn't seem to pass the environment.
3. I don't like to have two copies of the same program (xmg.ttp/editor.prg)
So I decided to write a ``glue'' program that:
- enables the cursor
- finds an environment in an ancestor with the EDITOR variable set
- starts the program that is in that variable with that environment.
I wrote it in C because of the environment handling routines, and compiled
it with sozobon. The binary is about 6KB, because of all the stdio stuff.
If somebody is willing to take that out by using <minimum.h> (s)he has my
blessing. I am posting it here, I don't think it is worth the effort
sending it to the sources/binaries group.
---------------------------editor.c---------------------------
/* Modula-2 editor glue program */
/* By Piet van Oostrum, <piet@cs.ruu.nl> */
#include <basepage.h>
#include <stdio.h>
#include <osbind.h>
#define DEF_EDIT "c:\bin\xmg.ttp"
extern char *getenv();
extern char *_envp;
main(argc, argv)
int argc; char **argv;
{
char *program, buf[80], command[128];
int status;
BASEPAGE *bp = _base;
printf ("\033e"); /* cursor on */
/* search for environment */
/* modula-2 does not pass the environment, */
/* so we also look in parents' environment */
while (bp) {
_envp = bp->p_env;
bp = bp->p_parent;
program = getenv("EDITOR");
if (program && *program) break;
}
if (!program || !*program)
program = DEF_EDIT;
if (argc == 1) command[0] = 0;
else {
strcpy (&command[1], argv[1]);
command[0] = (char) strlen(argv[1]);
}
status = (int) Pexec (0, program, command, _envp);
if (status) {
fprintf (stderr, "Can't execute %s - error %d\n",
program, status);
}
printf ("\033f"); /* cursor off */
return status;
}
--------------------------editor.prg--------------------------
table
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 editor.prg
M8!H !<N #(@ $H "I/*&\ !"/, :4"8L C6z
MK ,(\, !I4)BP $-:L !0CPP &E@F+ 8UJP '"/# :7"/# :8"/Ly
M "P !ID0>P @! 82( _ "\(3KD -.7(\F.0 &F F0T2#UJP !):\ "x
M "1\ :3"0*9PXD$FH0U(.TO ! !L!B0\ $ +2#;1@O/ %RX_/ )w
M3D%<CS\\_]D_/ !,3D'4BRY"E(PO B\,0F<_/ !*3D'?_ Q.N0 CP_v
M0 $2I\_/ !,3D$CWP &FA.06 L(]\ !IH3DU@(B/? ::$Y.8!@CUP u
M&F@NCBQ/2J8P+@ ((BX "DY"+%^_^0 &F!N&"\\ 70C\\ E.05R//SS_t
M_S\\ $Q.02\Y ::$YU3KD %"+WQD3&EB<R!V,2XR !.5O\F+7D !I0s
M_R8O/ %Y!.N0 "3I83TJN_R9G,B!N_R8CZ L :9"!N_R8M: D_R8Or
M/ %XE.N0 !;983RU __QGT"!N__Q*$&?(2J[__&<((&[__$H09@@M? q
M%WS__ QN $ "&9:0B[_+"\Y :9$AN_RPO+O_\0F<_/ !+3KD #0WOP p
M$#U _RIG'C\N_RHO+O_\+SP !=?+SP !>X3KD CZWOP #B\\ 77$ZYo
M ).C N_RI.7DYU(&X "D'H 0O$$AN_RU.N0 $2Y03R!N I!Z $+Q!.n
MN0 $0Y83QU _RQ@ /]\3E8 $CG&!!"0R9\ 7E+9\ 5L(#\K Q.N0 m
M!AI43TI 9P8 :P ( I20]?\ $F#:+SD !ID+SD !=8/SD !=63KD l
M %"WOP "D)G80I43TS?"!A.7DYU3E8 $CG& !"0[9\ !1L.C \ !+!PTC k
MT+P !>4($ X* *, 3 ? #9QHP/ 2P<-(P-"\ 7E"! 2%!.N0 !G18j
M3U)#8, _+@ (3KD #(5$],WP 83EY.=4Y6 !(YQ 0-BX "# #4D# ?/_^i
M-@ _ TZY 5>%1/)D"W_ !G"B +3-\("$Y>3G4O/ &1H_/ )3KD h
M #07$\_//_93KD #(5$]@V$Y6 !(YQP<+SP !C\3KD 6V6$\H0+G\g
M &<N>@!*%&<F$!1(@#\ +SP !D!3KD !(:7$_ ? /2, B!>F!@H Jf
M 5*,8-8F1;G\ &<L/SP !"\\ 8_$A33KD !'<WOP "DI 9A(@>0 e
M&E @*P .L*@ )&< 1HV+@ ,/P,O+@ (, -20#\ 80#_&%1/+P!.N0 $4+>d
M_ **$!(PT'T. !"$#\\ 1A /[X5$\J0"/- 76"J\ 9&3@\ $O/ c
M&18O#$ZY 0F%!/*$"Y_ !G*C\\ 1A /["5$\J0%)$*HPO/ &1-"b
MITZY 0F%!/*$"Y_ !FUC\\ 1A /Z85$\J0$*5,\0 !=6('D !=8a
M2I!G#"!Y 76"!02A!F'B!Y :4"AH "2Y_ !F%"!Y 76""\ 9z
M$DS?.#A.7DYU0>P ?"A00>P -BA0+PQ.N0 $0Y83U) /P!A /XR5$\@>0 y
M%U@@@"\,('D !=8+Q!.N0 $2Y03V"\."L !#/$ 75C $4D#E0#8 /P-Ax
M /W\*D CS0 %U@^@R\K 8O#4ZY 2;M[\ HP!.5 2,#0C2! 0I O%4ZYw
M 1#EA/4D _ &$ _<143RA +Q4O#$ZY 1+E!/*H!8C4J59M9@ /\>3E8 v
M $CG$!@F;@ (*'D !IDN?P 9@IP $S?& A.7DYU+PM.N0 $0Y83S8 u
M2A1G*DC#0?0X P0 #UF&#\#+PLO#$ZY 1W-[\ I*0&8$( Q@Q$H<9]1@t
M^G 8+I.5@ 2.<0'"9N @O"TZY 1#C8 +HMAA%A/*$"Y_ !G.C #s
M4D!(P-G 2A1F+DOL %*%68*( Q,WS@(3EY.=4H59PH,%0 ]9P12C6#R2A5Gr
M!" ,8.(@#%* 8-P@#SE8 $CG& V+@ (/SP 3\#+SP !/SP 0DZYq
M T-[\ HH $J$;R0_/ !/P,O//____\_/ !"3KD #0WOP "D) 3-\ p
M&$Y>3G5*A%? P'P 6#N3E8 $CG$! F;@ (M_P 9@PP//__3-\("$Y>o
M3G4V*P *, / ? #2D!F!C \__]@Y"\+3KD K26$\,:P0 YG#$*K 9"n
MJP "0FL #D)K HP \!\ AG!$) 8+8_*P ,3KD >R5$\V &<($#P _TB m
M8)X0/ 8/9.5@ 2.<<$"9N @V+@ ,."X #D)G+PM.N0 !]1<3TI 9WPPl
M \!\ *"P? "@9A0S_/^; 75# \_YM,WP@X3EY.=3 #P'P 0&<Z0F<O"TZYk
M 5EEQ/.@!*16T8, / ? 09Q _/ "0J<_!4ZY /Y%!/NGS__6P&,\4 j
M !=4, 5@MC #P'P S\ +PL_/ ]3KD #04$\Z &"Z, / ? @9Q _!"\+i
M3KD !667$\Z &"B.CS_WV"<3E8 #\N @_/ ^3KD #0,\ !=4,#D h
M !=43EY.=4Y6 O"S\\ "].N0 -!43R9 +SP !IL/SP &DZY T%Q/g
M,"X #,!\ )G1! \ !9(@#U P_+@ ,+RX "#\\ $Y.N0 -!03S/ 7f
M5"\+/SP &DZY T%Q/2GD !=45\# ? !)E].7DYU$#P %V"Z3E8 $CGe
M !@F;@ (*&X #$)G+PMA /]P7$]*0&=H0=1#^0 &FPP/ 6,-E1R/_\0D 0d
M+ 5P'P 6=$,#P 0($L !5!ZP !#! .F8@$!-(@(!\ ""0? !A&4 +!E\c
M $ +4) 3-\8 $Y>3G4_/ 93KD #05$]"01( 8-HP/ # 8+HP//__8-I.b
M5@ 0F<O+@ (80#^[DI 9PH@.0 &H9.7DYU</]@^$Y6 !(;@ 0+RX #"\\a
M )?B\N A.N0 "\I.7DYU3E8 "\N ! O+@ ,+SP E^+RX "$ZY +z
MRDY>3G5.5@ 2&X #"\N @O/ "7XO/ %Z9.N0 "\I.7DYU3E8 "\Ny
M PO+@ (+SP E^+SP !>F3KD O*3EY.=4Y6 !(YQ\0%BX "29N I"x
M1@!K ( "C@K HP!,!\ )G"# $P'Q0 &<,,#S__TS?"/A.7DYU2JL !F8*w
M+PM.N0 "GI83S $P'P !&8.MCP "F8(%CP #3P\ $@*P "4JL B! $(-2v
M4S 3L&L #FTP0E,G:P & (Z*P ./P4O*P &/RL #$ZY 0+%!//@"^16<,u
M &M *,#S__V",2D9G#+8\ UF!A8\ I@JD) $ -@ /]V3E8 $CG$! Ft
M.0 &D@C^0 &2X !I(/RX "$ZY 4]%1/)D CPP &2XC^0 &2X !I(s
M( M,WP@(3EY.=4Y6 O"R9N @P*P *P'P$ &84-WP$ ./SP$ &&@5$\Gr
M0 &9B@":_K_ H :P0 I!ZP 0)T@ !C=\ $ #B=K 8 D)3)E].7DYUq
M &L( *8.I.5@ 2.<8$"9N BW_ !G#B\+84Q83TS?"!A.7DYU0D2Xp
M? 4;#8P/ 2P<1(P-"\ 7E"! -B@ "C #P'P V<6,#P $L'$2,#0O o
M%Y0@0$A080I83U)$8,1"0&"V3E8 $CG'A F;@ (0D2W_ !F"D) 3-\(n
M>$Y>3G4V*P *, / ? (9@@P \!\ -F!$) 8.!*4V<H, / ? " 9RP_$R\Km
M 8_*P ,3KD ! L4$^P4V<* &M *.#S__R=K 8 D)3, 1@J# 31$!(l
MP"P /SP 2\&/RL #$ZY /Y%!/2D!LUC@\__]@T$Y6_[9(YQX<)FX $"ANk
M !1"1$H39P !I P3 "5F "J0D5"+O_X'7P (/_Y/7S____Z0F[__#U\____j
M_AU\ K_]TON_[="1D)#4HMP ! 3T+P !E(($!"0! 0P'P F<X0D 0$Y!\i
M # R/ *P\/20#8!2F[__&<&/4/__F#*2D-F$ PN "#_^68('7P ,/_Y8+0]h
M0__Z8+!"0! 3L'P /&QTL'P &=JL'P (&=$L'P *F=&L'P *V<XL'P +6<Jg
ML'P +F<:(&X #"\N @0$TB /P!.D%Q/4D12BV _S(]? !__Q@ /]>.CP f
M 6 _U8=4__X8 #_3C8<2F[__&<(/4/__F _SX]0__Z8 #_-E.+8+"P? !8e
M;:JP? !X;J20? !82,#E@"![" 1.T #E@ Z& .A@ #H8 Z& .d
MA@ #H8 Z& .A@ #H8 WV .8@ #98 Z& .A@ #H8 Z&c
M -E@ #H8 Z& -C@ #H8 Z& ..@ #D( Z& .A@ #GX b
M Z& .8 #H8 Z& .6& _R0P!$S?.'A.7DYU/#P 6 _GX_/ *a
M+PU*1F=0(!0O $ZY /DM[\ I*1F<X2>P !#\N__X_+O_Z$"[_^4B /P 0z
M+O_X2( _ #\%+PTO+@ ,+RX "$ZY .BM[\ !;80& _KY)[ "8,8P%$C y
M8*P=? "__<0+O_W2( _ "\-2D9G*B 4+P!.N0 #SS>_ *2D9G!$GL 0,x
M$P!X9I O#2\-3KD !%N4$]@@G ,!Q@TAU\ C_]V"Z/#P 1U\ ##_^3U\w
M ;_^CU\ C__AU\ !#_]V"<8)H@3%2,&J@ 4'M %"$$(N__@=? @__E@v
M /\Z*E1)[ $8.I@ /X*3E8 $CG'QPF;@ (*&X #"IN ! 6+@ 7."X &D)%u
M+PU.N0 $0Y83SP #!4 +69Z%AT,;O__ !QG"KQN !QO!#PN !RX1FP". 8Zt
M!)A&2D1F!$I&9TI*;@ 49C!*1&<L2D9G($H#9QP,+@ P !EF%!X#0@-31B\+s
M$ =(@#\ 3I1<3V#*'BX &5-$8.I*1F<(2@-FW!X=8-P>+@ 94T1@UC %3-\Xr
M^$Y>3G5* V>$4D9@@$Y6 !(YQ@8)BX ""9N PX+@ 0*$M(Q"\$+P-.N0 q
M%F903]"\ 9,B! &-!(Q"\$+P-.N0 %DY03R8 2H-BU$(4+PM.N0 $:I8p
M3TS?&!A.7DYU3E8 $CG$!@F+@ ()FX #"A+2H-L"AC\ "T@ T2 )@ _+@ 0o
M+PPO V& WOP "B +3-\8"$Y>3G5.5@ /RX #B\N HP+@ (2, O &&R3EY.n
M=4Y6 O S\N X_+@ (+RX "C\\ $).N0 -#>_ *)@!*@VP&,\, !=4m
M( ,F'TY>3G5.5@ /SP 4*G/RX "&&\3EY.=4Y6 O R\N IP # N XOl
M #\N @_/ ! 3KD #0WOP #"8 2H-L!C/# 75# #)A].7DYU3E8 "\#k
M+RX "B\N X_+@ (/SP 0$ZY T-[\ PF $J#; 8SPP %U0@ R8?3EY.j
M=4Y6 !(YP <)FX ""AN RW_ !F!B9Y 91$H39Q@0$TB /P O#$ZYi
M 25EQ/2H!G!%*+8.1*$V8*< !,WS@ 3EY.=2I+2A-G&! 32( _ "\,3KD h
M !)67$]*@&8$4HM@Y$H39P)"&R/+ 91" -8,I.5@ 2.<0$"9N A"0TH;g
M9P120V#X, -,WP@(3EY.=2)O 0@;P (0H 2V&;\("\ !$YU3E8 $CG$!PFf
M;@ (*&X ##8N ! J2S #4T-*0&<$%MQF]" -3-\X"$Y>3G5.5@ 2.< &"9Ne
M @H2TH39R 0$TB 2,#0O &4@@0$) $!# ? $9P0*$P @4HM@W" ,3-\8d
M $Y>3G5.5@ 2.<0&"9N @H2TH49Q12C$H49OI3C+G+8P@6%!B3%L-@\B Nc
M A,WQ@(3EY.=4Y6 !(YQ 8)FX ""AN PV+@ 04T-G&A 3L!1F%$H39@I"b
M0$S?& A.7DYU4HM2C&#B$!-(@!(42(&006#F3E8 $CG$!@F;@ (%BX #1 #a
M2( _ "\+3KD !)67$\H0+G\ &<,( R0BTS?& A.7DYU,#S__V#R(&\ z
M!# O BP$&8$( A.=4H89O1"@$YU(F\ !"!O A"@2(O P@"0@ &<$y
M$MA3@20!XHE@ C+84<G__ @" &<"$M@@+P $3G5.5@ ,"X "$C T+P x
M !E(($!"0! 0P'P "&<,,"X " I "!.7DYU,"X "&#V3E8 # N A(P-"\w
M 92"! 0D 0$,!\ 1G## N @*0 @3EY.=3 N A@]DY6 !(YQX8("X v
M"-"\ " ,"\___^ "H NKD !I(; P"PY :2$)#MGP $&P *PP ^5 u
M2,#0O &<@@0$J09P120V#B+SS_____/SP 2$ZY T%Q/* "0O @# t
MO/___@ H +B&;!"XA6P*< !,WQAX3EY.=2P%+P8_/ !(3KD #07$\F0# #s
MY4!(P-"\ 9R"! ((LP ^5 2,#0O &@@@0""&2?-H $'L__P@O( !)r
MZP $0>S__"",( 91@"B 0>P !$*00>L !$(0( M@F' 8)0L!6 _T1.5@ q
M2.<8'"9N @F+@ ,*%,H%" #4("X@&\DF(-+]#@ *(,JA$'L 1#[0 $(I Fp
MC1B\ ( @#$S?.!A.7DYU0>P !":08.I.5@ 2.<>'"8N @L/'____^;S4)$o
MN'P $&PZ, 3E0$C T+P !G(($ F4+?\ &8$4D1@WBA3N?P 9_(Jn
M%+J#;0BZAFP$+ 4J2T?L 1@XB -3-\X>$Y>3G5.5@ 2.<0$"8N BVO m
M 1N0'8(+P-AAEA/)D"W_ !F'"\#80#^1EA/)D"W_ !F"G 3-\(l
M"$Y>3G4O R\+80#_$%!/)D @"UB 8.8@ UJ P+S____^)@!@M$Y6 !P # Nk
M @O &&03EY.=4Y6 !(YQ 8,"X "DC +P!P # N @O $ZY 6#E!/)@ Oj
M V$ _V983R9 M_P 9PXH2R #4X-*@&<$0AQ@]" +3-\8"$Y>3G4@;P $i
M( BPN0 &EQM"M"\ ! +_ ;@1P_TYU(\@ !I@0H!.=3 O 1(P")Y :h
M8-")+P!AR%B/2D!G I/)( E.=4Y6 !(YQ@0)FX "#8N PO"S\\ $%.N0 g
M -!<3S@ 9P:X?/_?9A@P \!\ \_ "\+/SP /$ZY T%!/. SQ %U0Pf
M.0 %U1,WP@83EY.=2 O 1J D2 (B\ "&H(1($*+P" 1A ".2B\ !&H"e
M1(!.=2 O 1J D2 (B\ "&H(1($*+P" 1A3DHO 1J D2 3G4@+P $:@)$d
M@"(O AJ D2!84X@ 4HO 1J D2 3G4@+P $(B\ "&$X3G4@+P $(B\ "&$0c
M3G4@+P $(B\ "&$@( %.=21#- '$P"8!2$/&P$A P,'0@TA 0D#0@B8*3G5*b
M@68.@/P " \@ "( 3G4D0["!8A)G""( 0H F"DYU< %"@28*3G6RO a
M %F!D*!)@I.=;"\ #__V(0@,%(0$*!,@!"0$A )@I.=;*\ #__V(B) !"z
M0DA"A,%"@S8"2$,T (3!(@)"04A!0H P M"#)@I.=70!0H.R@&0&U(+2@6KVy
MLH!B!(:"D('BB>**9O(B " #)@I.=4YO="!E;F]U9V@@;65M;W)Y#0H 4W1Ax
M8VL@;W9E<F9L;W<-"@ ;9@!#86XG="!E>&5C=71E("5S("T@w
M97)R;W(@)60* &,Z"&EN>&UG+G1T< !%1$E43U( &V4 !v
M 0 $ @ ! $ O__ u
M $ @ " $ P # t
M s
M r
M q
M p
M o
M 'A!<F< ,#$R,S0Un
M-C<X.4%"0T1%1@ ( D ( D %1O;R!M86YY(&%R9W5M96YT<PH ! # Qm
M,C,T-38W.#E!0D-$148 ! 0$! 0$! 0$1$1$1$0$! 0$! 0$! 0$!l
M 0$! 0$! 1 @(" @(" @(" @(" @("!"0D)"0D)"0D)"(" @(" @($1$1$1$k
M1 0$! 0$! 0$! 0$! 0$! 0$! 0$(" @(" @2$A(2$A(" @(" @(" @(" @(j
M" @(" @(" @@(" @ 0 i
M h
M g
M $ $ (#@X.!@@2"!0B,!(*"@H8"!@(& @&%! &)!04f
M& 8&"@8<$AH0' 8&!C <"A H' H,$@8>!B@(#BH@!@H((@@@!@H,$@8<$@H(e
M#A8.&!@@&B J<B!4,#(:'AX.&!@>!@84"@HH" P(.%(L&@H6"A8&!A8&!DI*d
M.@8$"@H&!)H<9#1BX 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$c
H*C8T'("N"! 2>! \$"00)A(L%H*L?BX^"A8:,A 0K,HZ%A N( H& 0$b
a
end
--
Piet van Oostrum, Dept of Computer Science, University of Utrecht
Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
Telephone: +31-30-531806. piet@cs.ruu.nl (mcvax!hp4nl!ruuinf!piet)
Technical Details
Message-ID:
<1323@ruuinf.cs.ruu.nl>Path:
arc1-ca.pugleaf.net!utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!sun-barr!cs.utexas.edu!uunet!mcvax!hp4nl!ruuinf!pietReferences:
<8905091507.AA08429@ucbvax.Berkeley.EDU> <2971@ncsuvx.ncsu.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!sun-barr!cs.utexas.edu!uunet!mcvax!hp4nl!ruuinf!piet From: piet@cs.ruu.nl (Piet van Oostrum) Newsgroups: comp.sys.atari.st Subject: Re: German MODULA2 compiler Keywords: modula-2, german Message-ID: <1323@ruuinf.cs.ruu.nl> Date: 17 May 89 10:25:11 GMT References: <8905091507.AA08429@ucbvax.Berkeley.EDU> <2971@ncsuvx.ncsu.edu> Sender: piet@ruuinf.cs.ruu.nl Reply-To: piet@cs.ruu.nl (Piet van Oostrum) Organization: Dept of Computer Science, University of Utrecht, Holland Lines: 230 In-reply-to: mark@ncsuvx.ncsu.edu (Mark Boyd)