File name altoconsts23.mu.txt; A L T O C O N S T S 2 3 . M U
; Symbol and constant definitons for the standard Alto microcode.
; These definitions are for:
; AltoCode23, AltoCode24, AltoIICode2, and AltoIICode3
; By convention, people writing microcode should 'include' this file
; in front of their microcode using the following MU construct:
; #AltoConsts23.mu;
; This entire file is full of magic. If you modify it in any way
; you run the risk of being incompatible with the Alto world,
; not to mention having your Alto stop working.
;
; Revision History:
; September 20, 1977 8:33 PM by Boggs
; Created from old AltoConsts23.mu
; September 23, 1977 12:17 PM by Taft
; October 11, 1977 2:07 PM by Boggs
; Added XMAR definition
; May 21, 1979 6:42 PM by Taft
; Added SRB_ and ESRB_
;Symbol definitions
;Bus Sources
;BS 0 _ RRegister
;BS 1 RRegister_ (zeroes the bus)
;BS 2 is undefined and therefore makes the bus all ones
;BS 3 and 4 are task specific. For the 'Ram related' tasks they are:
; BS 3: _ SRegister
; BS 4: SRegister_ (clobbers the bus with undefined value)
;BS 5 is main memory data (see definition for MD, below)
$MOUSE $L000000,014006,000100; BS = 6
$DISP $L000000,014007,000120; BS = 7
;Standard F1s
$XMAR $L072000,000000,144000; F1 = 1 and F2 = 6 (Extended MAR)
$MAR $L020001,000000,144000; F1 = 1
$TASK $L016002,000000,000000; F1 = 2
$BLOCK $L016003,000000,000000; F1 = 3
$LLSH1 $L000000,022004,000200; F1 = 4
$LRSH1 $L000000,022005,000200; F1 = 5
$LLCY8 $L000000,022006,000200; F1 = 6
;Standard F2s
$BUS=0 $L024001,000000,000000; F2 = 1
$SH<0 $L024002,000000,000000; F2 = 2
$SH=0 $L024003,000000,000000; F2 = 3
$BUS $L024004,000000,000000; F2 = 4
$ALUCY $L024005,000000,000000; F2 = 5
$MD $L026006,014005,124100; F2 = 6, BS = 5
;Emulator specific functions
$BUSODD $L024010,000000,000000; F2 = 10
$LMRSH1 $L000000,062005,000200; F2 = 11 Magic Right Shift
$LMLSH1 $L000000,062004,000200; F2 = 11 Magic Left Shift
$DNS $L030012,000000,060000; F2 = 12 Do Nova Shift
$ACDEST $L030013,032013,060100; F2 = 13 Nova Destination AC
$IR $L026014,000000,124000; F2 = 14 Instruction Register
$IDISP $L024015,000000,000000; F2 = 15 IR Dispatch
$ACSOURCE $L000000,032016,000100; F2 = 16 Nova Source AC
;RAM-related task-specific functions
$SWMODE $L016010,000000,000000; F1 = 10 Switch Mode (emulator only)
$WRTRAM $L016011,000000,000000; F1 = 11 Write Ram
$RDRAM $L016012,000000,000000; F1 = 12 Read Ram
$RMR $L020013,000000,124000; F1 = 13 Reset Mode Register (emulator only)
$SRB $L020013,000000,124000; F1 = 13 Set Register Bank (non-emulator)
$ESRB $L020015,000000,124000; F1 = 15 Set Register Bank (emulator only)
;Emulator specific functions decoded by the ETHERNET board
$RSNF $L000000,070016,000100; F1 = 16 Read Serial (Host) Number
$STARTF $L016017,000000,000000; F1 = 17 Start I/O
$M $R40; The M Register
$L $L040001,036001,144200; The L Register
$T $L052001,054001,124040; ALUF = 1, The T Register
;ALU Functions. * => loads T from ALU output
$ORT