PDA

View Full Version : some 1980s pascal source code off a ?VAX? - what is it?



iainmaoileoin
March 31st, 2015, 11:48 PM
I have a little farm of PDP 11s with TK50 drives;
When I am bored I set them up to scan the tapes for text.

Can any one help me identify what this is?
Seems to be about 1989 vintage

0001 0001 0 0 [SYSTEM (MICROPOWER)] MODULE afsatcom_mpu ;
0002 0002 0 0 -
0003 0003 0 0 %INCLUDE 'CFDMPU.PAS'
0004 0001 2C 0 0 { ---- comm specific configuration filename: CFDMPU.PAS ---- }
0005 0002 2 0 0 %INCLUDE 'CFDINC.PAS'
0006 0001 3 0 0 TYPE comm_system_names = (
0007 0002 3 0 0 AIM_AFSATCOM, F
0008 0003 3 0 0 AFSATCOM_MPU, A
0009 0004 3 0 0 AUTODIN,
0010 0005 3 0 0 SCTS_SCTR,
0011 0006 3 0 0 SCTS_CPE, ?
0012 0007 3 0 0 SLFCS,
0013 0008 3 0 0 VOICE,
0014 0009 3 0 0 invalid_comm_system) ;
0015 0010 3C 0 0 { comm_system_names }
0016 0003 2 0 0 X
0017 0004 2 0 0 VAR comm_device : [GLOBAL (comdev)] comm_system_names ;
0018 0005 2 0 0 B
0019 0006 2 1 0 [INITIALIZE] PROCEDURE comm_device_init ;
0020 0007 2 1 1 BEGIN
0021 0008 2 1 1 8
0022 0009 1 2 1 1 comm_device := AFSATCOM_MPU ;
0023 0010 2 1 1 ,
0024 0011 2 2 0 0 END ; { procedure }
Maximum stack depth is 10 bytes.
0025 0012 2C 0 0 { ---- ---- ---- ---- }
0026 0013 2 0 0 H
0027 0014 2C 0 0 { afsatcom_mpu specific configuration } -
0028 0004 0 0 %INCLUDE 'CSIINC.PAS'
0029 0001 2C 0 0 { File name: CSIINC.PAS
0030 0002 2C 0 0 } "
0031 0003 2C 0 0 { Summary S
0032 0004 2C 0 0 This unit contains the declarations global to the CSI.
0033 0005 2C 0 0 } '
0034 0006 2C 0 0 { Developed by
0035 0007 2C 0 0 GTE GOVERNMENT SYSTEMS ,
0036 0008 2C 0 0 1 Research Drive 1
0037 0009 2C 0 0 Westborough, MA 01581
0038 0010 2C 0 0 } "
0039 0011 2C 0 0 { History D
0040 0012 2C 0 0 Date Version By Description N
0041 0013 2C 0 0 03/24/89 V1 MS extracted from CSI001 U
0042 0014 2C 0 0 03/25/89 V1.1 HDL added header field positions
0043 0015 2C 0 0 } &
0044 0016 2C 0 0 { Description
0045 0017 2C 0 0 }
0046 0018 2 0 0 9
0047 0019 2 0 0 %INCLUDE 'MICROPOWER$LIB:EXC.PAS'

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

