Rev 7696 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7696 | Rev 7983 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | BSD 2-Clause License |
2 | BSD 2-Clause License |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | Copyright (c) 2019, Anton Krotov |
4 | Copyright (c) 2019-2020, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 37... | Line 37... | ||
37 | HP = 14; |
37 | HP = 14; |
Line 38... | Line 38... | ||
38 | 38 | ||
Line 39... | Line 39... | ||
39 | LenIV* = 32; |
39 | LenIV* = 32; |
- | 40 | ||
40 | 41 | iv = 10000H - LenIV * 2; |
|
41 | iv = 10000H - LenIV * 2; |
42 | bsl = iv - 2; |
42 | sp = iv - 2; |
43 | sp = bsl - 2; |
43 | empty_proc* = sp - 2; |
44 | empty_proc* = sp - 2; |
44 | free_size = empty_proc - 2; |
45 | free_size = empty_proc - 2; |
45 | free_adr = free_size - 2; |
46 | free_adr = free_size - 2; |
Line 368... | Line 369... | ||
368 | Word1(2000H + 400H - 7); (* JNZ L2 *) |
369 | Word1(2000H + 400H - 7); (* JNZ L2 *) |
369 | (* L1: *) |
370 | (* L1: *) |
370 | Word1(4130H) (* RET *) |
371 | Word1(4130H) (* RET *) |
371 | END; |
372 | END; |
Line 372... | Line 373... | ||
372 | 373 | ||
373 | (* _error (module, err, line: INTEGER) *) |
374 | (* _error (modNum, modName, err, line: INTEGER) *) |
374 | IF rtl[_error].used THEN |
375 | IF rtl[_error].used THEN |
375 | Label(rtl[_error].label); |
376 | Label(rtl[_error].label); |
376 | Word1(0C232H); (* BIC #8, SR; DINT *) |
377 | Word1(0C232H); (* BIC #8, SR; DINT *) |
377 | Word1(4303H); (* MOV R3, R3; NOP *) |
378 | Word1(4303H); (* MOV R3, R3; NOP *) |
- | 379 | Word2(4114H, 2); (* MOV 2(SP), R4; R4 <- modNum *) |
|
378 | Word2(4114H, 2); (* MOV 2(SP), R4; R4 <- module *) |
380 | Word2(4115H, 4); (* MOV 4(SP), R5; R5 <- modName *) |
379 | Word2(4115H, 4); (* MOV 4(SP), R5; R5 <- err *) |
381 | Word2(4116H, 6); (* MOV 6(SP), R6; R6 <- err *) |
380 | Word2(4116H, 6); (* MOV 6(SP), R6; R6 <- line *) |
382 | Word2(4117H, 8); (* MOV 8(SP), R7; R7 <- line *) |
- | 383 | Word2(4211H, sp); (* MOV sp(SR), SP *) |
|
381 | Word2(4211H, sp); (* MOV sp(SR), SP *) |
384 | Word1(1207H); (* PUSH R7 *) |
382 | Word1(1206H); (* PUSH R6 *) |
- | |
383 | Word1(1204H); (* PUSH R4 *) |
385 | Word1(1206H); (* PUSH R6 *) |
- | 386 | Word1(1205H); (* PUSH R5 *) |
|
384 | Word1(1205H); (* PUSH R5 *) |
387 | Word1(1204H); (* PUSH R4 *) |
385 | Word2(4214H, trap); (* MOV trap(SR), R4 *) |
388 | Word2(4214H, trap); (* MOV trap(SR), R4 *) |
386 | Word1(9304H); (* TST R4 *) |
389 | Word1(9304H); (* TST R4 *) |
387 | Word1(2400H + 1); (* JZ L *) |
390 | Word1(2400H + 1); (* JZ L *) |
388 | Word1(1284H); (* CALL R4 *) |
391 | Word1(1284H); (* CALL R4 *) |
Line 661... | Line 664... | ||
661 | PROCEDURE Init* (pLabel, pWord, pCall: EMITPROC; ramSize: INTEGER); |
664 | PROCEDURE Init* (pLabel, pWord, pCall: EMITPROC; ramSize: INTEGER); |
662 | BEGIN |
665 | BEGIN |
663 | Label := pLabel; |
666 | Label := pLabel; |
664 | Word := pWord; |
667 | Word := pWord; |
665 | Call := pCall; |
668 | Call := pCall; |
666 | - | ||
667 | IF ramSize > 2048 THEN |
- | |
668 | ram := 1100H |
- | |
669 | ELSE |
- | |
670 | ram := 200H |
669 | ram := 200H; |
671 | END; |
- | |
672 | trap := ram; |
670 | trap := ram; |
673 | int := trap + 2 |
671 | int := trap + 2 |
674 | END Init; |
672 | END Init; |