Commit | Line | Data |
bf10efe7 |
1 | See: FILES for a shipping list of files in this archive. |
2 | See: explain for a brief explaination of the diffs in perl.diffs. |
3 | |
4 | Here is a port of perl 4.0 Patchlevel 19 to the atariST series.: |
5 | |
6 | Whats new since atariST perl 4.010 |
7 | - many minor problems fixed. |
8 | |
9 | - configuration cleaned up. |
10 | |
11 | - makefiles now have a uperl.a target, so that usub's can be |
12 | linked. (see usub/* to see how to make cursesperl) |
13 | |
14 | - perl will now compile and run correctly with or without |
15 | the malloc that comes with perl. |
16 | |
17 | - FILEs opened for write now correctly contain CR/LF unless |
18 | they are binmode'ed. |
19 | |
20 | - complete support for gemdos/xbios/bios calls. see osbind.pl |
21 | and osexample.pl on how to use this facility. |
22 | |
23 | - tracked perl to Patchlevel 19. |
24 | |
25 | known problems: |
26 | - $! still does'nt contain the correct value when there is no error. |
27 | i still have'nt been able to track this down. |
28 | |
29 | ------------------------------------------------------------------------- |
30 | |
31 | Here is a port of perl 4.0 Patchlevel 10 to the atariST series. |
32 | |
33 | What you'll need: |
34 | - a decent shell (i use gulam for obvious reasons), other |
35 | highly recommended ones are bash 1.08/1.10, gemini/mufpel, okami, |
36 | microCsh, init from apratt for MiNT. avoid neodesk. avoid the |
37 | desktop like the plague. The shell should be setup to use |
38 | atari/mwc conventions for command lines and environment setup |
39 | and passing. (in gulam be sure to `set env_style mw'). |
40 | |
41 | - a decent set of file utils (ls, rm, mv, etc etc) in your $PATH. |
42 | if you dont have these, look on atari.archive. the gnuFileutils |
43 | are available there. |
44 | |
45 | - included here are echo and perlglob that you will need. |
46 | |
47 | - setting UNIXMODE is recommended but not required. If you are |
48 | going to run the perl tests, then set UNIXMODE to atleast |
49 | "/.,LAd", else you will get a lot of unnecessary failures. |
50 | (alternately you will have to go in and edit long path names. |
51 | get rid of things dealing with links, and rename paths |
52 | beginning with "/dev/..." etc) |
53 | |
54 | - if you are going to compile: you'll need gcc distribution, |
55 | (i used gcc-1.40 and libs at Patchlevel 73 initially. i |
56 | currently use gcc-2.1 and libs at Patchlevel 80). Also you will |
57 | need the port of gdbm (i used v1.5). you'll also need bison. |
58 | all these are available on atari.archive, in atari/gnustuff/tos |
59 | the diffs as enclosed in this kit assume you have gcc libs at |
60 | Patchlevel 80. |
61 | |
62 | Compiling: |
63 | - get and install gnu gdbm (i used v1.5 -- see README.ST in |
64 | the gdbm distribution on how to make the gdbm library). |
65 | |
66 | - get the perl kit at Patchlevel 19 |
67 | |
68 | - copy config.h usersub.c atarist.c echo.c wildmat.c perlglob.c |
69 | makefile.sm makefile.smd makefile.st makefile.std makefile.stm |
70 | |
71 | - apply the diffs in file `perl.diffs' using patch |
72 | |
73 | - decide which makefile you want to use: |
74 | makefile.st perl with gcc library malloc |
75 | makefile.sm perl with malloc that comes with perl |
76 | |
77 | - hit make -f <MAKEFILE>. (if you are not cross-compiling, |
78 | you'll have to adjust the makefile yourself -- watchout for |
79 | perly.fixer). |
80 | This will result in 3 executables, perl.ttp, perlglob.ttp |
81 | and echo.ttp. Put all these executables in a sub-directory |
82 | in your $PATH (and depending on your shell, issue a rehash). |
83 | (if you use makefile.std instead of makefile.st, the executable |
84 | will be called perld.ttp. this is perl compiled with |
85 | -DDEBUGGING) |
86 | |
87 | Compiling usubs: |
88 | see the files in usub/* and the makefile.st there. |
89 | |
90 | Testing: |
91 | - run perl from a decent shell. i use either gulam or bash |
92 | if you are going to be running from gulam, be sure to |
93 | set env_style mw |
94 | (this can be done automatically by including the above |
95 | line in the gulam.g startup file). bash always uses |
96 | atari/mwc conventions so you dont have to do anything special. |
97 | (if you run perl from the desktop, you are asking for trouble!) |
98 | |
99 | - you'll have to run the tests by hand. Almost all the tests |
100 | pass. You'll have to judge for yourself when a test fails |
101 | if it should have. I was able to explain all failures. If you |
102 | cant, ask me via mail. (one day i will cook up a script to |
103 | do this). |
104 | |
105 | - It helps to have all the gnu fileutils in your PATH here. |
106 | especially echo.ttp and perlglob.ttp. |
107 | |
108 | - Also a lot more tests will pass if you have UNIXMODE setup |
109 | i use "/.,LAd". If you dont use UNIXMODE, you'll have to hack |
110 | some of the tests. |
111 | |
112 | - You may have to fix up a few Pathnames in the tests if you |
113 | are cd'ing to a particular test sub-directory to run the tests. |
114 | |
115 | - Compare your tests with the results i got -- see file RESULTS. |
116 | |
117 | General: |
118 | - setenv PERLLIB to point at the subdirectory containing lib/* |
119 | (if you want PERLLIB to contain more than one path, seperate |
120 | them with commas) |
121 | |
122 | - UNIXMODE is supported not required. |
123 | |
124 | - Pipes are a little flakey sometimes, but mostly work fine. |
125 | Pipes, `prog` etc are much more efficient if you have set |
126 | the environment var TEMP to point to a ramdisk. Note, when |
127 | you set TEMP, it should contain *no* tailing backslash (or slash). |
128 | |
129 | - to force binary mode use "binmode FILE" |
130 | |
131 | - browse thru config.h to see whats supported |
132 | |
133 | - should MiNT'ize this much more. |
134 | |
135 | - avoid using the backtick (`commands`). Use 'open(FOO, "command |")' |
136 | and use the filehandle FOO as appro. |
137 | |
138 | - the command passed to system etc can contain |
139 | redirections of stdin/out, but system does not understand |
140 | fancy pipelines etc. |
141 | |
142 | - syscall() to make gemdos/bios/xbios are fully supported now. |
143 | (note: we dont use ioctl like messy-dos to do this, as we can do |
144 | real ioctl's on devices) |
145 | |
146 | - i still need to cons up the lineA stuff. |
147 | it should be just as easy to cons up aes/vdi outcalls too. imagine |
148 | graphics from perl!. |
149 | |
150 | - watch out for re-directions. TOS blows up if you try to |
151 | re-direct a re-directed handle. atari has greatly improved this |
152 | situation. hopefully, the next general release of TOS will contain |
153 | these fixes. |
154 | |
155 | - in the perl libs (particularly perldb.pl) you will |
156 | need to s?/dev/tty?/dev/console?. perl -d works just fine. |
157 | for instance: (for this to work, UNIXMODE should include the |
158 | 'd' option): |
159 | *** /home/bammi/etc/src/perl/lib/perldb.pl Tue Jun 11 17:40:17 1991 |
160 | --- perldb.pl Mon Oct 7 21:46:28 1991 |
161 | *************** |
162 | *** 49,56 **** |
163 | # |
164 | # |
165 | |
166 | ! open(IN, "</dev/tty") || open(IN, "<&STDIN"); # so we don't dingle stdin |
167 | ! open(OUT,">/dev/tty") || open(OUT, ">&STDOUT"); # so we don't dongle stdout |
168 | select(OUT); |
169 | $| = 1; # for DB'OUT |
170 | select(STDOUT); |
171 | --- 49,56 ---- |
172 | # |
173 | # |
174 | |
175 | ! open(IN, "</dev/console") || open(IN, "<&STDIN"); # so we don't dingle stdin |
176 | ! open(OUT,">/dev/console") || open(OUT, ">&STDOUT"); # so we don't dongle stdout |
177 | select(OUT); |
178 | $| = 1; # for DB'OUT |
179 | select(STDOUT); |
180 | |
181 | cheers, |
182 | -- |
183 | bang: uunet!cadence!bammi jwahar r. bammi |
184 | domain: bammi@cadence.com |
185 | GEnie: J.Bammi |
186 | CIS: 71515,155 |