🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.atari.st
Article #38851

Re: German MODULA2 compiler

#38851
From: Piet van Oostrum
Date: Wed, 17 May 1989 10:25
230 lines
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@#&#83E8  $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!piet
References: <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)