PREFIX :log: return IS $0 tmp IS $1 ucount GREG 0 :LogU1 GET return,:rJ; PUSHJ tmp,Common; GETA $255,U1a; TRAP 0,:Fputs,:StdOut ADD ucount,ucount,1 STW ucount,:C,:UserID SET $255,ucount; PUSHJ $255,:print:int GETA $255,U1b; TRAP 0,:Fputs,:StdOut SET $255,:tg; PUSHJ $255,:print:int GETA $255,U1c; TRAP 0,:Fputs,:StdOut SET $255,:fi; PUSHJ $255,:print:int GETA $255,U1d; TRAP 0,:Fputs,:StdOut SET $255,:fo; PUSHJ $255,:print:int; PUSHJ $255,:print:nl PUT :rJ,return; POP 0,0 U1a BYTE "U1 User ",0; SWYM U1b BYTE " p=",0; SWYM U1c BYTE " arrives at floor ",0,0 U1d BYTE ", destination is ",0,0,0 :LogU4 GET return,:rJ; PUSHJ tmp,Common; GETA $255,U4a; TRAP 0,:Fputs,:StdOut LDW $255,:C,:UserID; PUSHJ $255,:print:int GETA $255,U4b; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 U4a BYTE "U4 User ",0; SWYM U4b BYTE " decides to give up, leaves the system",10,0; SWYM :LogU5 GET return,:rJ; PUSHJ tmp,Common; GETA $255,U5a; TRAP 0,:Fputs,:StdOut LDW $255,:C,:UserID; PUSHJ $255,:print:int GETA $255,U5b; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 U5a BYTE "U5 User ",0; SWYM U5b BYTE " gets in",10,0; SWYM :LogU6 GET return,:rJ; PUSHJ tmp,Common; GETA $255,U6a; TRAP 0,:Fputs,:StdOut LDW $255,:C,:UserID; PUSHJ $255,:print:int GETA $255,U6b; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 U6a BYTE "U6 User ",0; SWYM U6b BYTE " gets out, leaves the system",10,0; SWYM :LogE1 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E1; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E1 BYTE "E1 Elevator dormant",10,0; SWYM :LogE2 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E2; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E2 BYTE "E2 Elevator stops",10,0; SWYM :LogE3 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E3; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E3 BYTE "E3 Elevator doors start to open",10,0; SWYM :LogE4 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E4; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E4 BYTE "E4 Doors open, nobody is there",10,0; SWYM :LogE5f GET return,:rJ; PUSHJ tmp,Common; GETA $255,E5f; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E5f BYTE "E5 Doors flutter",10,0; SWYM :LogE5 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E5; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E5 BYTE "E5 Elevator doors start to close",10,0; SWYM :LogE6 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E6; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E6 BYTE "E6 Elevator prepares to move",10,0; SWYM :LogE7 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E7; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E7 BYTE "E7 Elevator moving up",10,0; SWYM :LogE8 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E8; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E8 BYTE "E8 Elevator moving down",10,0; SWYM Common GET return,:rJ; SET $255,:time; PUSHJ $255,:print:int; PUSHJ $255,:print:tab GETA $255,statestr; 4ADDU $255,:state,$255; TRAP 0,:Fputs,:StdOut SET $255,:floor; PUSHJ $255,:print:int; PUSHJ $255,:print:space GETA $255,flagstr; 4ADDU $255,:loading,$255; TRAP 0,:Fputs,:StdOut GETA $255,flagstr; 4ADDU $255,:bussy,$255; TRAP 0,:Fputs,:StdOut GETA $255,flagstr; 4ADDU $255,:waiting,$255; TRAP 0,:Fputs,:StdOut %%% SET $255,:loading; PUSHJ $255,:print:int; PUSHJ $255,:print:space %%% SET $255,:bussy; PUSHJ $255,:print:int; PUSHJ $255,:print:space %%% SET $255,:waiting; PUSHJ $255,:print:int; PUSHJ $255,:print:space PUT :rJ,return; POP 0,0 flagstr BYTE "0 ",0,0 BYTE "X ",0,0 BYTE "D",9,0,0 statestr BYTE "N",9,0,0 BYTE "U",9,0,0 PREFIX :