has, giving the example:
AS = LEFT$(B$,4) + MID$(A$,3,3) + " Wowee!”
In fact, Pascal has these facilities in exactly the same way as BASIC:
they may or may not be provided with the compiler/interpreter as “standard” or
“intrinsic” functions. Most of the Pascal compilers around, of course, are really
only “Tiny” Pascals (i.e. a subset) and many don’t even allow the user to define
his/her own data types (the solution suggested by Dr. Dark). The Nascom Pascal,
approved by Lucas Logic, however, does indeed have the relevant functions and is
probably one of the few Tiny Pascals which do.
Most of the Pascal implementations which reproduce, or nearly reproduce,
the full Jensen and Wirth specification will also fling such functions in as
standard intrinsics as a matter of course. In UCSD Pascal, for instance, Dr.
Dark’s line of BASIC could be re-written as:
astring := concat(copy(bstring,1,4),copy(astring,3,3),” Wowee!");
where astring and bstring (and the functions copy and concat) are STRING types
(equivalent to PACKED ARRAY OF CHAR of dynamic length).
Elsewhere in the same article he attempts to tackle the problem of
handling integers with a large number of digits. Again, if he had UCSD he would
not have to do it the hard way. UCSD Pascal allows the use of a standard data
type called LONGINTEGER which can be declared to an arbitrary precision up to 36
digits and can then be used with the usual arithmetic operations.
Big H, in the same issue, details his method of utilising other
“Gentronics"” signals besides BUSY and /STROBE. However, his PIO Port assignments
are not consistent with existing conventions for BUSY and /STROBE. Both Nascom
and Gemini, I believe, now employ the convention that Port B is used for data and
Port A for control with bit O assigned to BUSY and bit 1 to /STROBE. It would be
helpful if other pioneers could maintain consistency as they progess further into
On my own system I am experimenting with the assignment for Port A:
BIT FUNCTION I/O?
0 BUSY T
1 /STROBE 0
2 PE (Paper Empty) I
4 Not used
4 Not used
5 /INIT 0
6 /AUTO FEED XT 0
T /ERROR I
/ERROR, in particular, is assigned to bit 7 so that a simple RLA will enable the
Carry flag to show its status.
Hope this is helpful.....-.
Mike York, London.