PREFIX :Log: return IS $0 tmp IS $1 U1 GET return,:rJ; PUSHJ tmp,Common; GETA $255,U1a; TRAP 0,:Fputs,:StdOut LDWU $255,:C,:ID; 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 U4 GET return,:rJ; PUSHJ tmp,Common; GETA $255,U4a; TRAP 0,:Fputs,:StdOut LDW $255,:C,:ID; 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 U5 GET return,:rJ; PUSHJ tmp,Common; GETA $255,U5a; TRAP 0,:Fputs,:StdOut LDW $255,:C,:ID; 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 U6 GET return,:rJ; PUSHJ tmp,Common; GETA $255,U6a; TRAP 0,:Fputs,:StdOut LDW $255,:C,:ID; 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 E1 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E1a; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E1a BYTE "E1 Elevator dormant",10,0; SWYM E2 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E2a; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E2a BYTE "E2 Elevator stops",10,0; SWYM E3 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E3a; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E3a BYTE "E3 Elevator doors start to open",10,0; SWYM E4 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E4a; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E4a BYTE "E4 Doors open, nobody is there",10,0; SWYM E5f GET return,:rJ; PUSHJ tmp,Common; GETA $255,E5fa; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E5fa BYTE "E5 Doors flutter",10,0; SWYM E5 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E5a; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E5a BYTE "E5 Elevator doors start to close",10,0; SWYM E6 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E6a; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E6a BYTE "E6 Elevator prepares to move",10,0; SWYM E7 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E7a; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E7a BYTE "E7 Elevator moving up",10,0; SWYM E8 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E8a; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E8a BYTE "E8 Elevator moving down",10,0; SWYM E9 GET return,:rJ; PUSHJ tmp,Common; GETA $255,E9a; TRAP 0,:Fputs,:StdOut PUT :rJ,return; POP 0,0 E9a BYTE "E9 Elevator changes bussy state",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 :