RS232

Used Exports

BUILTINS: CHAR CHR INC INTEGER ORD REAL ROR
SYSTEM: BIT GET PUT VAL

MODULE RS232; (*NW 3.1.2012*)
.MODULE RS232 (KEY F37C22EC, VERSION 1, SIZE 0000038C)
.FIXUP T 0H
IMPORT SYSTEM;
CONST data = -56; stat = -52;
PROCEDURE Send*(x: INTEGER);
BEGINa
0000a .PROC 1
0000a(4EE90008): SUB SP, SP, 8H
0001a(AFE00000): STR LNK, SP, 0H
0002a(A0E00004): STR R0, SP, 4H
REPEAT UNTIL SYSTEM.BIT(stat, 1);b
0003b(5000FFCC): MOV R0, R0, FFFFFFCCH
0004b(80000000): LDR R0, R0, 0H
0005b(40030002): ROR R0, R0, 2H
0006b(E8FFFFFC): BPL -4 [0003H]
SYSTEM.PUT(data, x)
ENDc Send;
0007c(5000FFC8): MOV R0, R0, FFFFFFC8H
0008c(81E00004): LDR R1, SP, 4H
0009c(A1000000): STR R1, R0, 0H
000Ac(8FE00000): LDR LNK, SP, 0H
000Bc(4EE80008): ADD SP, SP, 8H
000Cc(C700000F): B LNK
PROCEDURE Rec*(VAR x: INTEGER);
BEGINd
000Dd .PROC 2
000Dd(4EE90008): SUB SP, SP, 8H
000Ed(AFE00000): STR LNK, SP, 0H
000Fd(A0E00004): STR R0, SP, 4H
REPEAT UNTIL SYSTEM.BIT(stat, 0);e
0010e(5000FFCC): MOV R0, R0, FFFFFFCCH
0011e(80000000): LDR R0, R0, 0H
0012e(40030001): ROR R0, R0, 1H
0013e(E8FFFFFC): BPL -4 [0010H]
SYSTEM.GET(data, x)
ENDf Rec;
0014f(5000FFC8): MOV R0, R0, FFFFFFC8H
0015f(80000000): LDR R0, R0, 0H
0016f(81E00004): LDR R1, SP, 4H
0017f(A0100000): STR R0, R1, 0H
0018f(8FE00000): LDR LNK, SP, 0H
0019f(4EE80008): ADD SP, SP, 8H
001Af(C700000F): B LNK
PROCEDURE SendInt*(x: INTEGER);
VAR i: INTEGER;
BEGINg Send(1)h;i i := 4;j
001Bg .PROC 3
001Bg(4EE9000C): SUB SP, SP, CH
001Cg(AFE00000): STR LNK, SP, 0H
001Dg(A0E00004): STR R0, SP, 4H
001Eh(40000001): MOV R0, R0, 1H
001Fi(F7FFFFE0): BL -32 [0000H]
0020j(40000004): MOV R0, R0, 4H
0021j(A0E00008): STR R0, SP, 8H
REPEAT i := i-1;k Send(x)l;m x := ROR(x, 8) UNTILn i = 0
0022k(80E00008): LDR R0, SP, 8H
0023k(40090001): SUB R0, R0, 1H
0024k(A0E00008): STR R0, SP, 8H
0025l(80E00004): LDR R0, SP, 4H
0026m(F7FFFFD9): BL -39 [0000H]
0027n(80E00004): LDR R0, SP, 4H
0028n(40030008): ROR R0, R0, 8H
0029n(A0E00004): STR R0, SP, 4H
ENDo SendInt;
002Ao(80E00008): LDR R0, SP, 8H
002Bo(E9FFFFF6): BNE -10 [0022H]
002Co(8FE00000): LDR LNK, SP, 0H
002Do(4EE8000C): ADD SP, SP, CH
002Eo(C700000F): B LNK
PROCEDURE SendHex*(x: INTEGER);
VAR i: INTEGER;
BEGINp Send(2)q;r i := 4;s
002Fp .PROC 4
002Fp(4EE9000C): SUB SP, SP, CH
0030p(AFE00000): STR LNK, SP, 0H
0031p(A0E00004): STR R0, SP, 4H
0032q(40000002): MOV R0, R0, 2H
0033r(F7FFFFCC): BL -52 [0000H]
0034s(40000004): MOV R0, R0, 4H
0035s(A0E00008): STR R0, SP, 8H
REPEAT i := i-1;t Send(x)u;v x := ROR(x, 8) UNTILw i = 0
0036t(80E00008): LDR R0, SP, 8H
0037t(40090001): SUB R0, R0, 1H
0038t(A0E00008): STR R0, SP, 8H
0039u(80E00004): LDR R0, SP, 4H
003Av(F7FFFFC5): BL -59 [0000H]
003Bw(80E00004): LDR R0, SP, 4H
003Cw(40030008): ROR R0, R0, 8H
003Dw(A0E00004): STR R0, SP, 4H
ENDx SendHex;
003Ex(80E00008): LDR R0, SP, 8H
003Fx(E9FFFFF6): BNE -10 [0036H]
0040x(8FE00000): LDR LNK, SP, 0H
0041x(4EE8000C): ADD SP, SP, CH
0042x(C700000F): B LNK
PROCEDURE SendReal*(x: REAL);
VAR i, u: INTEGER;
BEGINy Send(3)z;a u := ORD(x);b i := 4;c
0043y .PROC 5
0043y(4EE90010): SUB SP, SP, 10H
0044y(AFE00000): STR LNK, SP, 0H
0045y(A0E00004): STR R0, SP, 4H
0046z(40000003): MOV R0, R0, 3H
0047a(F7FFFFB8): BL -72 [0000H]
0048b(80E00004): LDR R0, SP, 4H
0049b(A0E0000C): STR R0, SP, CH
004Ac(40000004): MOV R0, R0, 4H
004Bc(A0E00008): STR R0, SP, 8H
REPEAT i := i-1;d Send(u)e;f u := ROR(u, 8) UNTILg i = 0
004Cd(80E00008): LDR R0, SP, 8H
004Dd(40090001): SUB R0, R0, 1H
004Ed(A0E00008): STR R0, SP, 8H
004Fe(80E0000C): LDR R0, SP, CH
0050f(F7FFFFAF): BL -81 [0000H]
0051g(80E0000C): LDR R0, SP, CH
0052g(40030008): ROR R0, R0, 8H
0053g(A0E0000C): STR R0, SP, CH
ENDh SendReal;
0054h(80E00008): LDR R0, SP, 8H
0055h(E9FFFFF6): BNE -10 [004CH]
0056h(8FE00000): LDR LNK, SP, 0H
0057h(4EE80010): ADD SP, SP, 10H
0058h(C700000F): B LNK
PROCEDURE SendStr*(x: ARRAY OF CHAR);
VAR i, k: INTEGER;
BEGINi Send(4)j;k i := 0;l
0059i .PROC 6
0059i(4EE90014): SUB SP, SP, 14H
005Ai(AFE00000): STR LNK, SP, 0H
005Bi(A0E00004): STR R0, SP, 4H
005Ci(A1E00008): STR R1, SP, 8H
005Dj(40000004): MOV R0, R0, 4H
005Ek(F7FFFFA1): BL -95 [0000H]
005Fl(40000000): MOV R0, R0, 0H
0060l(A0E0000C): STR R0, SP, CH
REPEAT k := ORD(x[i]m);n Send(k)o;p INC(i) UNTILq k = 0
0061m(80E0000C): LDR R0, SP, CH
0062m(81E00008): LDR R1, SP, 8H
0063m(01090001): SUB R1, R0, R1
0064m(DA03841C): BLCC MT [trap=1, pos=900]
0065m(81E00004): LDR R1, SP, 4H
0066m(00180000): ADD R0, R1, R0
0067n(90000000): LDR R0, R0, 0H
0068n(A0E00010): STR R0, SP, 10H
0069o(80E00010): LDR R0, SP, 10H
006Ap(F7FFFF95): BL -107 [0000H]
006Bq(80E0000C): LDR R0, SP, CH
006Cq(40080001): ADD R0, R0, 1H
006Dq(A0E0000C): STR R0, SP, CH
ENDr SendStr;
006Er(80E00010): LDR R0, SP, 10H
006Fr(E9FFFFF1): BNE -15 [0061H]
0070r(8FE00000): LDR LNK, SP, 0H
0071r(4EE80014): ADD SP, SP, 14H
0072r(C700000F): B LNK
PROCEDURE RecInt*(VAR x: INTEGER);
VAR i, x0, y: INTEGER;
BEGINs i := 4;t x0 := 0;u
0073s .PROC 7
0073s(4EE90014): SUB SP, SP, 14H
0074s(AFE00000): STR LNK, SP, 0H
0075s(A0E00004): STR R0, SP, 4H
0076t(40000004): MOV R0, R0, 4H
0077t(A0E00008): STR R0, SP, 8H
0078u(40000000): MOV R0, R0, 0H
0079u(A0E0000C): STR R0, SP, CH
REPEAT i := i-1;v Rec(y)w;x x0 := ROR(x0+y,y 8) UNTILz i = 0;a
007Av(80E00008): LDR R0, SP, 8H
007Bv(40090001): SUB R0, R0, 1H
007Cv(A0E00008): STR R0, SP, 8H
007Dw(40E80010): ADD R0, SP, 10H
007Ex(F7FFFF8E): BL -114 [000DH]
007Fy(80E0000C): LDR R0, SP, CH
0080y(81E00010): LDR R1, SP, 10H
0081y(00080001): ADD R0, R0, R1
0082z(40030008): ROR R0, R0, 8H
0083z(A0E0000C): STR R0, SP, CH
0084a(80E00008): LDR R0, SP, 8H
0085a(E9FFFFF4): BNE -12 [007AH]
x := x0
ENDb RecInt;
0086b(80E0000C): LDR R0, SP, CH
0087b(81E00004): LDR R1, SP, 4H
0088b(A0100000): STR R0, R1, 0H
0089b(8FE00000): LDR LNK, SP, 0H
008Ab(4EE80014): ADD SP, SP, 14H
008Bb(C700000F): B LNK
PROCEDURE RecReal*(VAR x: REAL);
VAR i, x0, y: INTEGER;
BEGINc i := 4;d x0 := 0;e
008Cc .PROC 8
008Cc(4EE90014): SUB SP, SP, 14H
008Dc(AFE00000): STR LNK, SP, 0H
008Ec(A0E00004): STR R0, SP, 4H
008Fd(40000004): MOV R0, R0, 4H
0090d(A0E00008): STR R0, SP, 8H
0091e(40000000): MOV R0, R0, 0H
0092e(A0E0000C): STR R0, SP, CH
REPEAT i := i-1;f Rec(y)g;h x0 := ROR(x0+y,i 8) UNTILj i = 0;k
0093f(80E00008): LDR R0, SP, 8H
0094f(40090001): SUB R0, R0, 1H
0095f(A0E00008): STR R0, SP, 8H
0096g(40E80010): ADD R0, SP, 10H
0097h(F7FFFF75): BL -139 [000DH]
0098i(80E0000C): LDR R0, SP, CH
0099i(81E00010): LDR R1, SP, 10H
009Ai(00080001): ADD R0, R0, R1
009Bj(40030008): ROR R0, R0, 8H
009Cj(A0E0000C): STR R0, SP, CH
009Dk(80E00008): LDR R0, SP, 8H
009Ek(E9FFFFF4): BNE -12 [0093H]
x := SYSTEM.VAL(REAL, x0)
ENDl RecReal;
009Fl(80E0000C): LDR R0, SP, CH
00A0l(81E00004): LDR R1, SP, 4H
00A1l(A0100000): STR R0, R1, 0H
00A2l(8FE00000): LDR LNK, SP, 0H
00A3l(4EE80014): ADD SP, SP, 14H
00A4l(C700000F): B LNK
PROCEDURE RecStr*(VAR x: ARRAY OF CHAR);
VAR i, k: INTEGER;
BEGINm i := 0;n
00A5m .PROC 9
00A5m(4EE90014): SUB SP, SP, 14H
00A6m(AFE00000): STR LNK, SP, 0H
00A7m(A0E00004): STR R0, SP, 4H
00A8m(A1E00008): STR R1, SP, 8H
00A9n(40000000): MOV R0, R0, 0H
00AAn(A0E0000C): STR R0, SP, CH
REPEAT Rec(k)o;p x[i]q := CHR(k);r INC(i) UNTILs k = 0
00ABo(40E80010): ADD R0, SP, 10H
00ACp(F7FFFF60): BL -160 [000DH]
00ADq(80E0000C): LDR R0, SP, CH
00AEq(81E00008): LDR R1, SP, 8H
00AFq(01090001): SUB R1, R0, R1
00B0q(DA058F1C): BLCC MT [trap=1, pos=1423]
00B1q(81E00004): LDR R1, SP, 4H
00B2q(00180000): ADD R0, R1, R0
00B3r(81E00010): LDR R1, SP, 10H
00B4r(B1000000): STR R1, R0, 0H
00B5s(80E0000C): LDR R0, SP, CH
00B6s(40080001): ADD R0, R0, 1H
00B7s(A0E0000C): STR R0, SP, CH
ENDt RecStr;
00B8t(80E00010): LDR R0, SP, 10H
00B9t(E9FFFFF1): BNE -15 [00ABH]
00BAt(8FE00000): LDR LNK, SP, 0H
00BBt(4EE80014): ADD SP, SP, 14H
00BCt(C700000F): B LNK
PROCEDURE Line*;
BEGINu Send(6)v
00BDu .PROC 10
00BDu .COMMAND Line
00BDu(4EE90004): SUB SP, SP, 4H
00BEu(AFE00000): STR LNK, SP, 0H
00BFv(40000006): MOV R0, R0, 6H
ENDw Line;
00C0w(F7FFFF3F): BL -193 [0000H]
00C1w(8FE00000): LDR LNK, SP, 0H
00C2w(4EE80004): ADD SP, SP, 4H
00C3w(C700000F): B LNK
PROCEDURE End*;
BEGINx Send(7)y
00C4x .PROC 11
00C4x .COMMAND End
00C4x(4EE90004): SUB SP, SP, 4H
00C5x(AFE00000): STR LNK, SP, 0H
00C6y(40000007): MOV R0, R0, 7H
ENDz End;
00C7z(F7FFFF38): BL -200 [0000H]
00C8z(8FE00000): LDR LNK, SP, 0H
00C9z(4EE80004): ADD SP, SP, 4H
00CAz(C700000F): B LNK
BEGINa END RS232.b
00CBa .PROC 0
00CBa .ENTRYPOINT
00CBa(4EE90004): SUB SP, SP, 4H
00CCa(AFE00000): STR LNK, SP, 0H
00CDb(8FE00000): LDR LNK, SP, 0H
00CEb(4EE80004): ADD SP, SP, 4H
00CFb(C700000F): B LNK