Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
IBM 1401
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Character and op codes== {{SpecialChars}} The 1401's operation codes are single characters. In many cases, particularly for the more common instructions, the character chosen is [[mnemonic]] for the operation: A for add, B for branch, S for subtract, etc. {{hidden begin |title = Table of character and op codes |titlestyle = background:#ccccff; }} The table is in Character [[Collation|Collating]] Sequence. : Note: If Word mark bit is set, then the ''C'' bit will be opposite of shown. The ''C'' bit is determined and checked automatically by the machine - normally it is of no concern to the programmers. The only way the ''C'' bit can be entered is by manually using the switches on the Auxiliary Console. <!-- deleted "for CE" use, see LRM p.116-->A programmer might use these switches to make quick patches while debugging. {| class="wikitable" |- ! [[Binary-coded decimal#IBM and BCD|BCD]] Character ! Print-A ! Print-H ! Card ! BCD w/o M ! Operation ! ''Definition'' & Notes |- | align="center" | Blank | align="center" | | align="center" | | | <code>C </code> | | |- | align="center" | . | align="center" | . | align="center" | . | 12-3-8 | <code> BA8 21</code> | Halt | |- | align="center" | ⌑ | align="center" | ⌑ | align="center" | ) | 12-4-8 | <code>CBA84 </code> | Clear Word Mark | ''Lozenge'' |- | align="center" | <nowiki>[</nowiki> | align="center" | | align="center" | | 12-5-8 | <code> BA84 1</code> | | |- | align="center" | < | align="center" | | align="center" | | 12-6-8 | <code> BA842 </code> | | ''Less Than'' |- | align="center" | [[File:IBM 1401 Group Mark.GIF]] | align="center" | | align="center" | | 12-7-8 | <code>CBA8421</code> | | ''Group Mark'' |- | align="center" | & | align="center" | & | align="center" | + | 12 | <code>CBA </code> | | |- | align="center" | $ | align="center" | $ | align="center" | $ | 11-3-8 | <code>CB 8 21</code> | | |- | align="center" | * | align="center" | * | align="center" | * | 11-4-8 | <code> B 84 </code> | | |- | align="center" | <nowiki>]</nowiki> | align="center" | | align="center" | | 11-5-8 | <code>CB 84 1</code> | | |- | align="center" | ; | align="center" | | align="center" | | 11-6-8 | <code>CB 842 </code> | | |- | align="center" | Δ | align="center" | | align="center" | | 11-7-8 | <code> B 8421</code> | | ''Delta'' (Mode Change) |- | align="center" | - | align="center" | - | align="center" | - | 11 | <code> B </code> | | |- | align="center" | / | align="center" | / | align="center" | / | 0-1 | <code>C A 1</code> | Clear Storage | |- | align="center" |, | align="center" |, | align="center" |, | 0-3-8 | <code>C A8 21</code> | Set Word Mark | |- | align="center" | % | align="center" | % | align="center" | ( | 0-4-8 | <code> A84 </code> | Divide | Optional special feature. |- | align="center" | ˠ | align="center" | | align="center" | | 0-5-8 | <code>C A84 1</code> | | ''Word Separator'' |- | align="center" | \ | align="center" | | align="center" | | 0-6-8 | <code>C A842 </code> | | ''Left Oblique'' |- | align="center" | ⧻ | align="center" | | align="center" | | 0-7-8 | <code> A8421</code> | | ''Tape Segment Mark'' |- | align="center" | ƀ | align="center" | ‡ | align="center" | ‡ | bgcolor="C0C0C0" | N/A 0 | <code> A </code> | | Cannot be read from card without a no-cost [[Request price quotation|RPQ]], in which case it is read as 8–2.{{efn|The RPQ "Reader/Punch Card Code 8-2 and A-Bit Compatibility" (898148) causes the 1401 to read/punch the A bit as 8-2 for compatibility with the IBM 1410.<ref>{{cite web|title=Custom Features for IBM 1401, 1440, and 1460 Data Processing Systems |url=http://bitsavers.org/pdf/ibm/140x/A24-3315-0_1401customFeatur.pdf |access-date=September 23, 2015 |url-status=dead |archive-url=https://web.archive.org/web/20120829025513/http://www.bitsavers.org/pdf/ibm/140x/A24-3315-0_1401customFeatur.pdf |archive-date=August 29, 2012 |df=mdy-all }}</ref>}} Punches as zero (or 8–2 with the RPQ). ''Blank with "even-parity"'' on tape. |- | align="center" | # | align="center" | # | align="center" | = | 3-8 | <code> 8 21</code> | Modify Address | Optional (requires more than 4000 characters of memory) |- | align="center" | @ | align="center" | @ | align="center" | ' | 4-8 | <code>C 84 </code> | Multiply | Optional special feature. |- | align="center" | : | align="center" | | align="center" | | 5-8 | <code> 84 1</code> | | |- | align="center" | > | align="center" | | align="center" | | 6-8 | <code> 842 </code> | | ''Greater Than'' |- | align="center" | √ | align="center" | | align="center" | | 7-8 | <code>C 8421</code> | | ''Tape Mark'' |- | align="center" | ? | align="center" | & | align="center" | & | 12-0 | <code>CBA8 2 </code> | Zero and Add | ''Plus Zero'' |- | align="center" | A | align="center" | A | align="center" | A | 12-1 | <code> BA 1</code> | Add | |- | align="center" | B | align="center" | B | align="center" | B | 12-2 | <code> BA 2 </code> | Branch or Branch on Indicator | See [[IBM 1401#Modifiers for five-character Branch On Indicator (B) instruction|"Modifiers for five-character Branch on Indicator (B) instruction"]] section |- | align="center" | C | align="center" | C | align="center" | C | 12-3 | <code>CBA 21</code> | Compare | |- | align="center" | D | align="center" | D | align="center" | D | 12-4 | <code> BA 4 </code> | Move Numerical | (Bits) |- | align="center" | E | align="center" | E | align="center" | E | 12-5 | <code>CBA 4 1</code> | Move Characters and Edit | |- | align="center" | F | align="center" | F | align="center" | F | 12-6 | <code>CBA 42 </code> | Control Carriage | (Printer) |- | align="center" | G | align="center" | G | align="center" | G | 12-7 | <code> BA 421</code> | | |- | align="center" | H | align="center" | H | align="center" | H | 12-8 | <code> BA8 </code> | Store B-Address Register | Optional special feature. |- | align="center" | I | align="center" | I | align="center" | I | 12-9 | <code>CBA8 1</code> | | |- | align="center" | ! | align="center" | - | align="center" | - | 11-0 | <code> B 8 2 </code> | Zero and Subtract | ''Minus Zero'' |- | align="center" | J | align="center" | J | align="center" | J | 11-1 | <code>CB 1</code> | | |- | align="center" | K | align="center" | K | align="center" | K | 11-2 | <code>CB 2 </code> | Select Stacker and other device controls | See [[IBM 1401#Modifiers for Select Stacker (K) instruction|"Modifiers for Select Stacker (K) instruction"]] section |- | align="center" | L | align="center" | L | align="center" | L | 11-3 | <code> B 21</code> | Load Characters to Word Mark | |- | align="center" | M | align="center" | M | align="center" | M | 11-4 | <code>CB 4 </code> | Move Characters to Word Mark | |- | align="center" | N | align="center" | N | align="center" | N | 11-5 | <code> B 4 1</code> | No Operation | |- | align="center" | O | align="center" | O | align="center" | O | 11-6 | <code> B 42 </code> | | |- | align="center" | P | align="center" | P | align="center" | P | 11-7 | <code>CB 421</code> | Move Characters to Record or Group Mark | Optional special feature. |- | align="center" | Q | align="center" | Q | align="center" | Q | 11-8 | <code>CB 8 </code> | Store A-Address Register | Optional special feature. |- | align="center" | R | align="center" | R | align="center" | R | 11-9 | <code> B 8 1</code> | | |- | align="center" | ‡ | align="center" | ‡ | align="center" | ‡ | 0-2-8 | <code> A8 2 </code> | | ''Record Mark'' |- | align="center" | S | align="center" | S | align="center" | S | 0-2 | <code>C A 2 </code> | Subtract | |- | align="center" | T | align="center" | T | align="center" | T | 0-3 | <code> A 21</code> | Translate | (1460 only) |- | align="center" | U | align="center" | U | align="center" | U | 0-4 | <code>C A 4 </code> | Control Unit | (Tape) |- | align="center" | V | align="center" | V | align="center" | V | 0-5 | <code> A 4 1</code> | Branch if Word Mark and/or Zone | |- | align="center" | W | align="center" | W | align="center" | W | 0-6 | <code> A 42 </code> | Branch if Bit Equal | Optional special feature. |- | align="center" | X | align="center" | X | align="center" | X | 0-7 | <code>C A 421</code> | Move and Insert Zeros | Optional special feature. |- | align="center" | Y | align="center" | Y | align="center" | Y | 0-8 | <code>C A8 </code> | Move Zone | (Bits) |- | align="center" | Z | align="center" | Z | align="center" | Z | 0-9 | <code> A8 1</code> | Move Characters and Suppress Zeros | |- | align="center" | 0 | align="center" | 0 | align="center" | 0 | 0 | <code>C 8 2 </code> | | |- | align="center" | 1 | align="center" | 1 | align="center" | 1 | 1 | <code> 1</code> | Read a Card | |- | align="center" | 2 | align="center" | 2 | align="center" | 2 | 2 | <code> 2 </code> | Write a Line | |- | align="center" | 3 | align="center" | 3 | align="center" | 3 | 3 | <code>C 21</code> | Write and Read | |- | align="center" | 4 | align="center" | 4 | align="center" | 4 | 4 | <code> 4 </code> | Punch a Card | |- | align="center" | 5 | align="center" | 5 | align="center" | 5 | 5 | <code>C 4 1</code> | Read and Punch | |- | align="center" | 6 | align="center" | 6 | align="center" | 6 | 6 | <code>C 42 </code> | Write and Punch | |- | align="center" | 7 | align="center" | 7 | align="center" | 7 | 7 | <code> 421</code> | Write, Read, and Punch | |- | align="center" | 8 | align="center" | 8 | align="center" | 8 | 8 | <code> 8 </code> | Start Read Feed | Optional special feature. |- | align="center" | 9 | align="center" | 9 | align="center" | 9 | 9 | <code>C 8 1</code> | Start Punch Feed | Optional special feature. |- |} Two of the instructions, Branch on Indicator (B) and Select Stacker (K), use a "modifier" operand. {{Col-begin}} {{Col-break}} ===Modifiers for five-character Branch on Indicator (B) instruction=== The B opcode, if followed by a three-character operand, was a simple unconditional branch to the indicated address. If a fourth operand character was present (making five characters total including the opcode), this made it a conditional branch. This "modifier" character specified the condition to be tested. {| class="wikitable" |- ! [[Binary-coded decimal#IBM and BCD|BCD]] Character ! Unit ! Meaning |- | align="center" | Blank | 1401 | Unconditional—no word mark needed in next character |- | align="center" | 1 | 1009 | in run condition |- | | 1011 | punch in backspace operation |- | | 1011 | reader parity indicator on |- | | 1231 | auto select |- | | 1285 | error |- | | 1412 | control-check indicator on |- | | 1418 | late read |- | | 1419 | document to be read |- | | 1428 | late read or late reading mode change |- | | 1445 | printer error |- | | 7340 | hypertape unusual end |- | | 7740 | transmission complete with abnormal status |- | | DDC | transmission error |- | align="center" | 2 | 1009 | buffer available |- | | 1011 | punch ready |- | | 1011 | reader ready |- | | 1231 | full buffer |- | | 1285 | end of line |- | | 1412 | reader-not-ready signal on |- | | 1418 | ready to engage |- | | 1419 | document under read head (PDS 4) |- | | 1428 | ready to engage |- | | 7340 | hypertape normal end |- | | 7740 | transmission complete successfully |- | | DDC | transmission ended by GMWM |- | align="center" | 3 | 1009 | good transmission occurred |- | | 1011 | punch not ready to receive data |- | | 1231 | ready to read |- | | 1285 | reader transporting |- | | 1412 | read-check indicator on |- | | 1418 | document under selected read station |- | | 1419 | valid amount field |- | | 1428 | document under selected read station |- | | 7340 | hypertape control unit 7641 busy |- | | 7740 | receive request |- | | DDC | read request |- | align="center" | 4 | 1009 | reply-bad indicator on |- | | 1011 | punch not ready to read |- | | 1231 | empty hopper |- | | 1285 | marked line |- | | 1412 | amount-field indicator on |- | | 1419 | valid process-control field |- | | 7340 | hypertape attention |- | | 7740 | 7740 attention |- | | DDC | write request |- | align="center" | 5 | 1009 | error reply acknowledgement |- | | 1011 | punch overextended |- | | 1231 | read error or overrun |- | | 1285 | header information |- | | 1412 | process-control indicator on |- | | 1418 | document end |- | | 1419 | valid account-number field |- | | 1428 | document end |- | | 1445 | printer busy |- | align="center" | 6 | 1009 | program attention required |- | | 1011 | punch supply reel low or chad box full |- | | 1231 | timing mark check |- | | 1285 | ready to read a line |- | | 1412 | account-number indicator on |- | | 1418 | character on line |- | | 1419 | valid transit-number field |- | | 1428 | character on line |- | | 1445 | carriage busy |- | | DDC | write in progress |- | align="center" | 7 | 1009 | end of message |- | | 1285 | reader ready |- | | 1412 | transit-number indicator on |- | | 1418 | empty hopper and transport (end of file) |- | | 1419 | valid serial-number field |- | | 1428 | empty hopper and transport (end of file) |- | | 1445 | carriage channel 9 |- | | DDC | read in progress |- | align="center" | 8 | 1009 | end of file |- | | 1285 | end of file |- | | 1412 | document-spacing-check indicator on |- | | 1418 | ready to read |- | | 1419 | auto-select |- | | 1428 | ready to read |- | | 1448 | carriage channel 12 |- | | DDC | system A stopped |- | align="center" | 9 | 1403 | carriage tape channel 9 |- | align="center" | 0 | 1404 | validity error |- | align="center" | ' or @ | 1403 | carriage tape channel 12 |- | align="center" | > | 1448 | end of block |- | align="center" | / | 1401 | unequal compare |- | align="center" | S | 1401 | equal compare |- | align="center" | T | 1401 | low compare |- | align="center" | U | 1401 | high compare |- | align="center" | V | 1301 | disk error |- | | 1311 | disk error |- | | 1405 | read or write parity check or read back check error |- | align="center" | W | 1301 | wrong-length record |- | | 1311 | wrong-length record |- | | 1405 | wrong-length record |- | align="center" | X | 1301 | unequal address compare |- | | 1311 | unequal address compare |- | | 1405 | unequal address compare |- | align="center" | Y | 1301 | any disk-unit error condition |- | | 1311 | any disk-unit error condition |- | | 1405 | any disk-unit error condition |- | align="center" | Z | 1401 | arithmetic overflow |- | align="center" | ‡ | 1403 | printer error (record mark) |- | align="center" | ( or % | 1401 | process check with process check switch off |- | | 1440 | I/O check stop switch off |- | align="center" | \ | 1301 | access busy |- | | 1311 | access busy |- | align="center" | J | 1419 | I/O channel-busy indicator |- | | TAU | tape busy |- | | SIO | serial input-output busy |- | align="center" | K | TAU | end of reel (writing) or tape mark (reading) |- | align="center" | L | TAU | tape error |- | align="center" | N | 1301 | access inoperable |- | | 1311 | access inoperable |- | | 1405 | access inoperable |- | align="center" | P | 1403 | printer busy |- | align="center" | Q | 1407 | inquiry request |- | align="center" | R | 1403 | carriage busy |- | align="center" | ! | 1402 | punch error |- | align="center" | * | 1407 | inquiry clear |- | align="center" | + or & | 1442 | last card (Reader unit 2) |- | align="center" | A | 1402 | last card if SS A is on |- | align="center" | B | 1401 | SS B |- | | 7340 | hypertape attention response |- | align="center" | C | 1401 | SS C |- | align="center" | D | 1401 | SS D |- | align="center" | E | 1401 | SS E |- | | 7340 | hypertape end response |- | align="center" | F | 1401 | SS F |- | align="center" | G | 1401 | SS G |- | align="center" | H | 1402 | reader busy |- | align="center" | I | 1402 | punch busy |- | align="center" | ? | 1402 | reader error |- | align="center" | < | 1448 | early warning |- |} {{Col-break}} ===Modifiers for Select Stacker (K) instruction=== The Select Stacker (K) instruction sent commands to various devices. It was named for its relevance to the 1402 reader/punch. {| class="wikitable" |- ! [[Binary-coded decimal#IBM and BCD|BCD]] Character ! Unit ! Meaning |- | align="center" | Blank | 1401 | set program activity recording at BBB only if A is, dd |- | align="center" | 1 | 1402 | select last card read to stacker 1 if within 10 ms |- | align="center" | 2 | 1402 | select last card read to stacker 8/2 if within 10 ms |- | align="center" | 4 | 1402 | select previous card punched to stacker 4 |- | align="center" | 8 | 1402 | select previous card punched to stacker 8/2 |- | align="center" | = or # | 1444 | select previous card punched to stacker 2 |- | align="center" | L | 1009 | operate in load mode |- | align="center" | $ | 1402 | overlap on |- | align="center" | A | 1009 | suppress 3-second alarm |- | align="center" | C | DDC | read request |- | align="center" | D | 1009 | set direction to receive |- | | DDC | write request |- | align="center" | E | 1009 | set direction to transmit |- | | DDC | reset |- | align="center" | F | 1009 | send EOF |- | align="center" | . | 1402 | overlap off |- | align="center" | ) | 1402 | reset overlap |- |} {{col-end}} {{hidden end}}
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
IBM 1401
(section)
Add topic