perl mixasm.pl <inputfile>
A file contains card deck produced by assembler. Each line is regarded as a card, holding no more than 80 characters. For example, the content of
DATA 101000000000002 DATA 5199501031018470001611333000219642003200942250321184086 DATA 120240000002035 DATA 320490000002010000000049I0000000003 CODE 730000000001187053739552905376576740000262193015702869807906264090000524338 CODE 730070000524467000000017600000083750025964868078800497500259649200000262195 CODE 730140788529575078721847105229784690533463220001310738A01313341970025973064 CODE 730210000000069000001718300002622600013107317079167505300000175730006308172 CODE 2302807914127810000000133 TRANS03000
This file serves as input to the loader of simulator
mixsim.pl. Columns 1-5 are ignored. The
TRANS are there only for documenting the type of each card. Column 6 is the number of consecutive words on this card. Columns 7-10 is the location of word 1, which is always greater than 100, so it does not overlay the loading router. Columns 11-20, 21-30, ..., 71-80 are the words to be loaded.
For example, a card which has
should cause the following information to be loaded:
2049: + 0000002010 2050: - 0000000499 2051: + 0000000003
You may have noticed that the word "000000049I" is loaded as "-499". That is a tricky way to punch sign of word on card without using additional characters.
SPACE 0 A 1 B 2 C 3 D 4 E 5 F 6 G 7 H 8 I 9
If the least significant digit is among the special characters above, the sign of word it represents is negative.
If the column 6 is `0', then this card is a transfer card. That means, after the loader reads this card, MIX jumps to location punched in columns 7-10.
MIXAL program listing, with the assembled words and source lines sitting side by side.
1. No tabs allowed. 2. Lines started with star will be ignored. 3. Empty lines are ignored.
Source line can be separated into four fields:
1. Label field: columns 1-10 2. Op field: columns 11-15 3. Address field: from columns 16 to the first blank column 4. Comment field: after column 20, started with a blank column.
Whitespaces are important in MIXAL programs. They are used for separating label from op, and op from operands. There should be no spaces in address field.
CHANGEM ENT2 0,3 => OK CHANGEM ENT2 0, 3 => ERROR