80-Bus News

  

January–February 1983 · Volume 2 · Issue 1

Page 5 of 56

has, giving the example:

A$ = 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 “Centronics"” 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 0 assigned to BUSY and bit 1 to /STROBE. It would be helpful if other pioneers could maintain consistency as they progess further into the jungle!

On my own system I am experimenting with the assignment for Port A:

BITFUNCTIONI/O?
0BUSYI
1/STROBEO
2PE (Paper Empty)I
3Not used
4Not used
5/INITO
6/AUTO FEED XTO
7/ERRORI

/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.

Page 5 of 56