[SYSTEM (MICROPOWER)] MODULE afsatcom_mpu ;
%INCLUDE 'CFDMPU.PAS'
{ afsatcom_mpu specific configuration }
%INCLUDE 'CSIINC.PAS'
{ PROCEDURE format_message_for_channel declarations }
%INCLUDE 'CSXINC.PAS'
{ PROCEDURE put_formatted_data_element declarations }
%INCLUDE 'SLUINC.PAS'
{ set comm device characteristics }
%INCLUDE 'PLSOSET.PAS'
{ PLSO word set }
TYPE
x_index_type = 1..37 ;
y_index_type = 0..8 ;
x_index
: x_index_type ;
y_index
: y_index_type ;
PLSO_array : [STATIC] PACKED ARRAY [x_index_type, y_index_type] OF CHAR ;
[INITIALIZE] PROCEDURE afsatcom_mpu_init ;
PROCEDURE init_plso_array
(VAR string : [READONLY]PACKED ARRAY [i..j:INTEGER] of CHAR) ;
VAR index : y_index_type ;
BEGIN
y_index := 0 ;
FOR index := i TO j DO BEGIN:
PLSO_array [x_index, y_index] := string [index] ;!
y_index := y_index + 1 ;
END ;
x_index := x_index + 1 ;
END ; { PROCEDURE init_plso_array }
BEGIN
set_channel_parameters (
xmit_flow
:= on,
recv_flow
:= on,
mode
:= block,
unit
:= slu2a,
baud_rate
:= bps_19200,
:= on,
:= on,
mint
:= disable,
frame
:= frame_8,
parity
:= none,
stop
:= stop_1 ) ;
x_index := 1 ;"
init_plso_array ('4ALFA ') ;"
init_plso_array ('5BRAVO ') ;"
init_plso_array ('7CHARLIE ') ;"
init_plso_array ('5DELTA ') ;"
init_plso_array ('4ECHO ') ;"
init_plso_array ('7FOXTROT ') ;"
init_plso_array ('4GOLF ') ;"
init_plso_array ('5HOTEL ') ;"
init_plso_array ('5INDIA ') ;"
init_plso_array ('7JULIETT ') ;"
init_plso_array ('4KILO ') ;"
init_plso_array ('4LIMA ') ;"
init_plso_array ('4MIKE ') ;"
init_plso_array ('8NOVEMBER') ;"
init_plso_array ('5OSCAR ') ;"
init_plso_array ('4PAPA ') ;"
init_plso_array ('6QUEBEC ') ;"
init_plso_array ('5ROMEO ') ;"
init_plso_array ('6SIERRA ') ;"
init_plso_array ('5TANGO ') ;"
init_plso_array ('7UNIFORM ') ;"
init_plso_array ('6VICTOR ') ;"
init_plso_array ('7WHISKEY ') ;"
init_plso_array ('4XRAY ') ;"
init_plso_array ('6YANKEE ') ;"
init_plso_array ('4ZULU ') ;"
init_plso_array ('4ZERO ') ;"
init_plso_array ('3ONE ') ;"
init_plso_array ('3TWO ') ;"
init_plso_array ('5THREE ') ;"
init_plso_array ('4FOUR ') ;"
init_plso_array ('4FIVE ') ;"
init_plso_array ('3SIX ') ;"
init_plso_array ('5SEVEN ') ;"
init_plso_array ('5EIGHT ') ;"
init_plso_array ('4NINE ') ;,
init_plso_array ('1 ') ; { blank }
END ; { initialize }
[GLOBAL (CSIFMC)] PROCEDURE format_message_for_channel ;
TYPE
output_buf_type
= PACKED ARRAY [0..4999] OF CHAR ;
bit_map = PACKED RECORD3
bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7
: 0..1 ;
bit8,bit9,bit10,bit11,bit12,bit13,bit14,bit15
: 0..1 ;
END ;
CONST
= %O'3' ;
= %O'11' ;
SPACE
= %O'40' ;
invalid_afsatcom_mpu_char
: BOOLEAN ; { switch }
TESTBED.SAV
[TESTBED.AFSATMPU]AFSATMPU.PAS;1
put_buf_overflow
: BOOLEAN ; { switch }
output_buf
: output_buf_type ;
fer_index
: RING_BUFFER_DATA ;5
chars_index
: text_lengths ; { 1..max_text_length }
PLSO_word_length
: y_index_type ;
index
: y_index_type ;
{ formal arguments defined within file CSIINC.PAS }
{ KXJ11-C to afsatcom_mpu Interface Command Template:
1. HEADER: ( UUUXXHT )
UUU = classification field is UNCLASSIFIED because all1
messages are codebook encoded.
XX = selective message routing (SMR) in ascii, this is!
site specific.
HT = ascii horizontal tab
ETX = ascii end of text char
2. MESSAGE ( maximum of 4096 characters )4
a. PLSO characters in ascii upper case4
b. ascii space between PLSO characters+
c. 2-PLSO characters per line
d. each line ends with <HT>
BEGIN
output_buf [0] := 'U' ;
{ 1st char classification field }"
output_buf [1] := 'U' ;
{ 2nd }"
output_buf [2] := 'U' ;
{ 3rd }1
output_buf [3] := (0)::CHAR ;
{ 1st char SMR }
output_buf [4] := (0)::CHAR ;
{ 2nd }3
output_buf [5] := (HT)::CHAR ;
{ horizontal tab }
fer_index
:= 6 ;
chars_index
:= 1 ; { 1..text_length }
invalid_afsatcom_mpu_char := FALSE ;
REPEAT
IF ((original_mp_buffer.text_chars [chars_index]) IN
['A'..'Z', 'a'..'z', '0'..'9', ' '])
THEN BEGIN
x_index := ORD (blank) ;
IF ((original_mp_buffer.text_chars [chars_index])
IN ['A'..'Z'])
THEN x_index :=
(ORD (original_mp_buffer.text_chars [chars_index])
- (ORD ('A')) + (ORD (alfa))) ;
IF ((original_mp_buffer.text_chars [chars_index])
IN ['a'..'z'])
THEN x_index :=
(ORD (original_mp_buffer.text_chars [chars_index])
- (ORD ('a')) + (ORD (alfa))) ;
IF ((original_mp_buffer.text_chars [chars_index])
IN ['0'..'9'])
THEN x_index :=
(ORD (original_mp_buffer.text_chars [chars_index])
- (ORD ('0')) + (ORD (zero))) ;
PLSO_word_length :=
( ORD (PLSO_array [x_index, 0])) - (ORD ('0')) ;
FOR index := 1 TO PLSO_word_length DO
BEGIN
output_buf [fer_index] := PLSO_array [x_index, index] ;
fer_index := fer_index + 1 ;
END ;
IF (chars_index::bit_map.bit0::BOOLEAN) = TRUE { means odd }6
THEN output_buf [fer_index] := (SPACE)::CHAR7
ELSE output_buf [fer_index] := (HT)::CHAR ;
fer_index
:= fer_index + 1 ;(
chars_index := chars_index + 1 ;
END { if..then }
ELSE invalid_afsatcom_mpu_char := TRUE ;
UNTIL (chars_index > original_mp_buffer.text_length)-
OR (invalid_afsatcom_mpu_char = TRUE) ;
IF invalid_afsatcom_mpu_char = FALSE
THEN BEGINL
output_buf [fer_index-1] := (HT)::CHAR ; { overwrite <space> with <ht>N
applicable when message count9
is odd }
output_buf [fer_index] := (ETX)::CHAR ;
output_buf [fer_index + 1] := (ETX)::CHAR ;
fer_index := fer_index + 2 ;
put_formatted_data_element (
output_buf,
fer_index ) ;
END ;
END { procedure } ;

Al Kossow
April 1st, 2015, 06:47 AM
0001 0001 0 0 [SYSTEM (MICROPOWER)] MODULE afsatcom_mpu ;

0007 0002 3 0 0 AIM_AFSATCOM, F
0008 0003 3 0 0 AFSATCOM_MPU, A
0009 0004 3 0 0 AUTODIN,
0010 0005 3 0 0 SCTS_SCTR,
0011 0006 3 0 0 SCTS_CPE, ?
0012 0007 3 0 0 SLFCS,
0013 0008 3 0 0 VOICE,
0014 0009 3 0 0 invalid_comm_system) ;


VAX Micropower Pascal

Air Force message forwarding system? Do a Google search for the above acronyms, if you dare.

gslick
April 1st, 2015, 07:07 AM
{ KXJ11-C to afsatcom_mpu Interface Command Template:


Would you guess that this is code that ran on the host CPU and talked to a KXJ11-C, or code that ran on the KXJ11-C?

http://www.bitsavers.org/pdf/dec/qbus/KXJ11-CA_prelimUG_1986.pdf
KXJ11-C Peripheral Processor / Single Board Computer Product Brief (end of above .PDF):

"On the KXJ11-C, MP/P is the preferred operating environment."

(where MP/P is MicroPower/Pascal)

Al Kossow
April 1st, 2015, 07:11 AM
Would you guess that this is code that ran on the host CPU and talked to a KXJ11-C, or code that ran on the KXJ11-C?

http://www.bitsavers.org/pdf/dec/qbus/KXJ11-CA_prelimUG_1986.pdf
KXJ11-C Peripheral Processor / Single Board Computer Product Brief (end of above .PDF):

"On the KXJ11-C, MP/P is the preferred operating environment."

(where MP/P is MicroPower/Pascal)

yes, I missed that. Clearly PDP-11 and not VAX MP/P

iainmaoileoin
April 2nd, 2015, 01:12 AM
yes, I missed that. Clearly PDP-11 and not VAX MP/P

The tape I have appears to have been vax written; I need to dig out the headers to be sure.
So is this some from of cross-compiler?
Or more simply a cross-machine backup?
I guess I need to go read about MP/P.