summaryrefslogtreecommitdiff
path: root/atarist/README.ST
blob: 0d42ba0c6d92b2975171784bb7f8cf87bf81c67b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
See: FILES for a shipping list of files in this archive.
See: explain for a brief explaination of the diffs in perl.diffs.

Here is a port of perl 4.0 Patchlevel 19 to the atariST series.:

Whats new since atariST perl 4.010
	- many minor problems fixed.

	- configuration cleaned up.

        - makefiles now have a uperl.a target, so that usub's can be
          linked. (see usub/* to see how to make cursesperl)

	- perl will now compile and run correctly with or without
	the malloc that comes with perl.

	- FILEs opened for write now correctly contain CR/LF unless
	they are binmode'ed.

	- complete support for gemdos/xbios/bios calls. see osbind.pl
	and osexample.pl on how to use this facility.

	- tracked perl to Patchlevel 19.

known problems:
	 - $! still does'nt contain the correct value when there is no error.
	i still have'nt been able to track this down.

-------------------------------------------------------------------------

Here is a port of perl 4.0 Patchlevel 10 to the atariST series.

What you'll need:
	- a decent shell (i use gulam for obvious reasons), other
	highly recommended ones are bash 1.08/1.10, gemini/mufpel, okami,
	microCsh, init from apratt for MiNT. avoid neodesk. avoid the
	desktop like the plague. The shell should be setup to use
	atari/mwc conventions for command lines and environment setup
	and passing. (in gulam be sure to `set env_style mw').

	- a decent set of file utils (ls, rm, mv, etc etc) in your $PATH.
	if you dont have these, look on atari.archive. the gnuFileutils
	are available there.
	
	- included here are echo and perlglob that you will need.

	- setting UNIXMODE is recommended but not required. If you are
	going to run the perl tests, then set UNIXMODE to atleast
	"/.,LAd", else you will get a lot of unnecessary failures.
	(alternately you will have to go in and edit long path names.
	 get rid of things dealing with links, and rename paths
	 beginning with "/dev/..." etc)

	- if you are going to compile: you'll need gcc distribution,
	(i used gcc-1.40 and libs at Patchlevel 73 initially. i 
         currently use gcc-2.1 and libs at Patchlevel 80). Also you will
	need the port of gdbm (i used v1.5). you'll also need bison.
	all these are available on atari.archive, in atari/gnustuff/tos
	the diffs as enclosed in this kit assume you have gcc libs at
        Patchlevel 80.
	
Compiling:
	- get and install gnu gdbm (i used v1.5 -- see README.ST in
	  the gdbm distribution on how to make the gdbm library).

	- get the perl kit at Patchlevel 19

        - copy  config.h usersub.c atarist.c echo.c wildmat.c  perlglob.c  
          makefile.sm makefile.smd makefile.st makefile.std makefile.stm

	- apply the diffs in file `perl.diffs' using patch

	- decide which makefile you want to use:
	makefile.st	perl with gcc library malloc
	makefile.sm	perl with malloc that comes with perl

	- hit make -f <MAKEFILE>. (if you are not cross-compiling, 
	   you'll have to adjust the makefile yourself -- watchout for
	   perly.fixer).
	   This will result in 3 executables, perl.ttp, perlglob.ttp
	   and echo.ttp. Put all these executables in a sub-directory
	   in your $PATH (and depending on your shell, issue a rehash).
	(if you use makefile.std instead of makefile.st, the executable
	 will be called perld.ttp. this is perl compiled with
	 -DDEBUGGING)

Compiling usubs:
	see the files in usub/* and the makefile.st there.

Testing:
	- run perl from a decent shell. i use either gulam or bash
	if you are going to be running from gulam, be sure to
		set env_style mw
	(this can be done automatically by including the above
	 line in the gulam.g startup file). bash always uses
	atari/mwc conventions so you dont have to do anything special.
	(if you run perl from the desktop, you are asking for trouble!)

	- you'll have to run the tests by hand. Almost all the tests
	pass. You'll have to judge for yourself when a test fails
	if it should have. I was able to explain all failures. If you
	cant, ask me via mail. (one day i will cook up a script to
	do this).

	- It helps to have all the gnu fileutils in your PATH here.
	especially echo.ttp and perlglob.ttp.

	- Also a lot more tests will pass if you have UNIXMODE setup
	i use "/.,LAd". If you dont use UNIXMODE, you'll have to hack
	some of the tests.

	- You may have to fix up a few Pathnames in the tests if you
	are cd'ing to a particular test sub-directory to run the tests.

	- Compare your tests with the results i got -- see file RESULTS.
	
General:
	- setenv PERLLIB to point at the subdirectory containing lib/*
	(if you want PERLLIB to contain more than one path, seperate
	 them with commas)

	- UNIXMODE is supported not required.

	- Pipes are a little flakey sometimes, but mostly work fine.
	Pipes, `prog`  etc are much more efficient if you have set
	the environment var TEMP to point to a ramdisk. Note, when
	you set TEMP, it should contain *no* tailing backslash (or slash).

	- to force binary mode use "binmode FILE"

	- browse thru config.h to see whats supported

	- should MiNT'ize this much more.

	- avoid using the backtick (`commands`). Use 'open(FOO, "command |")'
	and use the filehandle FOO as appro.

	- the command passed to system etc can contain
	redirections of stdin/out, but system does not understand
	fancy pipelines etc.

	- syscall() to make gemdos/bios/xbios are fully supported now.
	(note: we dont use ioctl like messy-dos to do this, as we can do
	 real ioctl's on devices)

	- i still need to cons up the lineA stuff.
	  it should be just as easy to cons up aes/vdi outcalls too. imagine
	  graphics from perl!.

	- watch out for re-directions. TOS blows up if you try to
	re-direct a re-directed handle. atari has greatly improved this
	situation. hopefully, the next general release of TOS will contain
	these fixes.

	- in the perl libs (particularly perldb.pl) you will
	need to s?/dev/tty?/dev/console?. perl -d works just fine.
	for instance: (for this to work, UNIXMODE should include the
	'd' option):
*** /home/bammi/etc/src/perl/lib/perldb.pl	Tue Jun 11 17:40:17 1991
--- perldb.pl	Mon Oct  7 21:46:28 1991
***************
*** 49,56 ****
  # 
  #
  
! open(IN, "</dev/tty") || open(IN,  "<&STDIN");	# so we don't dingle stdin
! open(OUT,">/dev/tty") || open(OUT, ">&STDOUT");	# so we don't dongle stdout
  select(OUT);
  $| = 1;				# for DB'OUT
  select(STDOUT);
--- 49,56 ----
  # 
  #
  
! open(IN, "</dev/console") || open(IN,  "<&STDIN");	# so we don't dingle stdin
! open(OUT,">/dev/console") || open(OUT, ">&STDOUT");	# so we don't dongle stdout
  select(OUT);
  $| = 1;				# for DB'OUT
  select(STDOUT);

cheers,
--
bang:   uunet!cadence!bammi			jwahar r. bammi
domain: bammi@cadence.com
GEnie:	J.Bammi
CIS:    71515,155