| MODULE Oberon; (*JG 6.9.90 / 23.9.93 / 13.8.94 / NW 14.4.2013 / 22.12.2015*) |
| .MODULE Oberon (KEY A89CCEE2, VERSION 1, SIZE 00001CD4) |
| .IMPORT Kernel (KEY 97E012DD) |
| .IMPORT Files (KEY 73F5D686) |
| .IMPORT Modules (KEY 41C6A19A) |
| .IMPORT Input (KEY 5DE391A8) |
| .IMPORT Display (KEY 4C08D3EA) |
| .IMPORT Viewers (KEY 25ABF199) |
| .IMPORT Fonts (KEY F4C9F557) |
| .IMPORT Texts (KEY 0B9E9984) |
| .TYPEDESC 00000020 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000020 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000040 0002800B FFFFFFFF FFFFFFFF 00000014 FFFFFFFF 00000020 00040006 FFFFFFFF FFFFFFFF 00000004 FFFFFFFF 00000020 00058006 FFFFFFFF FFFFFFFF FFFFFFFF 00000020 0006C005 FFFFFFFF FFFFFFFF 00000000 FFFFFFFF 00000020 FFFFFFFF FFFFFFFF FFFFFFFF 0000000C FFFFFFFF |
| .DATA 84H |
| .STRING 120H "System" |
| .POINTER_REFERENCES E0H E4H F0H ECH E8H F8H 108H 11CH |
| .FIXUP T 1CH |
| IMPORT SYSTEM, Kernel, Files, Modules, Input, Display, Viewers, Fonts, Texts; |
| |
| CONST (*message ids*) |
| consume* = 0; track* = 1; defocus* = 0; neutralize* = 1; mark* = 2; |
| off = 0; idle = 1; active = 2; (*task states*) |
| BasicCycle = 20; |
| ESC = 1BX; SETSTAR = 1AX; |
| |
| TYPE Painter* = PROCEDURE (x, y: INTEGER); |
| Marker* = RECORD Fade*, Draw*: Painter END; |
| |
| Cursor* = RECORD |
| marker*: Marker; on*: BOOLEAN; X*, Y*: INTEGER |
| END; |
| |
| InputMsg* = RECORD (Display.FrameMsg) |
| id*: INTEGER; |
| keys*: SET; |
| X*, Y*: INTEGER; |
| ch*: CHAR; |
| fnt*: Fonts.Font; |
| col*, voff*: INTEGER |
| END; |
| |
| SelectionMsg* = RECORD (Display.FrameMsg) |
| time*: LONGINT; |
| text*: Texts.Text; |
| beg*, end*: LONGINT |
| END; |
| |
| ControlMsg* = RECORD (Display.FrameMsg) |
| id*, X*, Y*: INTEGER |
| END; |
| |
| CopyMsg* = RECORD (Display.FrameMsg) |
| F*: Display.Frame |
| END; |
| |
| Task* = POINTER TO TaskDesc; |
| |
| Handler* = PROCEDURE; |
| |
| TaskDesc* = RECORD |
| state, nextTime, period*: INTEGER; |
| next: Task; |
| handle: Handler |
| END; |
| |
| VAR User*: ARRAY 8 OF CHAR; Password*: LONGINT; |
| Arrow*, Star*: Marker; |
| Mouse, Pointer: Cursor; |
| FocusViewer*: Viewers.Viewer; |
| Log*: Texts.Text; |
| |
| Par*: RECORD |
| vwr*: Viewers.Viewer; |
| frame*: Display.Frame; |
| text*: Texts.Text; |
| pos*: LONGINT |
| END; |
| |
| CurFnt*: Fonts.Font; |
| CurCol*, CurOff*: INTEGER; |
| NofTasks*: INTEGER; |
| |
| CurTask: Task; |
| DW, DH, CL: INTEGER; |
| ActCnt: INTEGER; (*action count for GC*) |
| Mod: Modules.Module; |
| |
| (*user identification*) |
| |
| PROCEDURE Code(VAR s: ARRAY OF CHAR): LONGINT; |
| VAR i: INTEGER; a, b, c: LONGINT; |
| BEGINa |
0000 | a .PROC 1 |
0000 | a(4EE9001C): SUB SP, SP, 1CH |
0001 | a(AFE00000): STR LNK, SP, 0H |
0002 | a(A0E00004): STR R0, SP, 4H |
0003 | a(A1E00008): STR R1, SP, 8H |
| a := 0;b b := 0;c i := 0;d |
0004 | b(40000000): MOV R0, R0, 0H |
0005 | b .PROC 2 |
0005 | b(A0E00010): STR R0, SP, 10H |
0006 | c(40000000): MOV R0, R0, 0H |
0007 | c(A0E00014): STR R0, SP, 14H |
0008 | d(40000000): MOV R0, R0, 0H |
0009 | d(A0E0000C): STR R0, SP, CH |
| WHILE s[i]e # 0X DOf |
000A | e .PROC 3 |
000A | e(80E0000C): LDR R0, SP, CH |
000B | e(81E00008): LDR R1, SP, 8H |
000C | e(01090001): SUB R1, R0, R1 |
000D | e(DA072B1C): BLCC MT [trap=1, pos=1835] |
000E | e(81E00004): LDR R1, SP, 4H |
000F | e(00180000): ADD R0, R1, R0 |
0010 | f .PROC 4 |
0010 | f(90000000): LDR R0, R0, 0H |
0011 | f(E1000016): BEQ 22 [0028H] |
| c := b;g b := a;h a := (c MOD 509 +i 1)j * 127 +k ORD(s[i]l);m |
0012 | g(80E00014): LDR R0, SP, 14H |
0013 | g(A0E00018): STR R0, SP, 18H |
0014 | h(80E00010): LDR R0, SP, 10H |
0015 | h(A0E00014): STR R0, SP, 14H |
0016 | i .PROC 5 |
0016 | i(80E00018): LDR R0, SP, 18H |
0017 | i(400B01FD): DIV R0, R0, 1FDH |
0018 | i(20000000): MOV' R0, R0, R0 |
0019 | j(40080001): ADD R0, R0, 1H |
001A | k(400A007F): MUL R0, R0, 7FH |
001B | l .PROC 6 |
001B | l(81E0000C): LDR R1, SP, CH |
001C | l(82E00008): LDR R2, SP, 8H |
001D | l(02190002): SUB R2, R1, R2 |
001E | l(DA076F1C): BLCC MT [trap=1, pos=1903] |
001F | l(82E00004): LDR R2, SP, 4H |
0020 | l(01280001): ADD R1, R2, R1 |
0021 | m .PROC 7 |
0021 | m(91100000): LDR R1, R1, 0H |
0022 | m(00080001): ADD R0, R0, R1 |
0023 | m(A0E00010): STR R0, SP, 10H |
| INC(i) |
| ENDn; |
0024 | n(80E0000C): LDR R0, SP, CH |
0025 | n(40080001): ADD R0, R0, 1H |
0026 | n(A0E0000C): STR R0, SP, CH |
0027 | n .PROC 8 |
0027 | n(E7FFFFE2): B -30 [000AH] |
| IF b >= 32768 THENo b := b - 65536 ENDp; |
0028 | o(80E00014): LDR R0, SP, 14H |
0029 | o .PROC 9 |
0029 | o(40098000): SUB R0, R0, FFFF8000H |
002A | o .PROC 10 |
002A | o(E5000004): BLT 4 [002FH] |
002B | p(80E00014): LDR R0, SP, 14H |
002C | p .PROC 11 |
002C | p(61000001): MOV' R1, R0, 1H |
002D | p(00090001): SUB R0, R0, R1 |
002E | p(A0E00014): STR R0, SP, 14H |
| RETURN b * 65536 +q a |
002F | q(80E00014): LDR R0, SP, 14H |
0030 | q(40010010): LSL R0, R0, 10H |
| ENDr Code; |
0031 | r(81E00010): LDR R1, SP, 10H |
0032 | r(00080001): ADD R0, R0, R1 |
0033 | r(8FE00000): LDR LNK, SP, 0H |
0034 | r(4EE8001C): ADD SP, SP, 1CH |
0035 | r(C700000F): B LNK |
| |
| PROCEDURE SetUser* (VAR user, password: ARRAY OF CHAR); |
| BEGINs User := user;t Password := Code(password)u |
0036 | s .PROC 19 |
0036 | s(4EE90014): SUB SP, SP, 14H |
0037 | s(AFE00000): STR LNK, SP, 0H |
0038 | s .PROC 12 |
0038 | s(A0E00004): STR R0, SP, 4H |
0039 | s .PROC 13 |
0039 | s(A1E00008): STR R1, SP, 8H |
003A | s .PROC 14 |
003A | s(A2E0000C): STR R2, SP, CH |
003B | s(A3E00010): STR R3, SP, 10H |
003C | t .FIXUP D |
003C | t(8D00003C): LDR SB, MT, MOD0 [Oberon] |
003D | t(40D8009C): ADD R0, SB, 9CH [data] |
003E | t .PROC 15 |
003E | t(81E00004): LDR R1, SP, 4H |
003F | t .PROC 16 |
003F | t(82E00008): LDR R2, SP, 8H |
0040 | t .PROC 17 |
0040 | t(E100000B): BEQ 11 [004CH] |
0041 | t .PROC 18 |
0041 | t(42280003): ADD R2, R2, 3H |
0042 | t(42220002): ASR R2, R2, 2H |
0043 | t(43000002): MOV R3, R0, 2H |
0044 | t(03290003): SUB R3, R2, R3 |
0045 | t(DE08283C): BLGT MT [trap=3, pos=2088] |
0046 | t(83100000): LDR R3, R1, 0H |
0047 | t(41180004): ADD R1, R1, 4H |
0048 | t(A3000000): STR R3, R0, 0H |
0049 | t(40080004): ADD R0, R0, 4H |
004A | t(42290001): SUB R2, R2, 1H |
004B | t(E9FFFFFA): BNE -6 [0046H] |
004C | u(80E0000C): LDR R0, SP, CH |
004D | u(81E00010): LDR R1, SP, 10H |
| ENDv SetUser; |
004E | v(F7FFFFB1): BL -79 [0000H] |
004F | v .FIXUP D |
004F | v(8D000013): LDR SB, MT, MOD0 [Oberon] |
0050 | v(A0D000A4): STR R0, SB, A4H [data] |
0051 | v(8FE00000): LDR LNK, SP, 0H |
0052 | v(4EE80014): ADD SP, SP, 14H |
0053 | v(C700000F): B LNK |
| |
| PROCEDURE Clock*(): LONGINT; |
| BEGINw RETURN Kernel.Clock() |
0054 | w .PROC 20 |
0054 | w(4EE90004): SUB SP, SP, 4H |
0055 | w(AFE00000): STR LNK, SP, 0H |
| ENDx Clock; |
0056 | x .FIXUP P |
0056 | x(F7112056): BL MOD1 [Kernel] PROC18 |
0057 | x(8FE00000): LDR LNK, SP, 0H |
0058 | x(4EE80004): ADD SP, SP, 4H |
0059 | x(C700000F): B LNK |
| |
| PROCEDURE SetClock* (d: LONGINT); |
| BEGINy Kernel.SetClock(d)z |
005A | y .PROC 21 |
005A | y(4EE90008): SUB SP, SP, 8H |
005B | y(AFE00000): STR LNK, SP, 0H |
005C | y(A0E00004): STR R0, SP, 4H |
005D | z(80E00004): LDR R0, SP, 4H |
| ENDa SetClock; |
005E | a .FIXUP P |
005E | a(F7113008): BL MOD1 [Kernel] PROC19 |
005F | a(8FE00000): LDR LNK, SP, 0H |
0060 | a(4EE80008): ADD SP, SP, 8H |
0061 | a(C700000F): B LNK |
| |
| PROCEDURE Time*(): LONGINT; |
| BEGINb RETURN Kernel.Time() |
0062 | b .PROC 22 |
0062 | b(4EE90004): SUB SP, SP, 4H |
0063 | b(AFE00000): STR LNK, SP, 0H |
| ENDc Time; |
0064 | c .FIXUP P |
0064 | c(F7111006): BL MOD1 [Kernel] PROC17 |
0065 | c(8FE00000): LDR LNK, SP, 0H |
0066 | c(4EE80004): ADD SP, SP, 4H |
0067 | c(C700000F): B LNK |
| |
| (*cursor handling*) |
| |
| PROCEDURE FlipArrow (X, Y: INTEGER); |
| BEGINd |
0068 | d(4EE9000C): SUB SP, SP, CH |
0069 | d(AFE00000): STR LNK, SP, 0H |
006A | d(A0E00004): STR R0, SP, 4H |
006B | d(A1E00008): STR R1, SP, 8H |
| IF X < CL THENe |
006C | e(80E00004): LDR R0, SP, 4H |
006D | e .FIXUP D |
006D | e(8D00001E): LDR SB, MT, MOD0 [Oberon] |
006E | e(81D00114): LDR R1, SB, 114H [data] |
006F | e(00090001): SUB R0, R0, R1 |
0070 | e(ED00000B): BGE 11 [007CH] |
| IF X > DW - 15 THENf X := DW - 15 ENDg |
0071 | f .FIXUP D |
0071 | f(8D000004): LDR SB, MT, MOD0 [Oberon] |
0072 | f(80D0010C): LDR R0, SB, 10CH [data] |
0073 | f(4009000F): SUB R0, R0, FH |
0074 | f(81E00004): LDR R1, SP, 4H |
0075 | f(01190000): SUB R1, R1, R0 |
0076 | f(E6000004): BLE 4 [007BH] |
0077 | g .FIXUP D |
0077 | g(8D000006): LDR SB, MT, MOD0 [Oberon] |
0078 | g(80D0010C): LDR R0, SB, 10CH [data] |
0079 | g(4009000F): SUB R0, R0, FH |
007A | g(A0E00004): STR R0, SP, 4H |
| ELSE |
| IFh X > CL + DW -i 15 THENj X := CL + DW -k 15 ENDl |
007B | h(E700000E): B 14 [008AH] |
007C | i .FIXUP D |
007C | i(8D000005): LDR SB, MT, MOD0 [Oberon] |
007D | i(80D00114): LDR R0, SB, 114H [data] |
007E | i(81D0010C): LDR R1, SB, 10CH |
007F | i(00080001): ADD R0, R0, R1 |
0080 | j(4009000F): SUB R0, R0, FH |
0081 | j(81E00004): LDR R1, SP, 4H |
0082 | j(01190000): SUB R1, R1, R0 |
0083 | j(E6000006): BLE 6 [008AH] |
0084 | k .FIXUP D |
0084 | k(8D000008): LDR SB, MT, MOD0 [Oberon] |
0085 | k(80D00114): LDR R0, SB, 114H [data] |
0086 | k(81D0010C): LDR R1, SB, 10CH |
0087 | k(00080001): ADD R0, R0, R1 |
0088 | l(4009000F): SUB R0, R0, FH |
0089 | l(A0E00004): STR R0, SP, 4H |
| END; |
| IF Y < 14 THENm Y := 14 ELSIFn Yo > DH THENp Y := DH ENDq; |
008A | m(80E00008): LDR R0, SP, 8H |
008B | m(4009000E): SUB R0, R0, EH |
008C | m(ED000003): BGE 3 [0090H] |
008D | n(4000000E): MOV R0, R0, EH |
008E | n(A0E00008): STR R0, SP, 8H |
008F | o(E7000008): B 8 [0098H] |
0090 | p(80E00008): LDR R0, SP, 8H |
0091 | p .FIXUP D |
0091 | p(8D00000D): LDR SB, MT, MOD0 [Oberon] |
0092 | p(81D00110): LDR R1, SB, 110H [data] |
0093 | p(00090001): SUB R0, R0, R1 |
0094 | p(E6000003): BLE 3 [0098H] |
0095 | q .FIXUP D |
0095 | q(8D000004): LDR SB, MT, MOD0 [Oberon] |
0096 | q(80D00110): LDR R0, SB, 110H [data] |
0097 | q(A0E00008): STR R0, SP, 8H |
| Display.CopyPattern(Display.white,r Display.arrow,s X,t Y - 14,u Display.invert)v |
0098 | r(40000001): MOV R0, R0, 1H |
0099 | s .FIXUP D |
0099 | s(8D500004): LDR SB, MT, MOD5 [Display] |
009A | s(81D00006): LDR R1, SB, VAR6 |
009B | t(82E00004): LDR R2, SP, 4H |
009C | u(83E00008): LDR R3, SP, 8H |
009D | u(4339000E): SUB R3, R3, EH |
009E | v(44000002): MOV R4, R0, 2H |
| ENDw FlipArrow; |
009F | w .FIXUP P |
009F | w(F751003B): BL MOD5 [Display] PROC16 |
00A0 | w(8FE00000): LDR LNK, SP, 0H |
00A1 | w(4EE8000C): ADD SP, SP, CH |
00A2 | w(C700000F): B LNK |
| |
| PROCEDURE FlipStar (X, Y: INTEGER); |
| BEGINx |
00A3 | x(4EE9000C): SUB SP, SP, CH |
00A4 | x(AFE00000): STR LNK, SP, 0H |
00A5 | x(A0E00004): STR R0, SP, 4H |
00A6 | x(A1E00008): STR R1, SP, 8H |
| IF X < CL THENy |
00A7 | y(80E00004): LDR R0, SP, 4H |
00A8 | y .FIXUP D |
00A8 | y(8D00000F): LDR SB, MT, MOD0 [Oberon] |
00A9 | y(81D00114): LDR R1, SB, 114H [data] |
00AA | y(00090001): SUB R0, R0, R1 |
00AB | y(ED000011): BGE 17 [00BDH] |
| IF X < 7 THENz X := 7 ELSIFa Xb > DW - 8 THENc X := DW - 8 ENDd |
00AC | z(80E00004): LDR R0, SP, 4H |
00AD | z(40090007): SUB R0, R0, 7H |
00AE | z(ED000003): BGE 3 [00B2H] |
00AF | a(40000007): MOV R0, R0, 7H |
00B0 | a(A0E00004): STR R0, SP, 4H |
00B1 | b(E700000A): B 10 [00BCH] |
00B2 | c .FIXUP D |
00B2 | c(8D00000A): LDR SB, MT, MOD0 [Oberon] |
00B3 | c(80D0010C): LDR R0, SB, 10CH [data] |
00B4 | c(40090008): SUB R0, R0, 8H |
00B5 | c(81E00004): LDR R1, SP, 4H |
00B6 | c(01190000): SUB R1, R1, R0 |
00B7 | c(E6000004): BLE 4 [00BCH] |
00B8 | d .FIXUP D |
00B8 | d(8D000006): LDR SB, MT, MOD0 [Oberon] |
00B9 | d(80D0010C): LDR R0, SB, 10CH [data] |
00BA | d(40090008): SUB R0, R0, 8H |
00BB | d(A0E00004): STR R0, SP, 4H |
| ELSE |
| IFe X < CL + 7 THENf X := CL + 7 ELSIFg Xh > CL + DW -i 8 THENj X := CL + DW -k 8 ENDl |
00BC | e(E7000019): B 25 [00D6H] |
00BD | f .FIXUP D |
00BD | f(8D000005): LDR SB, MT, MOD0 [Oberon] |
00BE | f(80D00114): LDR R0, SB, 114H [data] |
00BF | f(40080007): ADD R0, R0, 7H |
00C0 | f(81E00004): LDR R1, SP, 4H |
00C1 | f(01190000): SUB R1, R1, R0 |
00C2 | f(ED000005): BGE 5 [00C8H] |
00C3 | g .FIXUP D |
00C3 | g(8D000006): LDR SB, MT, MOD0 [Oberon] |
00C4 | g(80D00114): LDR R0, SB, 114H [data] |
00C5 | g(40080007): ADD R0, R0, 7H |
00C6 | g(A0E00004): STR R0, SP, 4H |
00C7 | h(E700000E): B 14 [00D6H] |
00C8 | i .FIXUP D |
00C8 | i(8D000005): LDR SB, MT, MOD0 [Oberon] |
00C9 | i(80D00114): LDR R0, SB, 114H [data] |
00CA | i(81D0010C): LDR R1, SB, 10CH |
00CB | i(00080001): ADD R0, R0, R1 |
00CC | j(40090008): SUB R0, R0, 8H |
00CD | j(81E00004): LDR R1, SP, 4H |
00CE | j(01190000): SUB R1, R1, R0 |
00CF | j(E6000006): BLE 6 [00D6H] |
00D0 | k .FIXUP D |
00D0 | k(8D000008): LDR SB, MT, MOD0 [Oberon] |
00D1 | k(80D00114): LDR R0, SB, 114H [data] |
00D2 | k(81D0010C): LDR R1, SB, 10CH |
00D3 | k(00080001): ADD R0, R0, R1 |
00D4 | l(40090008): SUB R0, R0, 8H |
00D5 | l(A0E00004): STR R0, SP, 4H |
| END ; |
| IF Y < 7 THENm Y := 7 ELSIFn Yo > DH - 8 THENp Y := DH - 8 ENDq; |
00D6 | m(80E00008): LDR R0, SP, 8H |
00D7 | m(40090007): SUB R0, R0, 7H |
00D8 | m(ED000003): BGE 3 [00DCH] |
00D9 | n(40000007): MOV R0, R0, 7H |
00DA | n(A0E00008): STR R0, SP, 8H |
00DB | o(E700000A): B 10 [00E6H] |
00DC | p .FIXUP D |
00DC | p(8D00000C): LDR SB, MT, MOD0 [Oberon] |
00DD | p(80D00110): LDR R0, SB, 110H [data] |
00DE | p(40090008): SUB R0, R0, 8H |
00DF | p(81E00008): LDR R1, SP, 8H |
00E0 | p(01190000): SUB R1, R1, R0 |
00E1 | p(E6000004): BLE 4 [00E6H] |
00E2 | q .FIXUP D |
00E2 | q(8D000006): LDR SB, MT, MOD0 [Oberon] |
00E3 | q(80D00110): LDR R0, SB, 110H [data] |
00E4 | q(40090008): SUB R0, R0, 8H |
00E5 | q(A0E00008): STR R0, SP, 8H |
| Display.CopyPattern(Display.white,r Display.star,s X - 7,t Y - 7,u Display.invert)v |
00E6 | r(40000001): MOV R0, R0, 1H |
00E7 | s .FIXUP D |
00E7 | s(8D500005): LDR SB, MT, MOD5 [Display] |
00E8 | s(81D00007): LDR R1, SB, VAR7 |
00E9 | t(82E00004): LDR R2, SP, 4H |
00EA | t(42290007): SUB R2, R2, 7H |
00EB | u(83E00008): LDR R3, SP, 8H |
00EC | u(43390007): SUB R3, R3, 7H |
00ED | v(44000002): MOV R4, R0, 2H |
| ENDw FlipStar; |
00EE | w .FIXUP P |
00EE | w(F751004F): BL MOD5 [Display] PROC16 |
00EF | w(8FE00000): LDR LNK, SP, 0H |
00F0 | w(4EE8000C): ADD SP, SP, CH |
00F1 | w(C700000F): B LNK |
| |
| PROCEDURE OpenCursor(VAR c: Cursor); |
| BEGINx c.on := FALSE;y c.X := 0;z c.Y := 0 |
00F2 | x(4EE9000C): SUB SP, SP, CH |
00F3 | x(AFE00000): STR LNK, SP, 0H |
00F4 | x(A0E00004): STR R0, SP, 4H |
00F5 | x(A1E00008): STR R1, SP, 8H |
00F6 | y(40000000): MOV R0, R0, 0H |
00F7 | y(81E00004): LDR R1, SP, 4H |
00F8 | y(B0100008): STR R0, R1, 8H |
00F9 | z(40000000): MOV R0, R0, 0H |
00FA | z(81E00004): LDR R1, SP, 4H |
00FB | z(A010000C): STR R0, R1, CH |
| ENDa OpenCursor; |
00FC | a(40000000): MOV R0, R0, 0H |
00FD | a(81E00004): LDR R1, SP, 4H |
00FE | a(A0100010): STR R0, R1, 10H |
00FF | a(8FE00000): LDR LNK, SP, 0H |
0100 | a(4EE8000C): ADD SP, SP, CH |
0101 | a(C700000F): B LNK |
| |
| PROCEDURE FadeCursor(VAR c: Cursor); |
| BEGINb IF c.on THENc c.marker.Fade(c.X,d c.Y)e;f c.on := FALSE ENDg |
0102 | b(4EE9000C): SUB SP, SP, CH |
0103 | b(AFE00000): STR LNK, SP, 0H |
0104 | b(A0E00004): STR R0, SP, 4H |
0105 | b(A1E00008): STR R1, SP, 8H |
0106 | c(80E00004): LDR R0, SP, 4H |
0107 | c(90000008): LDR R0, R0, 8H |
0108 | c(E100000B): BEQ 11 [0114H] |
0109 | d(80E00004): LDR R0, SP, 4H |
010A | d(8000000C): LDR R0, R0, CH |
010B | e(81E00004): LDR R1, SP, 4H |
010C | e(81100010): LDR R1, R1, 10H |
010D | f(82E00004): LDR R2, SP, 4H |
010E | f(82200000): LDR R2, R2, 0H |
010F | f(D10CEB5C): BLEQ MT [trap=5, pos=3307] |
0110 | f(D7000002): BL R2 |
0111 | g(40000000): MOV R0, R0, 0H |
0112 | g(81E00004): LDR R1, SP, 4H |
0113 | g(B0100008): STR R0, R1, 8H |
| ENDh FadeCursor; |
0114 | h(8FE00000): LDR LNK, SP, 0H |
0115 | h(4EE8000C): ADD SP, SP, CH |
0116 | h(C700000F): B LNK |
| |
| PROCEDURE DrawCursor(VAR c: Cursor; m: Marker; x, y: INTEGER); |
| BEGINi |
0117 | i(4EE9001C): SUB SP, SP, 1CH |
0118 | i(AFE00000): STR LNK, SP, 0H |
0119 | i(A0E00004): STR R0, SP, 4H |
011A | i(A1E00008): STR R1, SP, 8H |
011B | i(A2E0000C): STR R2, SP, CH |
011C | i(A3E00010): STR R3, SP, 10H |
011D | i(A4E00014): STR R4, SP, 14H |
011E | i(A5E00018): STR R5, SP, 18H |
| IF c.on & (j(x # c.X)k OR (ly # c.Y)m OR (nm.Draw # c.marker.Draw)o) THENp |
011F | j(80E00004): LDR R0, SP, 4H |
0120 | j(90000008): LDR R0, R0, 8H |
0121 | j(E100001B): BEQ 27 [013DH] |
0122 | k(80E00014): LDR R0, SP, 14H |
0123 | k(81E00004): LDR R1, SP, 4H |
0124 | k(8110000C): LDR R1, R1, CH |
0125 | k(00090001): SUB R0, R0, R1 |
0126 | l(E900000B): BNE 11 [0132H] |
0127 | m(80E00018): LDR R0, SP, 18H |
0128 | m(81E00004): LDR R1, SP, 4H |
0129 | m(81100010): LDR R1, R1, 10H |
012A | m(00090001): SUB R0, R0, R1 |
012B | n(E9000006): BNE 6 [0132H] |
012C | o(80E0000C): LDR R0, SP, CH |
012D | o(80000004): LDR R0, R0, 4H |
012E | o(81E00004): LDR R1, SP, 4H |
012F | o(81100004): LDR R1, R1, 4H |
0130 | o(00090001): SUB R0, R0, R1 |
0131 | p(E100000B): BEQ 11 [013DH] |
| c.marker.Fade(c.X,q c.Y)r;s c.on := FALSE |
0132 | q(80E00004): LDR R0, SP, 4H |
0133 | q(8000000C): LDR R0, R0, CH |
0134 | r(81E00004): LDR R1, SP, 4H |
0135 | r(81100010): LDR R1, R1, 10H |
0136 | s(82E00004): LDR R2, SP, 4H |
0137 | s(82200000): LDR R2, R2, 0H |
0138 | s(D10DC05C): BLEQ MT [trap=5, pos=3520] |
0139 | s(D7000002): BL R2 |
| ENDt; |
013A | t(40000000): MOV R0, R0, 0H |
013B | t(81E00004): LDR R1, SP, 4H |
013C | t(B0100008): STR R0, R1, 8H |
| IF ~c.on THENu |
013D | u(80E00004): LDR R0, SP, 4H |
013E | u(90000008): LDR R0, R0, 8H |
013F | u(E9000018): BNE 24 [0158H] |
| m.Draw(x,v y)w;x c.marker := m;y c.X := x;z c.Y := y;a c.on := TRUE |
0140 | v(80E00014): LDR R0, SP, 14H |
0141 | w(81E00018): LDR R1, SP, 18H |
0142 | x(82E0000C): LDR R2, SP, CH |
0143 | x(82200004): LDR R2, R2, 4H |
0144 | x(D10DFD5C): BLEQ MT [trap=5, pos=3581] |
0145 | x(D7000002): BL R2 |
0146 | y(80E00004): LDR R0, SP, 4H |
0147 | y(81E0000C): LDR R1, SP, CH |
0148 | y(42000002): MOV R2, R0, 2H |
0149 | y(83100000): LDR R3, R1, 0H |
014A | y(41180004): ADD R1, R1, 4H |
014B | y(A3000000): STR R3, R0, 0H |
014C | y(40080004): ADD R0, R0, 4H |
014D | y(42290001): SUB R2, R2, 1H |
014E | y(E9FFFFFA): BNE -6 [0149H] |
014F | z(80E00014): LDR R0, SP, 14H |
0150 | z(81E00004): LDR R1, SP, 4H |
0151 | z(A010000C): STR R0, R1, CH |
0152 | a(80E00018): LDR R0, SP, 18H |
0153 | a(81E00004): LDR R1, SP, 4H |
0154 | a(A0100010): STR R0, R1, 10H |
| ENDb |
0155 | b(40000001): MOV R0, R0, 1H |
0156 | b(81E00004): LDR R1, SP, 4H |
0157 | b(B0100008): STR R0, R1, 8H |
| ENDc DrawCursor; |
0158 | c(8FE00000): LDR LNK, SP, 0H |
0159 | c(4EE8001C): ADD SP, SP, 1CH |
015A | c(C700000F): B LNK |
| |
| PROCEDURE DrawMouse*(m: Marker; x, y: INTEGER); |
| BEGINd DrawCursor(Mouse,e m,f x,g y)h |
015B | d .PROC 23 |
015B | d(4EE90014): SUB SP, SP, 14H |
015C | d(AFE00000): STR LNK, SP, 0H |
015D | d(A0E00004): STR R0, SP, 4H |
015E | d(A1E00008): STR R1, SP, 8H |
015F | d(A2E0000C): STR R2, SP, CH |
0160 | d(A3E00010): STR R3, SP, 10H |
0161 | e .FIXUP D |
0161 | e(8D00007A): LDR SB, MT, MOD0 [Oberon] |
0162 | e(40D800B8): ADD R0, SB, B8H [data] |
0163 | e(41D80014): ADD R1, SB, 14H |
0164 | f(82E00004): LDR R2, SP, 4H |
0165 | f(83E00008): LDR R3, SP, 8H |
0166 | g(84E0000C): LDR R4, SP, CH |
0167 | h(85E00010): LDR R5, SP, 10H |
| ENDi DrawMouse; |
0168 | i(F7FFFFAE): BL -82 [0117H] |
0169 | i(8FE00000): LDR LNK, SP, 0H |
016A | i(4EE80014): ADD SP, SP, 14H |
016B | i(C700000F): B LNK |
| |
| PROCEDURE DrawMouseArrow*(x, y: INTEGER); |
| BEGINj DrawCursor(Mouse,k Arrow,l x,m y)n |
016C | j .PROC 24 |
016C | j(4EE9000C): SUB SP, SP, CH |
016D | j(AFE00000): STR LNK, SP, 0H |
016E | j(A0E00004): STR R0, SP, 4H |
016F | j(A1E00008): STR R1, SP, 8H |
0170 | k .FIXUP D |
0170 | k(8D00000F): LDR SB, MT, MOD0 [Oberon] |
0171 | k(40D800B8): ADD R0, SB, B8H [data] |
0172 | k(41D80014): ADD R1, SB, 14H |
0173 | l(42D800A8): ADD R2, SB, A8H |
0174 | l(43D80000): ADD R3, SB, 0H |
0175 | m(84E00004): LDR R4, SP, 4H |
0176 | n(85E00008): LDR R5, SP, 8H |
| ENDo DrawMouseArrow; |
0177 | o(F7FFFF9F): BL -97 [0117H] |
0178 | o(8FE00000): LDR LNK, SP, 0H |
0179 | o(4EE8000C): ADD SP, SP, CH |
017A | o(C700000F): B LNK |
| |
| PROCEDURE FadeMouse*; |
| BEGINp FadeCursor(Mouse)q |
017B | p .PROC 25 |
017B | p .COMMAND FadeMouse |
017B | p(4EE90004): SUB SP, SP, 4H |
017C | p(AFE00000): STR LNK, SP, 0H |
017D | q .FIXUP D |
017D | q(8D00000D): LDR SB, MT, MOD0 [Oberon] |
017E | q(40D800B8): ADD R0, SB, B8H [data] |
017F | q(41D80014): ADD R1, SB, 14H |
| ENDr FadeMouse; |
0180 | r(F7FFFF81): BL -127 [0102H] |
0181 | r(8FE00000): LDR LNK, SP, 0H |
0182 | r(4EE80004): ADD SP, SP, 4H |
0183 | r(C700000F): B LNK |
| |
| PROCEDURE DrawPointer*(x, y: INTEGER); |
| BEGINs DrawCursor(Pointer,t Star,u x,v y)w |
0184 | s .PROC 26 |
0184 | s(4EE9000C): SUB SP, SP, CH |
0185 | s(AFE00000): STR LNK, SP, 0H |
0186 | s(A0E00004): STR R0, SP, 4H |
0187 | s(A1E00008): STR R1, SP, 8H |
0188 | t .FIXUP D |
0188 | t(8D00000B): LDR SB, MT, MOD0 [Oberon] |
0189 | t(40D800CC): ADD R0, SB, CCH [data] |
018A | t(41D80014): ADD R1, SB, 14H |
018B | u(42D800B0): ADD R2, SB, B0H |
018C | u(43D80000): ADD R3, SB, 0H |
018D | v(84E00004): LDR R4, SP, 4H |
018E | w(85E00008): LDR R5, SP, 8H |
| ENDx DrawPointer; |
018F | x(F7FFFF87): BL -121 [0117H] |
0190 | x(8FE00000): LDR LNK, SP, 0H |
0191 | x(4EE8000C): ADD SP, SP, CH |
0192 | x(C700000F): B LNK |
| |
| (*display management*) |
| |
| PROCEDURE RemoveMarks* (X, Y, W, H: INTEGER); |
| BEGINy |
0193 | y .PROC 27 |
0193 | y(4EE90014): SUB SP, SP, 14H |
0194 | y(AFE00000): STR LNK, SP, 0H |
0195 | y(A0E00004): STR R0, SP, 4H |
0196 | y(A1E00008): STR R1, SP, 8H |
0197 | y(A2E0000C): STR R2, SP, CH |
0198 | y(A3E00010): STR R3, SP, 10H |
| IF (Mouse.X > X - 16)z & (aMouse.X < X + W +b 16)c & (dMouse.Y > Y - 16)e & (fMouse.Y < Y + H +g 16)h THENi |
0199 | z(80E00004): LDR R0, SP, 4H |
019A | z(40090010): SUB R0, R0, 10H |
019B | z .FIXUP D |
019B | z(8D000013): LDR SB, MT, MOD0 [Oberon] |
019C | z(81D000C4): LDR R1, SB, C4H [data] |
019D | z(01190000): SUB R1, R1, R0 |
019E | a(E600001A): BLE 26 [01B9H] |
019F | b(80E00004): LDR R0, SP, 4H |
01A0 | b(81E0000C): LDR R1, SP, CH |
01A1 | b(00080001): ADD R0, R0, R1 |
01A2 | c(40080010): ADD R0, R0, 10H |
01A3 | c .FIXUP D |
01A3 | c(8D000008): LDR SB, MT, MOD0 [Oberon] |
01A4 | c(81D000C4): LDR R1, SB, C4H [data] |
01A5 | c(01190000): SUB R1, R1, R0 |
01A6 | d(ED000012): BGE 18 [01B9H] |
01A7 | e(80E00008): LDR R0, SP, 8H |
01A8 | e(40090010): SUB R0, R0, 10H |
01A9 | e .FIXUP D |
01A9 | e(8D000006): LDR SB, MT, MOD0 [Oberon] |
01AA | e(81D000C8): LDR R1, SB, C8H [data] |
01AB | e(01190000): SUB R1, R1, R0 |
01AC | f(E600000C): BLE 12 [01B9H] |
01AD | g(80E00008): LDR R0, SP, 8H |
01AE | g(81E00010): LDR R1, SP, 10H |
01AF | g(00080001): ADD R0, R0, R1 |
01B0 | h(40080010): ADD R0, R0, 10H |
01B1 | h .FIXUP D |
01B1 | h(8D000008): LDR SB, MT, MOD0 [Oberon] |
01B2 | h(81D000C8): LDR R1, SB, C8H [data] |
01B3 | h(01190000): SUB R1, R1, R0 |
01B4 | i(ED000004): BGE 4 [01B9H] |
| FadeCursor(Mouse)j |
01B5 | j .FIXUP D |
01B5 | j(8D000004): LDR SB, MT, MOD0 [Oberon] |
01B6 | j(40D800B8): ADD R0, SB, B8H [data] |
01B7 | j(41D80014): ADD R1, SB, 14H |
| ENDk; |
01B8 | k(F7FFFF49): BL -183 [0102H] |
| IF (Pointer.X > X - 8)l & (mPointer.X < X + W +n 8)o & (pPointer.Y > Y - 8)q & (rPointer.Y < Y + H +s 8)t THENu |
01B9 | l(80E00004): LDR R0, SP, 4H |
01BA | l(40090008): SUB R0, R0, 8H |
01BB | l .FIXUP D |
01BB | l(8D000006): LDR SB, MT, MOD0 [Oberon] |
01BC | l(81D000D8): LDR R1, SB, D8H [data] |
01BD | l(01190000): SUB R1, R1, R0 |
01BE | m(E600001A): BLE 26 [01D9H] |
01BF | n(80E00004): LDR R0, SP, 4H |
01C0 | n(81E0000C): LDR R1, SP, CH |
01C1 | n(00080001): ADD R0, R0, R1 |
01C2 | o(40080008): ADD R0, R0, 8H |
01C3 | o .FIXUP D |
01C3 | o(8D000008): LDR SB, MT, MOD0 [Oberon] |
01C4 | o(81D000D8): LDR R1, SB, D8H [data] |
01C5 | o(01190000): SUB R1, R1, R0 |
01C6 | p(ED000012): BGE 18 [01D9H] |
01C7 | q(80E00008): LDR R0, SP, 8H |
01C8 | q(40090008): SUB R0, R0, 8H |
01C9 | q .FIXUP D |
01C9 | q(8D000006): LDR SB, MT, MOD0 [Oberon] |
01CA | q(81D000DC): LDR R1, SB, DCH [data] |
01CB | q(01190000): SUB R1, R1, R0 |
01CC | r(E600000C): BLE 12 [01D9H] |
01CD | s(80E00008): LDR R0, SP, 8H |
01CE | s(81E00010): LDR R1, SP, 10H |
01CF | s(00080001): ADD R0, R0, R1 |
01D0 | t(40080008): ADD R0, R0, 8H |
01D1 | t .FIXUP D |
01D1 | t(8D000008): LDR SB, MT, MOD0 [Oberon] |
01D2 | t(81D000DC): LDR R1, SB, DCH [data] |
01D3 | t(01190000): SUB R1, R1, R0 |
01D4 | u(ED000004): BGE 4 [01D9H] |
| FadeCursor(Pointer)v |
01D5 | v .FIXUP D |
01D5 | v(8D000004): LDR SB, MT, MOD0 [Oberon] |
01D6 | v(40D800CC): ADD R0, SB, CCH [data] |
01D7 | v(41D80014): ADD R1, SB, 14H |
| ENDw |
01D8 | w(F7FFFF29): BL -215 [0102H] |
| ENDx RemoveMarks; |
01D9 | x(8FE00000): LDR LNK, SP, 0H |
01DA | x(4EE80014): ADD SP, SP, 14H |
01DB | x(C700000F): B LNK |
| |
| PROCEDURE HandleFiller (V: Display.Frame; VAR M: Display.FrameMsg); |
| BEGINy |
01DC | y(4EE90010): SUB SP, SP, 10H |
01DD | y(AFE00000): STR LNK, SP, 0H |
01DE | y(A0E00004): STR R0, SP, 4H |
01DF | y(A1E00008): STR R1, SP, 8H |
01E0 | y(A2E0000C): STR R2, SP, CH |
| CASE M OF |
| InputMsg:z IF M.id = track THENa DrawCursor(Mouse,b Arrow,c M.X,d M.Y)e ENDf | |
01E1 | z(80E0000C): LDR R0, SP, CH |
01E2 | z(80000004): LDR R0, R0, 4H |
01E3 | z .FIXUP D |
01E3 | z(8D00000E): LDR SB, MT, MOD0 [Oberon] |
01E4 | z(41D80028): ADD R1, SB, 28H [data] |
01E5 | z(01190000): SUB R1, R1, R0 |
01E6 | z(E900000F): BNE 15 [01F6H] |
01E7 | a(80E00008): LDR R0, SP, 8H |
01E8 | a(80000000): LDR R0, R0, 0H |
01E9 | a(40090001): SUB R0, R0, 1H |
01EA | a(E900000A): BNE 10 [01F5H] |
01EB | b .FIXUP D |
01EB | b(8D000008): LDR SB, MT, MOD0 [Oberon] |
01EC | b(40D800B8): ADD R0, SB, B8H [data] |
01ED | b(41D80014): ADD R1, SB, 14H |
01EE | c(42D800A8): ADD R2, SB, A8H |
01EF | c(43D80000): ADD R3, SB, 0H |
01F0 | d(84E00008): LDR R4, SP, 8H |
01F1 | d(84400008): LDR R4, R4, 8H |
01F2 | e(85E00008): LDR R5, SP, 8H |
01F3 | e(8550000C): LDR R5, R5, CH |
01F4 | f(F7FFFF22): BL -222 [0117H] |
| ControlMsgg:h IF M.id = mark THENi DrawCursor(Pointer,j Star,k M.X,l M.Y)m ENDn | |
01F5 | g(E7000070): B 112 [0266H] |
01F6 | h(80E0000C): LDR R0, SP, CH |
01F7 | h(80000004): LDR R0, R0, 4H |
01F8 | h .FIXUP D |
01F8 | h(8D00000D): LDR SB, MT, MOD0 [Oberon] |
01F9 | h(41D80058): ADD R1, SB, 58H [data] |
01FA | h(01190000): SUB R1, R1, R0 |
01FB | h(E900000F): BNE 15 [020BH] |
01FC | i(80E00008): LDR R0, SP, 8H |
01FD | i(80000000): LDR R0, R0, 0H |
01FE | i(40090002): SUB R0, R0, 2H |
01FF | i(E900000A): BNE 10 [020AH] |
0200 | j .FIXUP D |
0200 | j(8D000008): LDR SB, MT, MOD0 [Oberon] |
0201 | j(40D800CC): ADD R0, SB, CCH [data] |
0202 | j(41D80014): ADD R1, SB, 14H |
0203 | k(42D800B0): ADD R2, SB, B0H |
0204 | k(43D80000): ADD R3, SB, 0H |
0205 | l(84E00008): LDR R4, SP, 8H |
0206 | l(84400004): LDR R4, R4, 4H |
0207 | m(85E00008): LDR R5, SP, 8H |
0208 | m(85500008): LDR R5, R5, 8H |
0209 | n(F7FFFF0D): BL -243 [0117H] |
| Viewerso.ViewerMsg:p |
020A | o(E700005B): B 91 [0266H] |
020B | p(80E0000C): LDR R0, SP, CH |
020C | p(80000004): LDR R0, R0, 4H |
020D | p .FIXUP D |
020D | p(8D60000D): LDR SB, MT, MOD6 [Viewers] |
020E | p(41D80002): ADD R1, SB, VAR2 |
020F | p(01190000): SUB R1, R1, R0 |
0210 | p(E9000055): BNE 85 [0266H] |
| IF (M.id = Viewers.restore)q & (rV.Ws > 0)t & (uV.Hv > 0)w THENx |
0211 | q(80E00008): LDR R0, SP, 8H |
0212 | q(80000000): LDR R0, R0, 0H |
0213 | r(E9000027): BNE 39 [023BH] |
0214 | s(80E00004): LDR R0, SP, 4H |
0215 | s(D112714C): BLEQ MT [trap=4, pos=4721] |
0216 | t(80000010): LDR R0, R0, 10H |
0217 | t(40090000): SUB R0, R0, 0H |
0218 | u(E6000022): BLE 34 [023BH] |
0219 | v(80E00004): LDR R0, SP, 4H |
021A | v(D1127D4C): BLEQ MT [trap=4, pos=4733] |
021B | w(80000014): LDR R0, R0, 14H |
021C | w(40090000): SUB R0, R0, 0H |
021D | x(E600001D): BLE 29 [023BH] |
| RemoveMarks(V.Xy,z V.Ya,b V.Wc,d V.He)f;g |
021E | y(80E00004): LDR R0, SP, 4H |
021F | y(D1129F4C): BLEQ MT [trap=4, pos=4767] |
0220 | z(80000008): LDR R0, R0, 8H |
0221 | a(81E00004): LDR R1, SP, 4H |
0222 | a(D112A44C): BLEQ MT [trap=4, pos=4772] |
0223 | b(8110000C): LDR R1, R1, CH |
0224 | c(82E00004): LDR R2, SP, 4H |
0225 | c(D112A94C): BLEQ MT [trap=4, pos=4777] |
0226 | d(82200010): LDR R2, R2, 10H |
0227 | e(83E00004): LDR R3, SP, 4H |
0228 | e(D112AE4C): BLEQ MT [trap=4, pos=4782] |
0229 | f(83300014): LDR R3, R3, 14H |
022A | g(F7FFFF68): BL -152 [0193H] |
| Display.ReplConst(Display.black,h V.Xi,j V.Yk,l V.Wm,n V.Ho,p Display.replace)q |
022B | h(40000000): MOV R0, R0, 0H |
022C | i(81E00004): LDR R1, SP, 4H |
022D | i(D112DD4C): BLEQ MT [trap=4, pos=4829] |
022E | j(81100008): LDR R1, R1, 8H |
022F | k(82E00004): LDR R2, SP, 4H |
0230 | k(D112E24C): BLEQ MT [trap=4, pos=4834] |
0231 | l(8220000C): LDR R2, R2, CH |
0232 | m(83E00004): LDR R3, SP, 4H |
0233 | m(D112E74C): BLEQ MT [trap=4, pos=4839] |
0234 | n(83300010): LDR R3, R3, 10H |
0235 | o(84E00004): LDR R4, SP, 4H |
0236 | o(D112EC4C): BLEQ MT [trap=4, pos=4844] |
0237 | p(84400014): LDR R4, R4, 14H |
0238 | q(45000000): MOV R5, R0, 0H |
| ELSIFr (sM.id = Viewers.modify)t & (uM.Y < V.Yv)w THENx |
0239 | r .FIXUP P |
0239 | r(F750F14B): BL MOD5 [Display] PROC15 |
023A | s(E700002B): B 43 [0266H] |
023B | t(80E00008): LDR R0, SP, 8H |
023C | t(80000000): LDR R0, R0, 0H |
023D | t(40090001): SUB R0, R0, 1H |
023E | u(E9000027): BNE 39 [0266H] |
023F | v(80E00004): LDR R0, SP, 4H |
0240 | v(D1132F4C): BLEQ MT [trap=4, pos=4911] |
0241 | w(81E00008): LDR R1, SP, 8H |
0242 | w(81100008): LDR R1, R1, 8H |
0243 | w(8000000C): LDR R0, R0, CH |
0244 | w(01190000): SUB R1, R1, R0 |
0245 | x(ED000020): BGE 32 [0266H] |
| RemoveMarks(V.Xy,z M.Y,a V.Wb,c V.Yd - M.Y)e;f |
0246 | y(80E00004): LDR R0, SP, 4H |
0247 | y(D1134D4C): BLEQ MT [trap=4, pos=4941] |
0248 | z(80000008): LDR R0, R0, 8H |
0249 | a(81E00008): LDR R1, SP, 8H |
024A | a(81100008): LDR R1, R1, 8H |
024B | b(82E00004): LDR R2, SP, 4H |
024C | b(D113574C): BLEQ MT [trap=4, pos=4951] |
024D | c(82200010): LDR R2, R2, 10H |
024E | d(83E00004): LDR R3, SP, 4H |
024F | d(D1135C4C): BLEQ MT [trap=4, pos=4956] |
0250 | e(8330000C): LDR R3, R3, CH |
0251 | e(84E00008): LDR R4, SP, 8H |
0252 | e(84400008): LDR R4, R4, 8H |
0253 | e(03390004): SUB R3, R3, R4 |
0254 | f(F7FFFF3E): BL -194 [0193H] |
| Display.ReplConst(Display.black,g V.Xh,i M.Y,j V.Wk,l V.Ym - M.Y,n Display.replace)o |
0255 | g(40000000): MOV R0, R0, 0H |
0256 | h(81E00004): LDR R1, SP, 4H |
0257 | h(D113914C): BLEQ MT [trap=4, pos=5009] |
0258 | i(81100008): LDR R1, R1, 8H |
0259 | j(82E00008): LDR R2, SP, 8H |
025A | j(82200008): LDR R2, R2, 8H |
025B | k(83E00004): LDR R3, SP, 4H |
025C | k(D1139B4C): BLEQ MT [trap=4, pos=5019] |
025D | l(83300010): LDR R3, R3, 10H |
025E | m(84E00004): LDR R4, SP, 4H |
025F | m(D113A04C): BLEQ MT [trap=4, pos=5024] |
0260 | n(8440000C): LDR R4, R4, CH |
0261 | n(85E00008): LDR R5, SP, 8H |
0262 | n(85500008): LDR R5, R5, 8H |
0263 | n(04490005): SUB R4, R4, R5 |
0264 | o(45000000): MOV R5, R0, 0H |
| ENDp |
0265 | p .FIXUP P |
0265 | p(F750F02C): BL MOD5 [Display] PROC15 |
| END |
| ENDq HandleFiller; |
0266 | q(8FE00000): LDR LNK, SP, 0H |
0267 | q(4EE80010): ADD SP, SP, 10H |
0268 | q(C700000F): B LNK |
| |
| PROCEDURE OpenDisplay* (UW, SW, H: INTEGER); |
| VAR Filler: Viewers.Viewer; |
| BEGINr |
0269 | r .PROC 28 |
0269 | r(4EE90014): SUB SP, SP, 14H |
026A | r(AFE00000): STR LNK, SP, 0H |
026B | r(A0E00004): STR R0, SP, 4H |
026C | r(A1E00008): STR R1, SP, 8H |
026D | r(A2E0000C): STR R2, SP, CH |
| Input.SetMouseLimits(Viewers.curW + UW +s SW,t H)u;v |
026E | s .FIXUP D |
026E | s(8D600061): LDR SB, MT, MOD6 [Viewers] |
026F | s(80D00003): LDR R0, SB, VAR3 |
0270 | s(81E00004): LDR R1, SP, 4H |
0271 | s(00080001): ADD R0, R0, R1 |
0272 | t(81E00008): LDR R1, SP, 8H |
0273 | t(00080001): ADD R0, R0, R1 |
0274 | u(81E0000C): LDR R1, SP, CH |
0275 | v .FIXUP P |
0275 | v(F7404010): BL MOD4 [Input] PROC4 |
| Display.ReplConst(Display.black,w Viewers.curW,x 0,y UW + SW,z H,a Display.replace)b;c |
0276 | w(40000000): MOV R0, R0, 0H |
0277 | x .FIXUP D |
0277 | x(8D600009): LDR SB, MT, MOD6 [Viewers] |
0278 | x(81D00003): LDR R1, SB, VAR3 |
0279 | y(42000000): MOV R2, R0, 0H |
027A | z(83E00004): LDR R3, SP, 4H |
027B | z(84E00008): LDR R4, SP, 8H |
027C | z(03380004): ADD R3, R3, R4 |
027D | a(84E0000C): LDR R4, SP, CH |
027E | b(45000000): MOV R5, R0, 0H |
027F | c .FIXUP P |
027F | c(F750F00A): BL MOD5 [Display] PROC15 |
| NEW(Filler);d Filler.handlee := HandleFiller;f |
0280 | d(40E80010): ADD R0, SP, 10H |
0281 | d .FIXUP D |
0281 | d(8D60000A): LDR SB, MT, MOD6 [Viewers] |
0282 | d(41D80001): ADD R1, SB, VAR1 |
0283 | d(D714D30C): BL MT [trap=0, pos=5331] |
0284 | e(80E00010): LDR R0, SP, 10H |
0285 | e(D114E14C): BLEQ MT [trap=4, pos=5345] |
0286 | f(F7000000): BL 0 [0287H] |
0287 | f(41F902AC): SUB R1, LNK, 2ACH |
0288 | f(A1000018): STR R1, R0, 18H |
| Viewers.InitTrack(UW,g H,h Filler)i;j (*init user track*) |
0289 | g(80E00004): LDR R0, SP, 4H |
028A | h(81E0000C): LDR R1, SP, CH |
028B | i(82E00010): LDR R2, SP, 10H |
028C | j .FIXUP P |
028C | j(F760C00D): BL MOD6 [Viewers] PROC12 |
| NEW(Filler);k Filler.handlel := HandleFiller;m |
028D | k(40E80010): ADD R0, SP, 10H |
028E | k .FIXUP D |
028E | k(8D60000D): LDR SB, MT, MOD6 [Viewers] |
028F | k(41D80001): ADD R1, SB, VAR1 |
0290 | k(D7153F0C): BL MT [trap=0, pos=5439] |
0291 | l(80E00010): LDR R0, SP, 10H |
0292 | l(D1154D4C): BLEQ MT [trap=4, pos=5453] |
0293 | m(F7000000): BL 0 [0294H] |
0294 | m(41F902E0): SUB R1, LNK, 2E0H |
0295 | m(A1000018): STR R1, R0, 18H |
| Viewers.InitTrack(SW,n H,o Filler)p (*init system track*) |
0296 | n(80E00008): LDR R0, SP, 8H |
0297 | o(81E0000C): LDR R1, SP, CH |
0298 | p(82E00010): LDR R2, SP, 10H |
| ENDq OpenDisplay; |
0299 | q .FIXUP P |
0299 | q(F760C00D): BL MOD6 [Viewers] PROC12 |
029A | q(8FE00000): LDR LNK, SP, 0H |
029B | q(4EE80014): ADD SP, SP, 14H |
029C | q(C700000F): B LNK |
| |
| PROCEDURE DisplayWidth* (X: INTEGER): INTEGER; |
| BEGINr RETURN DW |
029D | r .PROC 29 |
029D | r(4EE90008): SUB SP, SP, 8H |
029E | r(AFE00000): STR LNK, SP, 0H |
029F | r(A0E00004): STR R0, SP, 4H |
| ENDs DisplayWidth; |
02A0 | s .FIXUP D |
02A0 | s(8D000012): LDR SB, MT, MOD0 [Oberon] |
02A1 | s(80D0010C): LDR R0, SB, 10CH [data] |
02A2 | s(8FE00000): LDR LNK, SP, 0H |
02A3 | s(4EE80008): ADD SP, SP, 8H |
02A4 | s(C700000F): B LNK |
| |
| PROCEDURE DisplayHeight* (X: INTEGER): INTEGER; |
| BEGINt RETURN DH |
02A5 | t .PROC 30 |
02A5 | t(4EE90008): SUB SP, SP, 8H |
02A6 | t(AFE00000): STR LNK, SP, 0H |
02A7 | t(A0E00004): STR R0, SP, 4H |
| ENDu DisplayHeight; |
02A8 | u .FIXUP D |
02A8 | u(8D000008): LDR SB, MT, MOD0 [Oberon] |
02A9 | u(80D00110): LDR R0, SB, 110H [data] |
02AA | u(8FE00000): LDR LNK, SP, 0H |
02AB | u(4EE80008): ADD SP, SP, 8H |
02AC | u(C700000F): B LNK |
| |
| PROCEDURE OpenTrack* (X, W: INTEGER); |
| VAR Filler: Viewers.Viewer; |
| BEGINv |
02AD | v .PROC 31 |
02AD | v(4EE90010): SUB SP, SP, 10H |
02AE | v(AFE00000): STR LNK, SP, 0H |
02AF | v(A0E00004): STR R0, SP, 4H |
02B0 | v(A1E00008): STR R1, SP, 8H |
| NEW(Filler);w Filler.handlex := HandleFiller;y |
02B1 | w(40E8000C): ADD R0, SP, CH |
02B2 | w .FIXUP D |
02B2 | w(8D60000A): LDR SB, MT, MOD6 [Viewers] |
02B3 | w(41D80001): ADD R1, SB, VAR1 |
02B4 | w(D716C10C): BL MT [trap=0, pos=5825] |
02B5 | x(80E0000C): LDR R0, SP, CH |
02B6 | x(D116CF4C): BLEQ MT [trap=4, pos=5839] |
02B7 | y(F7000000): BL 0 [02B8H] |
02B8 | y(41F90370): SUB R1, LNK, 370H |
02B9 | y(A1000018): STR R1, R0, 18H |
| Viewers.OpenTrack(X,z W,a Filler)b |
02BA | z(80E00004): LDR R0, SP, 4H |
02BB | a(81E00008): LDR R1, SP, 8H |
02BC | b(82E0000C): LDR R2, SP, CH |
| ENDc OpenTrack; |
02BD | c .FIXUP P |
02BD | c(F760D024): BL MOD6 [Viewers] PROC13 |
02BE | c(8FE00000): LDR LNK, SP, 0H |
02BF | c(4EE80010): ADD SP, SP, 10H |
02C0 | c(C700000F): B LNK |
| |
| PROCEDURE UserTrack* (X: INTEGER): INTEGER; |
| BEGINd RETURN X DIV DW *e DW |
02C1 | d .PROC 32 |
02C1 | d(4EE90008): SUB SP, SP, 8H |
02C2 | d(AFE00000): STR LNK, SP, 0H |
02C3 | d(A0E00004): STR R0, SP, 4H |
02C4 | e .FIXUP D |
02C4 | e(8D000012): LDR SB, MT, MOD0 [Oberon] |
02C5 | e(80D0010C): LDR R0, SB, 10CH [data] |
02C6 | e(D6175E6C): BLLE MT [trap=6, pos=5982] |
02C7 | e(81E00004): LDR R1, SP, 4H |
02C8 | e(001B0000): DIV R0, R1, R0 |
| ENDf UserTrack; |
02C9 | f(81D0010C): LDR R1, SB, 10CH |
02CA | f(000A0001): MUL R0, R0, R1 |
02CB | f(8FE00000): LDR LNK, SP, 0H |
02CC | f(4EE80008): ADD SP, SP, 8H |
02CD | f(C700000F): B LNK |
| |
| PROCEDURE SystemTrack* (X: INTEGER): INTEGER; |
| BEGINg RETURN X DIV DW *h DW +i DW DIV 8 *j 5 |
02CE | g .PROC 33 |
02CE | g(4EE90008): SUB SP, SP, 8H |
02CF | g(AFE00000): STR LNK, SP, 0H |
02D0 | g(A0E00004): STR R0, SP, 4H |
02D1 | h .FIXUP D |
02D1 | h(8D00000D): LDR SB, MT, MOD0 [Oberon] |
02D2 | h(80D0010C): LDR R0, SB, 10CH [data] |
02D3 | h(D617BD6C): BLLE MT [trap=6, pos=6077] |
02D4 | h(81E00004): LDR R1, SP, 4H |
02D5 | h(001B0000): DIV R0, R1, R0 |
02D6 | i(81D0010C): LDR R1, SB, 10CH |
02D7 | i(000A0001): MUL R0, R0, R1 |
02D8 | j(81D0010C): LDR R1, SB, 10CH |
02D9 | j(41120003): ASR R1, R1, 3H |
| ENDk SystemTrack; |
02DA | k(411A0005): MUL R1, R1, 5H |
02DB | k(00080001): ADD R0, R0, R1 |
02DC | k(8FE00000): LDR LNK, SP, 0H |
02DD | k(4EE80008): ADD SP, SP, 8H |
02DE | k(C700000F): B LNK |
| |
| PROCEDURE UY (X: INTEGER): INTEGER; |
| VAR h: INTEGER; |
| fil, bot, alt, max: Display.Frame; |
| BEGINl |
02DF | l(4EE9001C): SUB SP, SP, 1CH |
02E0 | l(AFE00000): STR LNK, SP, 0H |
02E1 | l(A0E00004): STR R0, SP, 4H |
| Viewers.Locate(X,m 0,n fil,o bot,p alt,q max)r;s |
02E2 | m(80E00004): LDR R0, SP, 4H |
02E3 | n(41000000): MOV R1, R0, 0H |
02E4 | o(42E8000C): ADD R2, SP, CH |
02E5 | p(43E80010): ADD R3, SP, 10H |
02E6 | q(44E80014): ADD R4, SP, 14H |
02E7 | r(45E80018): ADD R5, SP, 18H |
02E8 | s .FIXUP P |
02E8 | s(F760B02B): BL MOD6 [Viewers] PROC11 |
| IF fil.Ht >= DH DIV 8 THENu h := DH ELSEv hw := max.Yx + max.Hy DIV 2 ENDz ; |
02E9 | t(80E0000C): LDR R0, SP, CH |
02EA | t(D118894C): BLEQ MT [trap=4, pos=6281] |
02EB | u .FIXUP D |
02EB | u(8D00001A): LDR SB, MT, MOD0 [Oberon] |
02EC | u(81D00110): LDR R1, SB, 110H [data] |
02ED | u(41120003): ASR R1, R1, 3H |
02EE | u(80000014): LDR R0, R0, 14H |
02EF | u(00090001): SUB R0, R0, R1 |
02F0 | u(E5000004): BLT 4 [02F5H] |
02F1 | v .FIXUP D |
02F1 | v(8D000006): LDR SB, MT, MOD0 [Oberon] |
02F2 | v(80D00110): LDR R0, SB, 110H [data] |
02F3 | v(A0E00008): STR R0, SP, 8H |
02F4 | w(E7000009): B 9 [02FEH] |
02F5 | x(80E00018): LDR R0, SP, 18H |
02F6 | x(D118B24C): BLEQ MT [trap=4, pos=6322] |
02F7 | y(81E00018): LDR R1, SP, 18H |
02F8 | y(D118BA4C): BLEQ MT [trap=4, pos=6330] |
02F9 | z(81100014): LDR R1, R1, 14H |
02FA | z(41120001): ASR R1, R1, 1H |
02FB | z(8000000C): LDR R0, R0, CH |
02FC | z(00080001): ADD R0, R0, R1 |
02FD | z(A0E00008): STR R0, SP, 8H |
| RETURN h |
| ENDa UY; |
02FE | a(80E00008): LDR R0, SP, 8H |
02FF | a(8FE00000): LDR LNK, SP, 0H |
0300 | a(4EE8001C): ADD SP, SP, 1CH |
0301 | a(C700000F): B LNK |
| |
| PROCEDURE AllocateUserViewer* (DX: INTEGER; VAR X, Y: INTEGER); |
| BEGINb |
0302 | b .PROC 34 |
0302 | b(4EE90010): SUB SP, SP, 10H |
0303 | b(AFE00000): STR LNK, SP, 0H |
0304 | b(A0E00004): STR R0, SP, 4H |
0305 | b(A1E00008): STR R1, SP, 8H |
0306 | b(A2E0000C): STR R2, SP, CH |
| IF Pointer.on THENc X := Pointer.X;d Y := Pointer.Y |
0307 | c .FIXUP D |
0307 | c(8D000016): LDR SB, MT, MOD0 [Oberon] |
0308 | c(90D000D4): LDR R0, SB, D4H [data] |
0309 | c(E1000008): BEQ 8 [0312H] |
030A | d .FIXUP D |
030A | d(8D000003): LDR SB, MT, MOD0 [Oberon] |
030B | d(80D000D8): LDR R0, SB, D8H [data] |
030C | d(81E00008): LDR R1, SP, 8H |
030D | d(A0100000): STR R0, R1, 0H |
| ELSEe Xf := DX DIV DW *g DW;h Y := UY(X)i |
030E | e(80D000DC): LDR R0, SB, DCH |
030F | e(81E0000C): LDR R1, SP, CH |
0310 | e(A0100000): STR R0, R1, 0H |
0311 | f(E700000E): B 14 [0320H] |
0312 | g .FIXUP D |
0312 | g(8D000008): LDR SB, MT, MOD0 [Oberon] |
0313 | g(80D0010C): LDR R0, SB, 10CH [data] |
0314 | g(D619786C): BLLE MT [trap=6, pos=6520] |
0315 | g(81E00004): LDR R1, SP, 4H |
0316 | g(001B0000): DIV R0, R1, R0 |
0317 | h(81D0010C): LDR R1, SB, 10CH |
0318 | h(000A0001): MUL R0, R0, R1 |
0319 | h(81E00008): LDR R1, SP, 8H |
031A | h(A0100000): STR R0, R1, 0H |
031B | i(80E00008): LDR R0, SP, 8H |
031C | i(80000000): LDR R0, R0, 0H |
| ENDj |
031D | j(F7FFFFC1): BL -63 [02DFH] |
031E | j(81E0000C): LDR R1, SP, CH |
031F | j(A0100000): STR R0, R1, 0H |
| ENDk AllocateUserViewer; |
0320 | k(8FE00000): LDR LNK, SP, 0H |
0321 | k(4EE80010): ADD SP, SP, 10H |
0322 | k(C700000F): B LNK |
| |
| PROCEDURE SY (X: INTEGER): INTEGER; |
| VAR H0, H1, H2, H3, y: INTEGER; |
| fil, bot, alt, max: Display.Frame; |
| BEGINl H3 := DH - DH DIV 3;m |
0323 | l(4EE9002C): SUB SP, SP, 2CH |
0324 | l(AFE00000): STR LNK, SP, 0H |
0325 | l(A0E00004): STR R0, SP, 4H |
0326 | m .FIXUP D |
0326 | m(8D000014): LDR SB, MT, MOD0 [Oberon] |
0327 | m(80D00110): LDR R0, SB, 110H [data] |
0328 | m(400B0003): DIV R0, R0, 3H |
0329 | m(81D00110): LDR R1, SB, 110H |
032A | m(00190000): SUB R0, R1, R0 |
032B | m(A0E00014): STR R0, SP, 14H |
| H2 := H3 - H3 DIV 2;n H1 := DH DIV 5;o H0 := DH DIV 10;p |
032C | n(80E00014): LDR R0, SP, 14H |
032D | n(40020001): ASR R0, R0, 1H |
032E | n(81E00014): LDR R1, SP, 14H |
032F | n(00190000): SUB R0, R1, R0 |
0330 | n(A0E00010): STR R0, SP, 10H |
0331 | o(80D00110): LDR R0, SB, 110H |
0332 | o(400B0005): DIV R0, R0, 5H |
0333 | o(A0E0000C): STR R0, SP, CH |
0334 | p(80D00110): LDR R0, SB, 110H |
0335 | p(400B000A): DIV R0, R0, AH |
0336 | p(A0E00008): STR R0, SP, 8H |
| Viewers.Locate(X,q DH,r fil,s bot,t alt,u max)v;w |
0337 | q(80E00004): LDR R0, SP, 4H |
0338 | r(81D00110): LDR R1, SB, 110H |
0339 | s(42E8001C): ADD R2, SP, 1CH |
033A | t(43E80020): ADD R3, SP, 20H |
033B | u(44E80024): ADD R4, SP, 24H |
033C | v(45E80028): ADD R5, SP, 28H |
033D | w .FIXUP P |
033D | w(F760B055): BL MOD6 [Viewers] PROC11 |
| IF fil.Hx >= DH DIV 8 THENy y := DH |
033E | x(80E0001C): LDR R0, SP, 1CH |
033F | x(D11AB04C): BLEQ MT [trap=4, pos=6832] |
0340 | y .FIXUP D |
0340 | y(8D00001A): LDR SB, MT, MOD0 [Oberon] |
0341 | y(81D00110): LDR R1, SB, 110H [data] |
0342 | y(41120003): ASR R1, R1, 3H |
0343 | y(80000014): LDR R0, R0, 14H |
0344 | y(00090001): SUB R0, R0, R1 |
0345 | y(E5000004): BLT 4 [034AH] |
| ELSIFz maxa.Hb >= DH - H0 THENc y := max.Yd + H3 |
0346 | z .FIXUP D |
0346 | z(8D000006): LDR SB, MT, MOD0 [Oberon] |
0347 | z(80D00110): LDR R0, SB, 110H [data] |
0348 | z(A0E00018): STR R0, SP, 18H |
0349 | a(E7000051): B 81 [039BH] |
034A | b(80E00028): LDR R0, SP, 28H |
034B | b(D11AD94C): BLEQ MT [trap=4, pos=6873] |
034C | c .FIXUP D |
034C | c(8D000006): LDR SB, MT, MOD0 [Oberon] |
034D | c(81D00110): LDR R1, SB, 110H [data] |
034E | c(82E00008): LDR R2, SP, 8H |
034F | c(01190002): SUB R1, R1, R2 |
0350 | c(80000014): LDR R0, R0, 14H |
0351 | c(00090001): SUB R0, R0, R1 |
0352 | c(E5000007): BLT 7 [035AH] |
0353 | d(80E00028): LDR R0, SP, 28H |
0354 | d(D11AF44C): BLEQ MT [trap=4, pos=6900] |
| ELSIFe maxf.Hg >= H3 - H0 THENh y := max.Yi + H2 |
0355 | e(8000000C): LDR R0, R0, CH |
0356 | e(81E00014): LDR R1, SP, 14H |
0357 | e(00080001): ADD R0, R0, R1 |
0358 | e(A0E00018): STR R0, SP, 18H |
0359 | f(E7000041): B 65 [039BH] |
035A | g(80E00028): LDR R0, SP, 28H |
035B | g(D11B094C): BLEQ MT [trap=4, pos=6921] |
035C | h(81E00014): LDR R1, SP, 14H |
035D | h(82E00008): LDR R2, SP, 8H |
035E | h(01190002): SUB R1, R1, R2 |
035F | h(80000014): LDR R0, R0, 14H |
0360 | h(00090001): SUB R0, R0, R1 |
0361 | h(E5000007): BLT 7 [0369H] |
0362 | i(80E00028): LDR R0, SP, 28H |
0363 | i(D11B244C): BLEQ MT [trap=4, pos=6948] |
| ELSIFj maxk.Hl >= H2 - H0 THENm y := max.Yn + H1 |
0364 | j(8000000C): LDR R0, R0, CH |
0365 | j(81E00010): LDR R1, SP, 10H |
0366 | j(00080001): ADD R0, R0, R1 |
0367 | j(A0E00018): STR R0, SP, 18H |
0368 | k(E7000032): B 50 [039BH] |
0369 | l(80E00028): LDR R0, SP, 28H |
036A | l(D11B394C): BLEQ MT [trap=4, pos=6969] |
036B | m(81E00010): LDR R1, SP, 10H |
036C | m(82E00008): LDR R2, SP, 8H |
036D | m(01190002): SUB R1, R1, R2 |
036E | m(80000014): LDR R0, R0, 14H |
036F | m(00090001): SUB R0, R0, R1 |
0370 | m(E5000007): BLT 7 [0378H] |
0371 | n(80E00028): LDR R0, SP, 28H |
0372 | n(D11B544C): BLEQ MT [trap=4, pos=6996] |
| ELSIFo maxp # bot THENq y := max.Yr + max.Hs DIV 2 |
0373 | o(8000000C): LDR R0, R0, CH |
0374 | o(81E0000C): LDR R1, SP, CH |
0375 | o(00080001): ADD R0, R0, R1 |
0376 | o(A0E00018): STR R0, SP, 18H |
0377 | p(E7000023): B 35 [039BH] |
0378 | q(80E00028): LDR R0, SP, 28H |
0379 | q(81E00020): LDR R1, SP, 20H |
037A | q(00090001): SUB R0, R0, R1 |
037B | q(E100000A): BEQ 10 [0386H] |
037C | r(80E00028): LDR R0, SP, 28H |
037D | r(D11B7D4C): BLEQ MT [trap=4, pos=7037] |
037E | s(81E00028): LDR R1, SP, 28H |
037F | s(D11B854C): BLEQ MT [trap=4, pos=7045] |
| ELSIFt botu.Hv >= H1 THENw y := bot.Hx DIV 2 |
0380 | t(81100014): LDR R1, R1, 14H |
0381 | t(41120001): ASR R1, R1, 1H |
0382 | t(8000000C): LDR R0, R0, CH |
0383 | t(00080001): ADD R0, R0, R1 |
0384 | t(A0E00018): STR R0, SP, 18H |
0385 | u(E7000015): B 21 [039BH] |
0386 | v(80E00020): LDR R0, SP, 20H |
0387 | v(D11B9B4C): BLEQ MT [trap=4, pos=7067] |
0388 | w(80000014): LDR R0, R0, 14H |
0389 | w(81E0000C): LDR R1, SP, CH |
038A | w(00090001): SUB R0, R0, R1 |
038B | w(E5000006): BLT 6 [0392H] |
038C | x(80E00020): LDR R0, SP, 20H |
038D | x(D11BB14C): BLEQ MT [trap=4, pos=7089] |
| ELSEy yz := alt.Ya + alt.Hb DIV 2 |
038E | y(80000014): LDR R0, R0, 14H |
038F | y(40020001): ASR R0, R0, 1H |
0390 | y(A0E00018): STR R0, SP, 18H |
0391 | z(E7000009): B 9 [039BH] |
0392 | a(80E00024): LDR R0, SP, 24H |
0393 | a(D11BCB4C): BLEQ MT [trap=4, pos=7115] |
0394 | b(81E00024): LDR R1, SP, 24H |
0395 | b(D11BD34C): BLEQ MT [trap=4, pos=7123] |
| ENDc ; |
0396 | c(81100014): LDR R1, R1, 14H |
0397 | c(41120001): ASR R1, R1, 1H |
0398 | c(8000000C): LDR R0, R0, CH |
0399 | c(00080001): ADD R0, R0, R1 |
039A | c(A0E00018): STR R0, SP, 18H |
| RETURN y |
| ENDd SY; |
039B | d(80E00018): LDR R0, SP, 18H |
039C | d(8FE00000): LDR LNK, SP, 0H |
039D | d(4EE8002C): ADD SP, SP, 2CH |
039E | d(C700000F): B LNK |
| |
| PROCEDURE AllocateSystemViewer* (DX: INTEGER; VAR X, Y: INTEGER); |
| BEGINe |
039F | e .PROC 35 |
039F | e(4EE90010): SUB SP, SP, 10H |
03A0 | e(AFE00000): STR LNK, SP, 0H |
03A1 | e(A0E00004): STR R0, SP, 4H |
03A2 | e(A1E00008): STR R1, SP, 8H |
03A3 | e(A2E0000C): STR R2, SP, CH |
| IF Pointer.on THENf X := Pointer.X;g Y := Pointer.Y |
03A4 | f .FIXUP D |
03A4 | f(8D000058): LDR SB, MT, MOD0 [Oberon] |
03A5 | f(90D000D4): LDR R0, SB, D4H [data] |
03A6 | f(E1000008): BEQ 8 [03AFH] |
03A7 | g .FIXUP D |
03A7 | g(8D000003): LDR SB, MT, MOD0 [Oberon] |
03A8 | g(80D000D8): LDR R0, SB, D8H [data] |
03A9 | g(81E00008): LDR R1, SP, 8H |
03AA | g(A0100000): STR R0, R1, 0H |
| ELSEh Xi := DX DIV DW *j DW +k DW DIV 8 *l 5;m Y := SY(X)n |
03AB | h(80D000DC): LDR R0, SB, DCH |
03AC | h(81E0000C): LDR R1, SP, CH |
03AD | h(A0100000): STR R0, R1, 0H |
03AE | i(E7000012): B 18 [03C1H] |
03AF | j .FIXUP D |
03AF | j(8D000008): LDR SB, MT, MOD0 [Oberon] |
03B0 | j(80D0010C): LDR R0, SB, 10CH [data] |
03B1 | j(D61C976C): BLLE MT [trap=6, pos=7319] |
03B2 | j(81E00004): LDR R1, SP, 4H |
03B3 | j(001B0000): DIV R0, R1, R0 |
03B4 | k(81D0010C): LDR R1, SB, 10CH |
03B5 | k(000A0001): MUL R0, R0, R1 |
03B6 | l(81D0010C): LDR R1, SB, 10CH |
03B7 | l(41120003): ASR R1, R1, 3H |
03B8 | m(411A0005): MUL R1, R1, 5H |
03B9 | m(00080001): ADD R0, R0, R1 |
03BA | m(81E00008): LDR R1, SP, 8H |
03BB | m(A0100000): STR R0, R1, 0H |
03BC | n(80E00008): LDR R0, SP, 8H |
03BD | n(80000000): LDR R0, R0, 0H |
| ENDo |
03BE | o(F7FFFF64): BL -156 [0323H] |
03BF | o(81E0000C): LDR R1, SP, CH |
03C0 | o(A0100000): STR R0, R1, 0H |
| ENDp AllocateSystemViewer; |
03C1 | p(8FE00000): LDR LNK, SP, 0H |
03C2 | p(4EE80010): ADD SP, SP, 10H |
03C3 | p(C700000F): B LNK |
| |
| PROCEDURE MarkedViewer* (): Viewers.Viewer; |
| BEGINq RETURN Viewers.This(Pointer.X,r Pointer.Y)s |
03C4 | q .PROC 36 |
03C4 | q(4EE90004): SUB SP, SP, 4H |
03C5 | q(AFE00000): STR LNK, SP, 0H |
03C6 | r .FIXUP D |
03C6 | r(8D000017): LDR SB, MT, MOD0 [Oberon] |
03C7 | r(80D000D8): LDR R0, SB, D8H [data] |
03C8 | s(81D000DC): LDR R1, SB, DCH |
| ENDt MarkedViewer; |
03C9 | t .FIXUP P |
03C9 | t(F760908C): BL MOD6 [Viewers] PROC9 |
03CA | t(8FE00000): LDR LNK, SP, 0H |
03CB | t(4EE80004): ADD SP, SP, 4H |
03CC | t(C700000F): B LNK |
| |
| PROCEDURE PassFocus* (V: Viewers.Viewer); |
| VAR M: ControlMsg; |
| BEGINu M.id := defocus;v FocusViewer.handlew(FocusViewerx,y M)z;a FocusViewer := V |
03CD | u .PROC 37 |
03CD | u(4EE90014): SUB SP, SP, 14H |
03CE | u(AFE00000): STR LNK, SP, 0H |
03CF | u(A0E00004): STR R0, SP, 4H |
03D0 | v(40000000): MOV R0, R0, 0H |
03D1 | v(A0E00008): STR R0, SP, 8H |
03D2 | w .FIXUP D |
03D2 | w(8D00000C): LDR SB, MT, MOD0 [Oberon] |
03D3 | w(80D000E0): LDR R0, SB, E0H [data] |
03D4 | w(D11DBE4C): BLEQ MT [trap=4, pos=7614] |
03D5 | x(80000018): LDR R0, R0, 18H |
03D6 | x(4EE90004): SUB SP, SP, 4H |
03D7 | x(A0E00000): STR R0, SP, 0H |
03D8 | y(80D000E0): LDR R0, SB, E0H |
03D9 | z(41E8000C): ADD R1, SP, CH |
03DA | z(42D80058): ADD R2, SB, 58H |
03DB | a(83E00000): LDR R3, SP, 0H |
03DC | a(4EE80004): ADD SP, SP, 4H |
03DD | a(D11DCF5C): BLEQ MT [trap=5, pos=7631] |
03DE | a(D7000003): BL R3 |
| ENDb PassFocus; |
03DF | b(80E00004): LDR R0, SP, 4H |
03E0 | b .FIXUP D |
03E0 | b(8D00000E): LDR SB, MT, MOD0 [Oberon] |
03E1 | b(A0D000E0): STR R0, SB, E0H [data] |
03E2 | b(8FE00000): LDR LNK, SP, 0H |
03E3 | b(4EE80014): ADD SP, SP, 14H |
03E4 | b(C700000F): B LNK |
| |
| PROCEDURE OpenLog*(T: Texts.Text); |
| BEGINc Log := T |
03E5 | c .PROC 38 |
03E5 | c(4EE90008): SUB SP, SP, 8H |
03E6 | c(AFE00000): STR LNK, SP, 0H |
03E7 | c(A0E00004): STR R0, SP, 4H |
| ENDd OpenLog; |
03E8 | d(80E00004): LDR R0, SP, 4H |
03E9 | d .FIXUP D |
03E9 | d(8D000009): LDR SB, MT, MOD0 [Oberon] |
03EA | d(A0D000E4): STR R0, SB, E4H [data] |
03EB | d(8FE00000): LDR LNK, SP, 0H |
03EC | d(4EE80008): ADD SP, SP, 8H |
03ED | d(C700000F): B LNK |
| |
| (*command interpretation*) |
| PROCEDURE SetPar*(F: Display.Frame; T: Texts.Text; pos: LONGINT); |
| BEGINe Par.vwr := Viewers.This(F.Xf,g F.Yh)i;j Par.frame := F;k Par.text := T;l Par.pos := pos |
03EE | e .PROC 39 |
03EE | e(4EE90010): SUB SP, SP, 10H |
03EF | e(AFE00000): STR LNK, SP, 0H |
03F0 | e(A0E00004): STR R0, SP, 4H |
03F1 | e(A1E00008): STR R1, SP, 8H |
03F2 | e(A2E0000C): STR R2, SP, CH |
03F3 | f(80E00004): LDR R0, SP, 4H |
03F4 | f(D11EBD4C): BLEQ MT [trap=4, pos=7869] |
03F5 | g(80000008): LDR R0, R0, 8H |
03F6 | h(81E00004): LDR R1, SP, 4H |
03F7 | h(D11EC24C): BLEQ MT [trap=4, pos=7874] |
03F8 | i(8110000C): LDR R1, R1, CH |
03F9 | j .FIXUP P |
03F9 | j(F7609030): BL MOD6 [Viewers] PROC9 |
03FA | j .FIXUP D |
03FA | j(8D000011): LDR SB, MT, MOD0 [Oberon] |
03FB | j(A0D000E8): STR R0, SB, E8H [data] |
03FC | k(80E00004): LDR R0, SP, 4H |
03FD | k(A0D000EC): STR R0, SB, ECH |
03FE | l(80E00008): LDR R0, SP, 8H |
03FF | l(A0D000F0): STR R0, SB, F0H |
| ENDm SetPar; |
0400 | m(80E0000C): LDR R0, SP, CH |
0401 | m(A0D000F4): STR R0, SB, F4H |
0402 | m(8FE00000): LDR LNK, SP, 0H |
0403 | m(4EE80010): ADD SP, SP, 10H |
0404 | m(C700000F): B LNK |
| |
| PROCEDURE Call* (name: ARRAY OF CHAR; VAR res: INTEGER); |
| VAR mod: Modules.Module; P: Modules.Command; |
| i, j: INTEGER; ch: CHAR; |
| Mname, Cname: ARRAY 32 OF CHAR; |
| BEGINn i := 0;o ch := name[0]p;q |
0405 | n .PROC 40 |
0405 | n(4EE90064): SUB SP, SP, 64H |
0406 | n(AFE00000): STR LNK, SP, 0H |
0407 | n(A0E00004): STR R0, SP, 4H |
0408 | n(A1E00008): STR R1, SP, 8H |
0409 | n(A2E0000C): STR R2, SP, CH |
040A | o(40000000): MOV R0, R0, 0H |
040B | o(A0E00018): STR R0, SP, 18H |
040C | p(40000000): MOV R0, R0, 0H |
040D | p(81E00008): LDR R1, SP, 8H |
040E | p(01090001): SUB R1, R0, R1 |
040F | p(DA1FD01C): BLCC MT [trap=1, pos=8144] |
0410 | p(81E00004): LDR R1, SP, 4H |
0411 | p(00180000): ADD R0, R1, R0 |
0412 | q(90000000): LDR R0, R0, 0H |
0413 | q(B0E00020): STR R0, SP, 20H |
| WHILE (ch # ".")r & (sch # 0X)t DOu Mname[i]v := ch;w INC(i);x ch := name[i]y ENDz ; |
0414 | r(90E00020): LDR R0, SP, 20H |
0415 | r(4009002E): SUB R0, R0, 2EH |
0416 | s(E1000014): BEQ 20 [042BH] |
0417 | t(90E00020): LDR R0, SP, 20H |
0418 | u(E1000012): BEQ 18 [042BH] |
0419 | v(80E00018): LDR R0, SP, 18H |
041A | v(41090020): SUB R1, R0, 20H |
041B | v(DA1FFE1C): BLCC MT [trap=1, pos=8190] |
041C | v(00E80000): ADD R0, SP, R0 |
041D | w(91E00020): LDR R1, SP, 20H |
041E | w(B1000024): STR R1, R0, 24H |
041F | x(80E00018): LDR R0, SP, 18H |
0420 | x(40080001): ADD R0, R0, 1H |
0421 | x(A0E00018): STR R0, SP, 18H |
0422 | y(80E00018): LDR R0, SP, 18H |
0423 | y(81E00008): LDR R1, SP, 8H |
0424 | y(01090001): SUB R1, R0, R1 |
0425 | y(DA201B1C): BLCC MT [trap=1, pos=8219] |
0426 | y(81E00004): LDR R1, SP, 4H |
0427 | y(00180000): ADD R0, R1, R0 |
0428 | z(90000000): LDR R0, R0, 0H |
0429 | z(B0E00020): STR R0, SP, 20H |
042A | z(E7FFFFE9): B -23 [0414H] |
| IF ch = "." THENa |
042B | a(90E00020): LDR R0, SP, 20H |
042C | a(4009002E): SUB R0, R0, 2EH |
042D | a(E900004E): BNE 78 [047CH] |
| Mname[i]b := 0X;c INC(i);d |
042E | b(80E00018): LDR R0, SP, 18H |
042F | b(41090020): SUB R1, R0, 20H |
0430 | b(DA20451C): BLCC MT [trap=1, pos=8261] |
0431 | b(00E80000): ADD R0, SP, R0 |
0432 | c(41000000): MOV R1, R0, 0H |
0433 | c(B1000024): STR R1, R0, 24H |
0434 | d(80E00018): LDR R0, SP, 18H |
0435 | d(40080001): ADD R0, R0, 1H |
0436 | d(A0E00018): STR R0, SP, 18H |
| Modules.Load(Mname,e mod)f;g res := Modules.res;h |
0437 | e(40E80024): ADD R0, SP, 24H |
0438 | e(41000020): MOV R1, R0, 20H |
0439 | f(42E80010): ADD R2, SP, 10H |
043A | g .FIXUP P |
043A | g(F7308041): BL MOD3 [Modules] PROC8 |
043B | h .FIXUP D |
043B | h(8D300041): LDR SB, MT, MOD3 [Modules] |
043C | h(80D00005): LDR R0, SB, VAR5 |
043D | h(81E0000C): LDR R1, SP, CH |
043E | h(A0100000): STR R0, R1, 0H |
| IF Modules.res = 0 THENi |
043F | i .FIXUP D |
043F | i(8D300004): LDR SB, MT, MOD3 [Modules] |
0440 | i(80D00005): LDR R0, SB, VAR5 |
0441 | i(E9000039): BNE 57 [047BH] |
| j := 0;j ch := name[i]k;l INC(i);m |
0442 | j(40000000): MOV R0, R0, 0H |
0443 | j(A0E0001C): STR R0, SP, 1CH |
0444 | k(80E00018): LDR R0, SP, 18H |
0445 | k(81E00008): LDR R1, SP, 8H |
0446 | k(01090001): SUB R1, R0, R1 |
0447 | k(DA20C41C): BLCC MT [trap=1, pos=8388] |
0448 | k(81E00004): LDR R1, SP, 4H |
0449 | k(00180000): ADD R0, R1, R0 |
044A | l(90000000): LDR R0, R0, 0H |
044B | l(B0E00020): STR R0, SP, 20H |
044C | m(80E00018): LDR R0, SP, 18H |
044D | m(40080001): ADD R0, R0, 1H |
044E | m(A0E00018): STR R0, SP, 18H |
| WHILE ch # 0X DOn Cname[j]o := ch;p INC(j);q ch := name[i]r;s INC(i) ENDt ; |
044F | n(90E00020): LDR R0, SP, 20H |
0450 | n(E1000015): BEQ 21 [0466H] |
0451 | o(80E0001C): LDR R0, SP, 1CH |
0452 | o(41090020): SUB R1, R0, 20H |
0453 | o(DA20EF1C): BLCC MT [trap=1, pos=8431] |
0454 | o(00E80000): ADD R0, SP, R0 |
0455 | p(91E00020): LDR R1, SP, 20H |
0456 | p(B1000044): STR R1, R0, 44H |
0457 | q(80E0001C): LDR R0, SP, 1CH |
0458 | q(40080001): ADD R0, R0, 1H |
0459 | q(A0E0001C): STR R0, SP, 1CH |
045A | r(80E00018): LDR R0, SP, 18H |
045B | r(81E00008): LDR R1, SP, 8H |
045C | r(01090001): SUB R1, R0, R1 |
045D | r(DA210C1C): BLCC MT [trap=1, pos=8460] |
045E | r(81E00004): LDR R1, SP, 4H |
045F | r(00180000): ADD R0, R1, R0 |
0460 | s(90000000): LDR R0, R0, 0H |
0461 | s(B0E00020): STR R0, SP, 20H |
0462 | t(80E00018): LDR R0, SP, 18H |
0463 | t(40080001): ADD R0, R0, 1H |
0464 | t(A0E00018): STR R0, SP, 18H |
0465 | t(E7FFFFE9): B -23 [044FH] |
| Cname[j]u := 0X;v |
0466 | u(80E0001C): LDR R0, SP, 1CH |
0467 | u(41090020): SUB R1, R0, 20H |
0468 | u(DA212B1C): BLCC MT [trap=1, pos=8491] |
0469 | u(00E80000): ADD R0, SP, R0 |
046A | v(41000000): MOV R1, R0, 0H |
046B | v(B1000044): STR R1, R0, 44H |
| P := Modules.ThisCommand(mod,w Cname)x;y res := Modules.res;z |
046C | w(80E00010): LDR R0, SP, 10H |
046D | x(41E80044): ADD R1, SP, 44H |
046E | x(42000020): MOV R2, R0, 20H |
046F | y .FIXUP P |
046F | y(F7309035): BL MOD3 [Modules] PROC9 |
0470 | y(A0E00014): STR R0, SP, 14H |
0471 | z .FIXUP D |
0471 | z(8D300032): LDR SB, MT, MOD3 [Modules] |
0472 | z(80D00005): LDR R0, SB, VAR5 |
0473 | z(81E0000C): LDR R1, SP, CH |
0474 | z(A0100000): STR R0, R1, 0H |
| IF Modules.res = 0 THENa P ENDb |
0475 | a .FIXUP D |
0475 | a(8D300004): LDR SB, MT, MOD3 [Modules] |
0476 | a(80D00005): LDR R0, SB, VAR5 |
0477 | a(E9000003): BNE 3 [047BH] |
0478 | b(80E00014): LDR R0, SP, 14H |
0479 | b(D1219A5C): BLEQ MT [trap=5, pos=8602] |
047A | b(D7000000): BL R0 |
| END |
| ELSE resc := 5 |
047B | c(E7000003): B 3 [047FH] |
| ENDd |
047C | d(40000005): MOV R0, R0, 5H |
047D | d(81E0000C): LDR R1, SP, CH |
047E | d(A0100000): STR R0, R1, 0H |
| ENDe Call; |
047F | e(8FE00000): LDR LNK, SP, 0H |
0480 | e(4EE80064): ADD SP, SP, 64H |
0481 | e(C700000F): B LNK |
| |
| PROCEDURE GetSelection* (VAR text: Texts.Text; VAR beg, end, time: LONGINT); |
| VAR M: SelectionMsg; |
| BEGINf |
0482 | f .PROC 41 |
0482 | f(4EE90024): SUB SP, SP, 24H |
0483 | f(AFE00000): STR LNK, SP, 0H |
0484 | f(A0E00004): STR R0, SP, 4H |
0485 | f(A1E00008): STR R1, SP, 8H |
0486 | f(A2E0000C): STR R2, SP, CH |
0487 | f(A3E00010): STR R3, SP, 10H |
| M.time := -1;g Viewers.Broadcast(M)h;i time := M.time;j |
0488 | g(5000FFFF): MOV R0, R0, FFFFFFFFH |
0489 | g(A0E00014): STR R0, SP, 14H |
048A | h(40E80014): ADD R0, SP, 14H |
048B | h .FIXUP D |
048B | h(8D000016): LDR SB, MT, MOD0 [Oberon] |
048C | h(41D80040): ADD R1, SB, 40H [data] |
048D | i .FIXUP P |
048D | i(F760F01E): BL MOD6 [Viewers] PROC15 |
048E | j(80E00014): LDR R0, SP, 14H |
048F | j(81E00010): LDR R1, SP, 10H |
0490 | j(A0100000): STR R0, R1, 0H |
| IF time >= 0 THENk text := M.text;l beg := M.beg;m end := M.end ENDn |
0491 | k(80E00010): LDR R0, SP, 10H |
0492 | k(80000000): LDR R0, R0, 0H |
0493 | k(40090000): SUB R0, R0, 0H |
0494 | k(E5000009): BLT 9 [049EH] |
0495 | l(80E00018): LDR R0, SP, 18H |
0496 | l(81E00004): LDR R1, SP, 4H |
0497 | l(A0100000): STR R0, R1, 0H |
0498 | m(80E0001C): LDR R0, SP, 1CH |
0499 | m(81E00008): LDR R1, SP, 8H |
049A | m(A0100000): STR R0, R1, 0H |
049B | n(80E00020): LDR R0, SP, 20H |
049C | n(81E0000C): LDR R1, SP, CH |
049D | n(A0100000): STR R0, R1, 0H |
| ENDo GetSelection; |
049E | o(8FE00000): LDR LNK, SP, 0H |
049F | o(4EE80024): ADD SP, SP, 24H |
04A0 | o(C700000F): B LNK |
| |
| PROCEDURE GC; |
| VAR mod: Modules.Module; |
| BEGINp |
04A1 | p(4EE90008): SUB SP, SP, 8H |
04A2 | p(AFE00000): STR LNK, SP, 0H |
| IF (ActCnt <= 0)q OR (rKernel.allocated >= Kernel.heapLim - Kernel.heapOrg -s 10000H)t THENu |
04A3 | q .FIXUP D |
04A3 | q(8D000018): LDR SB, MT, MOD0 [Oberon] |
04A4 | q(80D00118): LDR R0, SB, 118H [data] |
04A5 | q(40090000): SUB R0, R0, 0H |
04A6 | r(E600000B): BLE 11 [04B2H] |
04A7 | s .FIXUP D |
04A7 | s(8D100004): LDR SB, MT, MOD1 [Kernel] |
04A8 | s(80D00004): LDR R0, SB, VAR4 |
04A9 | s .FIXUP D |
04A9 | s(8D100002): LDR SB, MT, MOD1 [Kernel] |
04AA | s(81D00003): LDR R1, SB, VAR3 |
04AB | s(00090001): SUB R0, R0, R1 |
04AC | t(61000001): MOV' R1, R0, 1H |
04AD | t(00090001): SUB R0, R0, R1 |
04AE | t .FIXUP D |
04AE | t(8D100005): LDR SB, MT, MOD1 [Kernel] |
04AF | t(81D00001): LDR R1, SB, VAR1 |
04B0 | t(01190000): SUB R1, R1, R0 |
04B1 | u(E5000023): BLT 35 [04D5H] |
| mod := Modules.root;v LED(21H);w |
04B2 | v .FIXUP D |
04B2 | v(8D300004): LDR SB, MT, MOD3 [Modules] |
04B3 | v(80D00002): LDR R0, SB, VAR2 |
04B4 | v(A0E00004): STR R0, SP, 4H |
04B5 | w(40000021): MOV R0, R0, 21H |
04B6 | w(5100FFC4): MOV R1, R0, FFFFFFC4H |
04B7 | w(A0100000): STR R0, R1, 0H |
| WHILE mod # NIL DOx |
04B8 | x(80E00004): LDR R0, SP, 4H |
04B9 | x(E100000D): BEQ 13 [04C7H] |
| IF mod.namey[0] # 0X THENz Kernel.Mark(mod.ptra)b ENDc ; |
04BA | y(80E00004): LDR R0, SP, 4H |
04BB | y(D123B04C): BLEQ MT [trap=4, pos=9136] |
04BC | z(90000000): LDR R0, R0, 0H |
04BD | z(E1000004): BEQ 4 [04C2H] |
04BE | a(80E00004): LDR R0, SP, 4H |
04BF | a(D123D14C): BLEQ MT [trap=4, pos=9169] |
04C0 | b(80000048): LDR R0, R0, 48H |
04C1 | c .FIXUP P |
04C1 | c(F7109034): BL MOD1 [Kernel] PROC9 |
| mod := mod.nextd |
04C2 | d(80E00004): LDR R0, SP, 4H |
04C3 | d(D123F04C): BLEQ MT [trap=4, pos=9200] |
| ENDe ; |
04C4 | e(80000020): LDR R0, R0, 20H |
04C5 | e(A0E00004): STR R0, SP, 4H |
04C6 | e(E7FFFFF1): B -15 [04B8H] |
| LED(23H);f |
04C7 | f(40000023): MOV R0, R0, 23H |
04C8 | f(5100FFC4): MOV R1, R0, FFFFFFC4H |
04C9 | f(A0100000): STR R0, R1, 0H |
| Files.RestoreList;g LED(27H);h |
04CA | g .FIXUP P |
04CA | g(F721F009): BL MOD2 [Files] PROC31 |
04CB | h(40000027): MOV R0, R0, 27H |
04CC | h(5100FFC4): MOV R1, R0, FFFFFFC4H |
04CD | h(A0100000): STR R0, R1, 0H |
| Kernel.Scan;i LED(20H);j |
04CE | i .FIXUP P |
04CE | i(F710A004): BL MOD1 [Kernel] PROC10 |
04CF | j(40000020): MOV R0, R0, 20H |
04D0 | j(5100FFC4): MOV R1, R0, FFFFFFC4H |
04D1 | j(A0100000): STR R0, R1, 0H |
| ActCnt := BasicCycle |
| ENDk |
04D2 | k(40000014): MOV R0, R0, 14H |
04D3 | k .FIXUP D |
04D3 | k(8D000021): LDR SB, MT, MOD0 [Oberon] |
04D4 | k(A0D00118): STR R0, SB, 118H [data] |
| ENDl GC; |
04D5 | l(8FE00000): LDR LNK, SP, 0H |
04D6 | l(4EE80008): ADD SP, SP, 8H |
04D7 | l(C700000F): B LNK |
| |
| PROCEDURE NewTask*(h: Handler; period: INTEGER): Task; |
| VAR t: Task; |
| BEGINm NEW(t);n t.stateo := off;p t.nextq := t;r t.handles := h;t t.periodu := period;v RETURN t |
04D8 | m .PROC 42 |
04D8 | m(4EE90010): SUB SP, SP, 10H |
04D9 | m(AFE00000): STR LNK, SP, 0H |
04DA | m(A0E00004): STR R0, SP, 4H |
04DB | m(A1E00008): STR R1, SP, 8H |
04DC | n(40E8000C): ADD R0, SP, CH |
04DD | n .FIXUP D |
04DD | n(8D00000A): LDR SB, MT, MOD0 [Oberon] |
04DE | n(41D80084): ADD R1, SB, 84H [data] |
04DF | n(D724D40C): BL MT [trap=0, pos=9428] |
04E0 | o(80E0000C): LDR R0, SP, CH |
04E1 | o(D124DC4C): BLEQ MT [trap=4, pos=9436] |
04E2 | p(41000000): MOV R1, R0, 0H |
04E3 | p(A1000000): STR R1, R0, 0H |
04E4 | q(80E0000C): LDR R0, SP, CH |
04E5 | q(D124EB4C): BLEQ MT [trap=4, pos=9451] |
04E6 | r(81E0000C): LDR R1, SP, CH |
04E7 | r(A100000C): STR R1, R0, CH |
04E8 | s(80E0000C): LDR R0, SP, CH |
04E9 | s(D124FA4C): BLEQ MT [trap=4, pos=9466] |
04EA | t(81E00004): LDR R1, SP, 4H |
04EB | t(A1000010): STR R1, R0, 10H |
04EC | u(80E0000C): LDR R0, SP, CH |
04ED | u(D125094C): BLEQ MT [trap=4, pos=9481] |
04EE | v(81E00008): LDR R1, SP, 8H |
04EF | v(A1000008): STR R1, R0, 8H |
| ENDw NewTask; |
04F0 | w(80E0000C): LDR R0, SP, CH |
04F1 | w(8FE00000): LDR LNK, SP, 0H |
04F2 | w(4EE80010): ADD SP, SP, 10H |
04F3 | w(C700000F): B LNK |
| |
| PROCEDURE Install* (T: Task); |
| BEGINx |
04F4 | x .PROC 43 |
04F4 | x(4EE90008): SUB SP, SP, 8H |
04F5 | x(AFE00000): STR LNK, SP, 0H |
04F6 | x(A0E00004): STR R0, SP, 4H |
| IF T.statey = off THENz |
04F7 | y(80E00004): LDR R0, SP, 4H |
04F8 | y(D125664C): BLEQ MT [trap=4, pos=9574] |
04F9 | z(80000000): LDR R0, R0, 0H |
04FA | z(E9000017): BNE 23 [0512H] |
| T.nexta := CurTask.nextb;c CurTask.nextd := T;e T.statef := idle;g T.nextTimeh := 0;i INC(NofTasks) |
04FB | a(80E00004): LDR R0, SP, 4H |
04FC | a(D1257E4C): BLEQ MT [trap=4, pos=9598] |
04FD | b .FIXUP D |
04FD | b(8D000020): LDR SB, MT, MOD0 [Oberon] |
04FE | b(81D00108): LDR R1, SB, 108H [data] |
04FF | b(D1258E4C): BLEQ MT [trap=4, pos=9614] |
0500 | c(8110000C): LDR R1, R1, CH |
0501 | c(A100000C): STR R1, R0, CH |
0502 | d(80D00108): LDR R0, SB, 108H |
0503 | d(D1259C4C): BLEQ MT [trap=4, pos=9628] |
0504 | e(81E00004): LDR R1, SP, 4H |
0505 | e(A100000C): STR R1, R0, CH |
0506 | f(80E00004): LDR R0, SP, 4H |
0507 | f(D125AA4C): BLEQ MT [trap=4, pos=9642] |
0508 | g(41000001): MOV R1, R0, 1H |
0509 | g(A1000000): STR R1, R0, 0H |
050A | h(80E00004): LDR R0, SP, 4H |
050B | h(D125BE4C): BLEQ MT [trap=4, pos=9662] |
050C | i(41000000): MOV R1, R0, 0H |
050D | i(A1000004): STR R1, R0, 4H |
| ENDj |
050E | j(40D80104): ADD R0, SB, 104H |
050F | j(81000000): LDR R1, R0, 0H |
0510 | j(41180001): ADD R1, R1, 1H |
0511 | j(A1000000): STR R1, R0, 0H |
| ENDk Install; |
0512 | k(8FE00000): LDR LNK, SP, 0H |
0513 | k(4EE80008): ADD SP, SP, 8H |
0514 | k(C700000F): B LNK |
| |
| PROCEDURE Remove* (T: Task); |
| VAR t: Task; |
| BEGINl |
0515 | l .PROC 44 |
0515 | l(4EE9000C): SUB SP, SP, CH |
0516 | l(AFE00000): STR LNK, SP, 0H |
0517 | l(A0E00004): STR R0, SP, 4H |
| IF T.statem # off THENn t := T;o |
0518 | m(80E00004): LDR R0, SP, 4H |
0519 | m(D126314C): BLEQ MT [trap=4, pos=9777] |
051A | n(80000000): LDR R0, R0, 0H |
051B | n(E1000022): BEQ 34 [053EH] |
051C | o(80E00004): LDR R0, SP, 4H |
051D | o(A0E00008): STR R0, SP, 8H |
| WHILE t.nextp # T DOq t := t.nextr ENDs ; |
051E | p(80E00008): LDR R0, SP, 8H |
051F | p(D126574C): BLEQ MT [trap=4, pos=9815] |
0520 | q(8000000C): LDR R0, R0, CH |
0521 | q(81E00004): LDR R1, SP, 4H |
0522 | q(00090001): SUB R0, R0, R1 |
0523 | q(E1000005): BEQ 5 [0529H] |
0524 | r(80E00008): LDR R0, SP, 8H |
0525 | r(D1266A4C): BLEQ MT [trap=4, pos=9834] |
0526 | s(8000000C): LDR R0, R0, CH |
0527 | s(A0E00008): STR R0, SP, 8H |
0528 | s(E7FFFFF5): B -11 [051EH] |
| t.nextt := T.nextu;v T.statew := off;x T.nexty := NIL;z CurTask := t;a DEC(NofTasks) |
0529 | t(80E00008): LDR R0, SP, 8H |
052A | t(D1267D4C): BLEQ MT [trap=4, pos=9853] |
052B | u(81E00004): LDR R1, SP, 4H |
052C | u(D126874C): BLEQ MT [trap=4, pos=9863] |
052D | v(8110000C): LDR R1, R1, CH |
052E | v(A100000C): STR R1, R0, CH |
052F | w(80E00004): LDR R0, SP, 4H |
0530 | w(D126904C): BLEQ MT [trap=4, pos=9872] |
0531 | x(41000000): MOV R1, R0, 0H |
0532 | x(A1000000): STR R1, R0, 0H |
0533 | y(80E00004): LDR R0, SP, 4H |
0534 | y(D1269F4C): BLEQ MT [trap=4, pos=9887] |
0535 | z(41000000): MOV R1, R0, 0H |
0536 | z(A100000C): STR R1, R0, CH |
0537 | a(80E00008): LDR R0, SP, 8H |
0538 | a .FIXUP D |
0538 | a(8D00003B): LDR SB, MT, MOD0 [Oberon] |
0539 | a(A0D00108): STR R0, SB, 108H [data] |
| ENDb |
053A | b(40D80104): ADD R0, SB, 104H |
053B | b(81000000): LDR R1, R0, 0H |
053C | b(41190001): SUB R1, R1, 1H |
053D | b(A1000000): STR R1, R0, 0H |
| ENDc Remove; |
053E | c(8FE00000): LDR LNK, SP, 0H |
053F | c(4EE8000C): ADD SP, SP, CH |
0540 | c(C700000F): B LNK |
| |
| PROCEDURE Collect* (count: INTEGER); |
| BEGINd ActCnt := count |
0541 | d .PROC 45 |
0541 | d(4EE90008): SUB SP, SP, 8H |
0542 | d(AFE00000): STR LNK, SP, 0H |
0543 | d(A0E00004): STR R0, SP, 4H |
| ENDe Collect; |
0544 | e(80E00004): LDR R0, SP, 4H |
0545 | e .FIXUP D |
0545 | e(8D00000D): LDR SB, MT, MOD0 [Oberon] |
0546 | e(A0D00118): STR R0, SB, 118H [data] |
0547 | e(8FE00000): LDR LNK, SP, 0H |
0548 | e(4EE80008): ADD SP, SP, 8H |
0549 | e(C700000F): B LNK |
| |
| PROCEDURE SetFont* (fnt: Fonts.Font); |
| BEGINf CurFnt := fnt |
054A | f .PROC 46 |
054A | f(4EE90008): SUB SP, SP, 8H |
054B | f(AFE00000): STR LNK, SP, 0H |
054C | f(A0E00004): STR R0, SP, 4H |
| ENDg SetFont; |
054D | g(80E00004): LDR R0, SP, 4H |
054E | g .FIXUP D |
054E | g(8D000009): LDR SB, MT, MOD0 [Oberon] |
054F | g(A0D000F8): STR R0, SB, F8H [data] |
0550 | g(8FE00000): LDR LNK, SP, 0H |
0551 | g(4EE80008): ADD SP, SP, 8H |
0552 | g(C700000F): B LNK |
| |
| PROCEDURE SetColor* (col: INTEGER); |
| BEGINh CurCol := col |
0553 | h .PROC 47 |
0553 | h(4EE90008): SUB SP, SP, 8H |
0554 | h(AFE00000): STR LNK, SP, 0H |
0555 | h(A0E00004): STR R0, SP, 4H |
| ENDi SetColor; |
0556 | i(80E00004): LDR R0, SP, 4H |
0557 | i .FIXUP D |
0557 | i(8D000009): LDR SB, MT, MOD0 [Oberon] |
0558 | i(A0D000FC): STR R0, SB, FCH [data] |
0559 | i(8FE00000): LDR LNK, SP, 0H |
055A | i(4EE80008): ADD SP, SP, 8H |
055B | i(C700000F): B LNK |
| |
| PROCEDURE SetOffset* (voff: INTEGER); |
| BEGINj CurOff := voff |
055C | j .PROC 48 |
055C | j(4EE90008): SUB SP, SP, 8H |
055D | j(AFE00000): STR LNK, SP, 0H |
055E | j(A0E00004): STR R0, SP, 4H |
| ENDk SetOffset; |
055F | k(80E00004): LDR R0, SP, 4H |
0560 | k .FIXUP D |
0560 | k(8D000009): LDR SB, MT, MOD0 [Oberon] |
0561 | k(A0D00100): STR R0, SB, 100H [data] |
0562 | k(8FE00000): LDR LNK, SP, 0H |
0563 | k(4EE80008): ADD SP, SP, 8H |
0564 | k(C700000F): B LNK |
| |
| PROCEDURE Loop*; |
| VAR V: Viewers.Viewer; M: InputMsg; N: ControlMsg; |
| prevX, prevY, X, Y, t: INTEGER; keys: SET; ch: CHAR; |
| BEGINl |
0565 | l .PROC 49 |
0565 | l .COMMAND Loop |
0565 | l(4EE90050): SUB SP, SP, 50H |
0566 | l(AFE00000): STR LNK, SP, 0H |
| REPEAT |
| Input.Mouse(keys,m X,n Y)o;p |
0567 | m(40E80048): ADD R0, SP, 48H |
0568 | n(41E8003C): ADD R1, SP, 3CH |
0569 | o(42E80040): ADD R2, SP, 40H |
056A | p .FIXUP P |
056A | p(F740309C): BL MOD4 [Input] PROC3 |
| IF Input.Available() >q 0 THENr Input.Read(ch)s;t |
056B | q .FIXUP P |
056B | q(F7401001): BL MOD4 [Input] PROC1 |
056C | r(40090000): SUB R0, R0, 0H |
056D | r(E600004B): BLE 75 [05B9H] |
056E | s(40E8004C): ADD R0, SP, 4CH |
056F | t .FIXUP P |
056F | t(F7402004): BL MOD4 [Input] PROC2 |
| IF ch = ESC THENu |
0570 | u(90E0004C): LDR R0, SP, 4CH |
0571 | u(4009001B): SUB R0, R0, 1BH |
0572 | u(E900000E): BNE 14 [0581H] |
| N.id := neutralize;v Viewers.Broadcast(N)w;x FadeCursor(Pointer)y;z LED(0) |
0573 | v(40000001): MOV R0, R0, 1H |
0574 | v(A0E00028): STR R0, SP, 28H |
0575 | w(40E80028): ADD R0, SP, 28H |
0576 | w .FIXUP D |
0576 | w(8D000016): LDR SB, MT, MOD0 [Oberon] |
0577 | w(41D80058): ADD R1, SB, 58H [data] |
0578 | x .FIXUP P |
0578 | x(F760F009): BL MOD6 [Viewers] PROC15 |
0579 | y .FIXUP D |
0579 | y(8D000003): LDR SB, MT, MOD0 [Oberon] |
057A | y(40D800CC): ADD R0, SB, CCH [data] |
057B | y(41D80014): ADD R1, SB, 14H |
057C | z(F7FFFB85): BL -1147 [0102H] |
| ELSIFa chb = SETSTAR THENc |
057D | a(40000000): MOV R0, R0, 0H |
057E | a(5100FFC4): MOV R1, R0, FFFFFFC4H |
057F | a(A0100000): STR R0, R1, 0H |
0580 | b(E7000037): B 55 [05B8H] |
0581 | c(90E0004C): LDR R0, SP, 4CH |
0582 | c(4009001A): SUB R0, R0, 1AH |
0583 | c(E9000018): BNE 24 [059CH] |
| N.id := mark;d N.X := X;e N.Y := Y;f V := Viewers.This(X,g Y)h;i V.handlej(Vk,l N)m |
0584 | d(40000002): MOV R0, R0, 2H |
0585 | d(A0E00028): STR R0, SP, 28H |
0586 | e(80E0003C): LDR R0, SP, 3CH |
0587 | e(A0E0002C): STR R0, SP, 2CH |
0588 | f(80E00040): LDR R0, SP, 40H |
0589 | f(A0E00030): STR R0, SP, 30H |
058A | g(80E0003C): LDR R0, SP, 3CH |
058B | h(81E00040): LDR R1, SP, 40H |
058C | i .FIXUP P |
058C | i(F7609014): BL MOD6 [Viewers] PROC9 |
058D | i(A0E00004): STR R0, SP, 4H |
058E | j(80E00004): LDR R0, SP, 4H |
058F | j(D129D84C): BLEQ MT [trap=4, pos=10712] |
0590 | k(80000018): LDR R0, R0, 18H |
0591 | k(4EE90004): SUB SP, SP, 4H |
0592 | k(A0E00000): STR R0, SP, 0H |
0593 | l(80E00008): LDR R0, SP, 8H |
0594 | m(41E8002C): ADD R1, SP, 2CH |
0595 | m .FIXUP D |
0595 | m(8D00001C): LDR SB, MT, MOD0 [Oberon] |
0596 | m(42D80058): ADD R2, SB, 58H [data] |
| ELSEn Mo.id := consume;p M.ch := ch;q M.fnt := CurFnt;r M.col := CurCol;s M.voff := CurOff;t |
0597 | n(83E00000): LDR R3, SP, 0H |
0598 | n(4EE80004): ADD SP, SP, 4H |
0599 | n(D129EB5C): BLEQ MT [trap=5, pos=10731] |
059A | n(D7000003): BL R3 |
059B | o(E700001C): B 28 [05B8H] |
059C | p(40000000): MOV R0, R0, 0H |
059D | p(A0E00008): STR R0, SP, 8H |
059E | q(90E0004C): LDR R0, SP, 4CH |
059F | q(B0E00018): STR R0, SP, 18H |
05A0 | r .FIXUP D |
05A0 | r(8D00000B): LDR SB, MT, MOD0 [Oberon] |
05A1 | r(80D000F8): LDR R0, SB, F8H [data] |
05A2 | r(A0E0001C): STR R0, SP, 1CH |
05A3 | s(80D000FC): LDR R0, SB, FCH |
05A4 | s(A0E00020): STR R0, SP, 20H |
05A5 | t(80D00100): LDR R0, SB, 100H |
05A6 | t(A0E00024): STR R0, SP, 24H |
| FocusViewer.handleu(FocusViewerv,w M)x;y DEC(ActCnt) |
05A7 | u(80D000E0): LDR R0, SB, E0H |
05A8 | u(D12A594C): BLEQ MT [trap=4, pos=10841] |
05A9 | v(80000018): LDR R0, R0, 18H |
05AA | v(4EE90004): SUB SP, SP, 4H |
05AB | v(A0E00000): STR R0, SP, 0H |
05AC | w(80D000E0): LDR R0, SB, E0H |
05AD | x(41E8000C): ADD R1, SP, CH |
05AE | x(42D80028): ADD R2, SB, 28H |
05AF | y(83E00000): LDR R3, SP, 0H |
05B0 | y(4EE80004): ADD SP, SP, 4H |
05B1 | y(D12A6A5C): BLEQ MT [trap=5, pos=10858] |
05B2 | y(D7000003): BL R3 |
| ENDz |
05B3 | z .FIXUP D |
05B3 | z(8D000013): LDR SB, MT, MOD0 [Oberon] |
05B4 | z(40D80118): ADD R0, SB, 118H [data] |
05B5 | z(81000000): LDR R1, R0, 0H |
05B6 | z(41190001): SUB R1, R1, 1H |
05B7 | z(A1000000): STR R1, R0, 0H |
| ELSIF keysa # {} THENb |
05B8 | a(E7000080): B 128 [0639H] |
05B9 | b(80E00048): LDR R0, SP, 48H |
05BA | b(E1000025): BEQ 37 [05E0H] |
| M.id := track;c M.X := X;d M.Y := Y;e M.keys := keys;f |
05BB | c(40000001): MOV R0, R0, 1H |
05BC | c(A0E00008): STR R0, SP, 8H |
05BD | d(80E0003C): LDR R0, SP, 3CH |
05BE | d(A0E00010): STR R0, SP, 10H |
05BF | e(80E00040): LDR R0, SP, 40H |
05C0 | e(A0E00014): STR R0, SP, 14H |
05C1 | f(80E00048): LDR R0, SP, 48H |
05C2 | f(A0E0000C): STR R0, SP, CH |
| REPEAT V := Viewers.This(M.X,g M.Y)h;i V.handlej(Vk,l M)m;n Input.Mouse(M.keys,o M.X,p M.Y)q |
05C3 | g(80E00010): LDR R0, SP, 10H |
05C4 | h(81E00014): LDR R1, SP, 14H |
05C5 | i .FIXUP P |
05C5 | i(F7609039): BL MOD6 [Viewers] PROC9 |
05C6 | i(A0E00004): STR R0, SP, 4H |
05C7 | j(80E00004): LDR R0, SP, 4H |
05C8 | j(D12B0D4C): BLEQ MT [trap=4, pos=11021] |
05C9 | k(80000018): LDR R0, R0, 18H |
05CA | k(4EE90004): SUB SP, SP, 4H |
05CB | k(A0E00000): STR R0, SP, 0H |
05CC | l(80E00008): LDR R0, SP, 8H |
05CD | m(41E8000C): ADD R1, SP, CH |
05CE | m .FIXUP D |
05CE | m(8D00001B): LDR SB, MT, MOD0 [Oberon] |
05CF | m(42D80028): ADD R2, SB, 28H [data] |
05D0 | n(83E00000): LDR R3, SP, 0H |
05D1 | n(4EE80004): ADD SP, SP, 4H |
05D2 | n(D12B145C): BLEQ MT [trap=5, pos=11028] |
05D3 | n(D7000003): BL R3 |
05D4 | o(40E8000C): ADD R0, SP, CH |
05D5 | p(41E80010): ADD R1, SP, 10H |
05D6 | q(42E80014): ADD R2, SP, 14H |
| UNTILr M.keys = {};s |
05D7 | r .FIXUP P |
05D7 | r(F7403012): BL MOD4 [Input] PROC3 |
05D8 | s(80E0000C): LDR R0, SP, CH |
05D9 | s(E9FFFFE9): BNE -23 [05C3H] |
| DEC(ActCnt) |
| ELSEt |
05DA | t .FIXUP D |
05DA | t(8D00000C): LDR SB, MT, MOD0 [Oberon] |
05DB | t(40D80118): ADD R0, SB, 118H [data] |
05DC | t(81000000): LDR R1, R0, 0H |
05DD | t(41190001): SUB R1, R1, 1H |
05DE | t(A1000000): STR R1, R0, 0H |
| IFu (X # prevX)v OR (wY # prevY)x OR ~yMouse.on THENz |
05DF | u(E7000059): B 89 [0639H] |
05E0 | v(80E0003C): LDR R0, SP, 3CH |
05E1 | v(81E00034): LDR R1, SP, 34H |
05E2 | v(00090001): SUB R0, R0, R1 |
05E3 | w(E9000007): BNE 7 [05EBH] |
05E4 | x(80E00040): LDR R0, SP, 40H |
05E5 | x(81E00038): LDR R1, SP, 38H |
05E6 | x(00090001): SUB R0, R0, R1 |
05E7 | y(E9000003): BNE 3 [05EBH] |
05E8 | z .FIXUP D |
05E8 | z(8D00000E): LDR SB, MT, MOD0 [Oberon] |
05E9 | z(90D000C0): LDR R0, SB, C0H [data] |
05EA | z(E9000025): BNE 37 [0610H] |
| M.id := track;a M.X := X;b |
05EB | a(40000001): MOV R0, R0, 1H |
05EC | a(A0E00008): STR R0, SP, 8H |
05ED | b(80E0003C): LDR R0, SP, 3CH |
05EE | b(A0E00010): STR R0, SP, 10H |
| IF Y >= Display.Height THENc Y := Display.Height ENDd ; |
05EF | c(80E00040): LDR R0, SP, 40H |
05F0 | c .FIXUP D |
05F0 | c(8D500008): LDR SB, MT, MOD5 [Display] |
05F1 | c(81D00005): LDR R1, SB, VAR5 |
05F2 | c(00090001): SUB R0, R0, R1 |
05F3 | c(E5000003): BLT 3 [05F7H] |
05F4 | d .FIXUP D |
05F4 | d(8D500004): LDR SB, MT, MOD5 [Display] |
05F5 | d(80D00005): LDR R0, SB, VAR5 |
05F6 | d(A0E00040): STR R0, SP, 40H |
| M.Y := Y;e M.keys := keys;f V := Viewers.This(X,g Y)h;i V.handlej(Vk,l M)m;n prevX := X;o prevY := Y |
05F7 | e(80E00040): LDR R0, SP, 40H |
05F8 | e(A0E00014): STR R0, SP, 14H |
05F9 | f(80E00048): LDR R0, SP, 48H |
05FA | f(A0E0000C): STR R0, SP, CH |
05FB | g(80E0003C): LDR R0, SP, 3CH |
05FC | h(81E00040): LDR R1, SP, 40H |
05FD | i .FIXUP P |
05FD | i(F7609026): BL MOD6 [Viewers] PROC9 |
05FE | i(A0E00004): STR R0, SP, 4H |
05FF | j(80E00004): LDR R0, SP, 4H |
0600 | j(D12C4E4C): BLEQ MT [trap=4, pos=11342] |
0601 | k(80000018): LDR R0, R0, 18H |
0602 | k(4EE90004): SUB SP, SP, 4H |
0603 | k(A0E00000): STR R0, SP, 0H |
0604 | l(80E00008): LDR R0, SP, 8H |
0605 | m(41E8000C): ADD R1, SP, CH |
0606 | m .FIXUP D |
0606 | m(8D000012): LDR SB, MT, MOD0 [Oberon] |
0607 | m(42D80028): ADD R2, SB, 28H [data] |
0608 | n(83E00000): LDR R3, SP, 0H |
0609 | n(4EE80004): ADD SP, SP, 4H |
060A | n(D12C555C): BLEQ MT [trap=5, pos=11349] |
060B | n(D7000003): BL R3 |
060C | o(80E0003C): LDR R0, SP, 3CH |
060D | o(A0E00034): STR R0, SP, 34H |
| ENDp; |
060E | p(80E00040): LDR R0, SP, 40H |
060F | p(A0E00038): STR R0, SP, 38H |
| CurTask := CurTask.nextq;r t := Kernel.Time();s |
0610 | q .FIXUP D |
0610 | q(8D00000A): LDR SB, MT, MOD0 [Oberon] |
0611 | q(80D00108): LDR R0, SB, 108H [data] |
0612 | q(D12C994C): BLEQ MT [trap=4, pos=11417] |
0613 | r(8000000C): LDR R0, R0, CH |
0614 | r(A0D00108): STR R0, SB, 108H |
0615 | s .FIXUP P |
0615 | s(F7111018): BL MOD1 [Kernel] PROC17 |
0616 | s(A0E00044): STR R0, SP, 44H |
| IF t >= CurTask.nextTimet THENu |
0617 | t .FIXUP D |
0617 | t(8D000007): LDR SB, MT, MOD0 [Oberon] |
0618 | t(80D00108): LDR R0, SB, 108H [data] |
0619 | t(D12CCF4C): BLEQ MT [trap=4, pos=11471] |
061A | u(81E00044): LDR R1, SP, 44H |
061B | u(80000004): LDR R0, R0, 4H |
061C | u(01190000): SUB R1, R1, R0 |
061D | u(E500001B): BLT 27 [0639H] |
| CurTask.nextTimev := t + CurTask.periodw;x CurTask.statey := active;z CurTask.handlea;b CurTask.statec := idle |
061E | v .FIXUP D |
061E | v(8D000007): LDR SB, MT, MOD0 [Oberon] |
061F | v(80D00108): LDR R0, SB, 108H [data] |
0620 | v(D12CEF4C): BLEQ MT [trap=4, pos=11503] |
0621 | w(81D00108): LDR R1, SB, 108H |
0622 | w(D12D054C): BLEQ MT [trap=4, pos=11525] |
0623 | x(82E00044): LDR R2, SP, 44H |
0624 | x(81100008): LDR R1, R1, 8H |
0625 | x(01280001): ADD R1, R2, R1 |
0626 | x(A1000004): STR R1, R0, 4H |
0627 | y(80D00108): LDR R0, SB, 108H |
0628 | y(D12D144C): BLEQ MT [trap=4, pos=11540] |
0629 | z(41000002): MOV R1, R0, 2H |
062A | z(A1000000): STR R1, R0, 0H |
062B | a(80D00108): LDR R0, SB, 108H |
062C | a(D12D2E4C): BLEQ MT [trap=4, pos=11566] |
062D | b(80000010): LDR R0, R0, 10H |
062E | b(4EE90004): SUB SP, SP, 4H |
062F | b(A0E00000): STR R0, SP, 0H |
0630 | b(80E00000): LDR R0, SP, 0H |
0631 | b(4EE80004): ADD SP, SP, 4H |
0632 | b(D12D2F5C): BLEQ MT [trap=5, pos=11567] |
0633 | b(D7000000): BL R0 |
0634 | c .FIXUP D |
0634 | c(8D000016): LDR SB, MT, MOD0 [Oberon] |
0635 | c(80D00108): LDR R0, SB, 108H [data] |
0636 | c(D12D3D4C): BLEQ MT [trap=4, pos=11581] |
| ENDd |
0637 | d(41000001): MOV R1, R0, 1H |
0638 | d(A1000000): STR R1, R0, 0H |
| END |
| UNTIL FALSE |
| ENDe Loop; |
0639 | e(E7FFFF2D): B -211 [0567H] |
063A | e(8FE00000): LDR LNK, SP, 0H |
063B | e(4EE80050): ADD SP, SP, 50H |
063C | e(C700000F): B LNK |
| |
| PROCEDURE Reset*; |
| BEGINf |
063D | f .PROC 50 |
063D | f .COMMAND Reset |
063D | f(4EE90004): SUB SP, SP, 4H |
063E | f(AFE00000): STR LNK, SP, 0H |
| IF CurTask.stateg = active THENh Remove(CurTask)i ENDj ; |
063F | g .FIXUP D |
063F | g(8D00000B): LDR SB, MT, MOD0 [Oberon] |
0640 | g(80D00108): LDR R0, SB, 108H [data] |
0641 | g(D12DA94C): BLEQ MT [trap=4, pos=11689] |
0642 | h(80000000): LDR R0, R0, 0H |
0643 | h(40090002): SUB R0, R0, 2H |
0644 | h(E9000003): BNE 3 [0648H] |
0645 | i .FIXUP D |
0645 | i(8D000006): LDR SB, MT, MOD0 [Oberon] |
0646 | i(80D00108): LDR R0, SB, 108H [data] |
0647 | j(F7FFFECD): BL -307 [0515H] |
| SYSTEM.LDREG(14, Kernel.stackOrg);k (*reset stack pointer*) Loop |
0648 | k .FIXUP D |
0648 | k(8D100003): LDR SB, MT, MOD1 [Kernel] |
0649 | k(80D00005): LDR R0, SB, VAR5 |
064A | k(0E000000): MOV SP, R0, R0 |
| ENDl Reset; |
064B | l(F7FFFF19): BL -231 [0565H] |
064C | l(8FE00000): LDR LNK, SP, 0H |
064D | l(4EE80004): ADD SP, SP, 4H |
064E | l(C700000F): B LNK |
| |
| BEGINm User[0] := 0X;n |
064F | m .PROC 0 |
064F | m .ENTRYPOINT |
064F | m(4EE90004): SUB SP, SP, 4H |
0650 | m(AFE00000): STR LNK, SP, 0H |
0651 | n(40000000): MOV R0, R0, 0H |
0652 | n .FIXUP D |
0652 | n(8D00000A): LDR SB, MT, MOD0 [Oberon] |
0653 | n(B0D0009C): STR R0, SB, 9CH [data] |
| Arrow.Fade := FlipArrow;o Arrow.Draw := FlipArrow;p |
0654 | o(F7000000): BL 0 [0655H] |
0655 | o(40F917B4): SUB R0, LNK, 17B4H |
0656 | o(A0D000A8): STR R0, SB, A8H |
0657 | p(F7000000): BL 0 [0658H] |
0658 | p(40F917C0): SUB R0, LNK, 17C0H |
0659 | p(A0D000AC): STR R0, SB, ACH |
| Star.Fade := FlipStar;q Star.Draw := FlipStar;r |
065A | q(F7000000): BL 0 [065BH] |
065B | q(40F916E0): SUB R0, LNK, 16E0H |
065C | q(A0D000B0): STR R0, SB, B0H |
065D | r(F7000000): BL 0 [065EH] |
065E | r(40F916EC): SUB R0, LNK, 16ECH |
065F | r(A0D000B4): STR R0, SB, B4H |
| OpenCursor(Mouse)s;t OpenCursor(Pointer)u;v |
0660 | s(40D800B8): ADD R0, SB, B8H |
0661 | s(41D80014): ADD R1, SB, 14H |
0662 | t(F7FFFA8F): BL -1393 [00F2H] |
0663 | u .FIXUP D |
0663 | u(8D000011): LDR SB, MT, MOD0 [Oberon] |
0664 | u(40D800CC): ADD R0, SB, CCH [data] |
0665 | u(41D80014): ADD R1, SB, 14H |
0666 | v(F7FFFA8B): BL -1397 [00F2H] |
| |
| DW := Display.Width;w DH := Display.Height;x CL := DW;y |
0667 | w .FIXUP D |
0667 | w(8D500004): LDR SB, MT, MOD5 [Display] |
0668 | w(80D00004): LDR R0, SB, VAR4 |
0669 | w .FIXUP D |
0669 | w(8D000002): LDR SB, MT, MOD0 [Oberon] |
066A | w(A0D0010C): STR R0, SB, 10CH [data] |
066B | x .FIXUP D |
066B | x(8D500002): LDR SB, MT, MOD5 [Display] |
066C | x(80D00005): LDR R0, SB, VAR5 |
066D | x .FIXUP D |
066D | x(8D000002): LDR SB, MT, MOD0 [Oberon] |
066E | x(A0D00110): STR R0, SB, 110H [data] |
066F | y(80D0010C): LDR R0, SB, 10CH |
0670 | y(A0D00114): STR R0, SB, 114H |
| OpenDisplay(DW DIV 8 *z 5,a DW DIV 8 *b 3,c DH)d;e |
0671 | z(80D0010C): LDR R0, SB, 10CH |
0672 | z(40020003): ASR R0, R0, 3H |
0673 | a(400A0005): MUL R0, R0, 5H |
0674 | b(81D0010C): LDR R1, SB, 10CH |
0675 | b(41120003): ASR R1, R1, 3H |
0676 | c(411A0003): MUL R1, R1, 3H |
0677 | d(82D00110): LDR R2, SB, 110H |
0678 | e(F7FFFBF0): BL -1040 [0269H] |
| FocusViewer := Viewers.This(0,f 0)g;h |
0679 | f(40000000): MOV R0, R0, 0H |
067A | g(41000000): MOV R1, R0, 0H |
067B | h .FIXUP P |
067B | h(F7609066): BL MOD6 [Viewers] PROC9 |
067C | h .FIXUP D |
067C | h(8D00000F): LDR SB, MT, MOD0 [Oberon] |
067D | h(A0D000E0): STR R0, SB, E0H [data] |
| CurFnt := Fonts.Default;i CurCol := Display.white;j CurOff := 0;k |
067E | i .FIXUP D |
067E | i(8D700002): LDR SB, MT, MOD7 [Fonts] |
067F | i(80D00002): LDR R0, SB, VAR2 |
0680 | i .FIXUP D |
0680 | i(8D000002): LDR SB, MT, MOD0 [Oberon] |
0681 | i(A0D000F8): STR R0, SB, F8H [data] |
0682 | j(40000001): MOV R0, R0, 1H |
0683 | j(A0D000FC): STR R0, SB, FCH |
0684 | k(40000000): MOV R0, R0, 0H |
0685 | k(A0D00100): STR R0, SB, 100H |
| |
| ActCnt := 0;l CurTask := NewTask(GC,m 1000)n;o Install(CurTask)p;q |
0686 | l(40000000): MOV R0, R0, 0H |
0687 | l(A0D00118): STR R0, SB, 118H |
0688 | m(F7000000): BL 0 [0689H] |
0689 | m(40F907A0): SUB R0, LNK, 7A0H |
068A | n(410003E8): MOV R1, R0, 3E8H |
068B | o(F7FFFE4C): BL -436 [04D8H] |
068C | o .FIXUP D |
068C | o(8D00000C): LDR SB, MT, MOD0 [Oberon] |
068D | o(A0D00108): STR R0, SB, 108H [data] |
068E | p(80D00108): LDR R0, SB, 108H |
068F | q(F7FFFE64): BL -412 [04F4H] |
| Modules.Load("System",r Mod)s;t Mod := NIL;u Loop |
0690 | r .FIXUP D |
0690 | r(8D000004): LDR SB, MT, MOD0 [Oberon] |
0691 | r(40D80120): ADD R0, SB, 120H ["System"] |
0692 | r(41000007): MOV R1, R0, 7H |
0693 | s(42D8011C): ADD R2, SB, 11CH |
0694 | t .FIXUP P |
0694 | t(F7308019): BL MOD3 [Modules] PROC8 |
0695 | u(40000000): MOV R0, R0, 0H |
0696 | u .FIXUP D |
0696 | u(8D000006): LDR SB, MT, MOD0 [Oberon] |
0697 | u(A0D0011C): STR R0, SB, 11CH [data] |
| ENDv Oberon.w |
0698 | v(F7FFFECC): BL -308 [0565H] |
0699 | w(8FE00000): LDR LNK, SP, 0H |
069A | w(4EE80004): ADD SP, SP, 4H |
069B | w(C700000F): B LNK |