|
|
DataMuseum.dkPresents historical artifacts from the history of: DANOSI |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DANOSI Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 11782 (0x2e06)
Types: TextFile
Names: »RTPOPE.A86«
└─⟦289818552⟧ Bits:30010516 DVBS1.SW2114.src.2.7-3 SW2114 3/4 Real Time Pascal 2.7
└─⟦this⟧ »RTPSTD\RTPOPE.A86«
└─⟦783187a02⟧ Bits:30010525 DVBS1.SW2114.src.2.6-3 RTP compiler source SW2104+SW2114 Disk#3 30/1-92 HHA
└─⟦this⟧ »RTPSTD\RTPOPE.A86«
└─⟦ca921ce75⟧ Bits:30010528 DVBS1.SW2114.src.2.6-6 RTP Compiler Source SW2104+SW2114 Disk 3 92.02.03 HEJ HHA
└─⟦this⟧ »RTPSTD\RTPOPE.A86«
└─⟦d5707feda⟧ Bits:30010512 DVBS1.SW2114.src.2.14-3 SW2114 REAL #3/4 TIME PASCAL SOURCE REL 2.14 92.09.01
└─⟦this⟧ »RTPSTD\RTPOPE.A86«
\r
NAME openrtn\r
openrtn SEGMENT PARA\r
ASSUME CS: openrtn, DS: openrtn\r
own DW rtne00\r
DW rtne01\r
DW rtne02\r
DW rtne03\r
DW rtne04\r
DW rtne05\r
DW rtne06\r
DW rtne07\r
DW rtne07\r
DW rtne08\r
DW rtne09\r
DW rtne10\r
DW rtne11\r
DW rtne12\r
DW rtne13\r
DW rtne14\r
DW rtne15\r
DW rtne16\r
DW rtne17\r
DW rtne18\r
DW rtne19\r
DW rtne20\r
DW rtne21\r
DW rtne21\r
DW rtne22\r
DW rtne23\r
DW rtne24\r
DW rtne25\r
DW rtne26\r
DW rtne27\r
DW rtne28\r
DW rtne29\r
DW rtne30\r
DW rtne31\r
DW rtne32\r
DW rtne33\r
DW rtne34\r
DW rtne35\r
DW rtne36\r
DW rtne37\r
DW rtne38\r
DW rtne39\r
DW rtne40\r
DW rtne41\r
DW rtne42\r
DW rtne43\r
DW rtne44\r
DW rtne45\r
DW rtne46\r
DW rtne47\r
DW rtne48\r
DW rtne49\r
DW rtne50\r
DW rtne51\r
DW rtne52\r
DW rtne53\r
DW rtne54\r
DW rtne54\r
DW rtne55\r
DW rtne56\r
DW rtne57\r
DW rtne58\r
DW rtne59\r
DW rtne60\r
DW rtne61\r
DW rtne62\r
DW rtne63\r
DW rtne64\r
DW rtne65\r
DW rtne66\r
DW rtne67\r
DW rtne68\r
\r
\r
$ save nolist\r
$ include(pi3.dcl)\r
$ restore\r
\r
%set(xvarno,0)\r
\r
%*define(beginopen(rtn))(\r
rtne%rtn DW size%rtn\r
x%eval(%xvarno) DW y%eval(%xvarno)\r
)\r
\r
%*define(endopen(rtn))(\r
size%rtn EQU $-rtne%rtn\r
y%eval(%xvarno) EQU $-x%eval(%xvarno)-2\r
%set(xvarno,%xvarno+1)\r
)\r
\r
%*define(extcall(routine))(\r
y%eval(%xvarno) EQU $-x%eval(%xvarno)-2\r
DB 1 ; external call\r
DW %routine\r
%set(xvarno,%xvarno+1)\r
x%eval(%xvarno) DW y%eval(%xvarno)\r
)\r
\r
F_RANGE EQU 52\r
\r
routine_fault EQU 1\r
routine_resume EQU 2\r
routine_allocpool EQU 3\r
\r
CodeMacro PUSH src:Db(-128,127)\r
DB 6AH\r
DB src\r
endM\r
\r
\r
%*define(fault(fcode))(\r
PUSH %fcode\r
%extcall(routine_fault) \r
)\r
\r
%*define(get_buf_seg) local nonfault\r
(POP SI ;ES:SI:=ptr_reference\r
POP ES\r
CMP ES:[SI].LOCKED,0;\r
JGE %NONFAULT\r
%fault(F_NIL)\r
; MOV AL,F_NIL ;reference=NIL\r
; INT 31\r
%NONFAULT:\r
MOV ES,ES:[SI].TOPBUF ;ES:=buffer-frame)\r
\r
\r
%beginopen(00)\r
; 1\r
POP AX ;AX:=abs(topword)\r
CMP AX,0\r
JGE ABS_EXIT\r
NEG AX\r
INTO\r
ABS_EXIT:\r
%endopen(00)\r
%beginopen(01)\r
; 1\r
XOR AX,AX\r
PUSH AX\r
%extcall(routine_allocpool)\r
%endopen(01)\r
%beginopen(02)\r
; 0\r
%GET_BUF_SEG\r
MOV AX,ES:BUFCOUNT\r
%endopen(02)\r
%beginopen(03)\r
; 0\r
%GET_BUF_SEG\r
MOV AX,ES:DATASIZE\r
%endopen(03)\r
%beginopen(04)\r
; 0\r
%get_buf_seg\r
MOV AX,ES: bytecount\r
%endopen(04)\r
%beginopen(05)\r
; 0\r
POP SI\r
POP ES\r
MOV AX,ES:[SI].c_length\r
%endopen(05)\r
%beginopen(06)\r
; 0\r
POP AX\r
XOR AH,AH\r
%endopen(06)\r
%beginopen(07)\r
; 0\r
POP AX\r
%endopen(07)\r
%beginopen(08)\r
; 0\r
%get_buf_seg\r
MOV AL,ES:creditcount\r
%endopen(08)\r
%beginopen(09)\r
; 0\r
POP SI\r
POP ES\r
DEC ES:BYTE ptr[SI]\r
%endopen(09)\r
%beginopen(10)\r
; 0\r
POP SI\r
POP ES\r
DEC ES:WORD ptr[SI]\r
%endopen(10)\r
%beginopen(11)\r
; 0\r
%get_buf_seg\r
MOV AL,ES: eventkind\r
%endopen(11)\r
%beginopen(12)\r
; 0\r
POP BX ; BX:=pool.offset \r
POP AX ; AX:=pool.segment \r
%get_buf_seg ; ES:=buffer frame\r
CMP BX,ES:WORD PTR home ; ZF:=(home.offs=pool.offs)\r
JNE hometest_1 ; if ZF then\r
SUB AX,ES:WORD PTR home+2; ZF:=(home.base=pool.base)\r
JE hometest_2 ; if ZF then AL:=FF else AL:=0\r
hometest_1:\r
MOV AL,0FFH\r
hometest_2:\r
INC AL\r
%endopen(12)\r
%beginopen(13)\r
; 0\r
POP SI\r
POP ES\r
INC ES:BYTE PTR[SI]\r
%endopen(13)\r
%beginopen(14)\r
; 0\r
POP SI\r
POP ES\r
INC ES:WORD PTR[SI]\r
%endopen(14)\r
%beginopen(15)\r
; 0\r
%get_buf_seg\r
MOV AL,ES:index\r
%endopen(15)\r
%beginopen(16)\r
; 0\r
POP SI\r
POP ES\r
SUB AX,AX\r
CMP AX,ES:[SI].s\r
JLE loced_1\r
INC AX\r
loced_1:\r
%endopen(16)\r
%beginopen(17)\r
; 0\r
POP SI\r
POP ES\r
SUB AX,AX\r
CMP ES:WORD PTR [SI]+2,0\r
JNE nil_1\r
INC AX\r
nil_1:\r
%endopen(17)\r
%beginopen(18)\r
; 0\r
POP SI\r
POP ES\r
SUB AX,AX\r
CMP ES:WORD PTR [SI]+2,0FFFFH\r
JNE nil_2\r
INC AX\r
nil_2:\r
%endopen(18)\r
%beginopen(19)\r
; 0\r
POP SI\r
POP ES\r
SUB AX,AX\r
CMP AX,ES:WORD PTR [SI]\r
JNE nil_3\r
INC AL\r
nil_3:\r
%endopen(19)\r
%beginopen(20)\r
; 0\r
%get_buf_seg\r
MOV AX,ES:dataoffset\r
%endopen(20)\r
%beginopen(21)\r
; 0\r
POP SI\r
POP ES\r
SUB AX,AX\r
CMP AX,ES:[SI].s\r
JGE open_1\r
INC AX\r
open_1:\r
%endopen(21)\r
%beginopen(22)\r
; 0\r
POP SI\r
POP ES\r
SUB AX,AX\r
CMP AX,ES:[SI].s\r
JNE passive_1\r
INC AX\r
passive_1:\r
%endopen(22)\r
%beginopen(23)\r
; 0\r
POP BX\r
POP AX\r
CMP AL,BL\r
JNE pred_1\r
%fault(F_RANGE)\r
pred_1:\r
DEC AL\r
%endopen(23)\r
%beginopen(24)\r
; 0\r
POP BX\r
POP AX\r
CMP AX,BX\r
JNE pred_2\r
%fault(F_RANGE)\r
pred_2:\r
DEC AX\r
%endopen(24)\r
%beginopen(25)\r
; 0\r
%get_buf_seg\r
MOV AL,ES:reason\r
%endopen(25)\r
%beginopen(26)\r
; 0\r
%get_buf_seg\r
MOV ES:eventkind,not_event\r
%endopen(26)\r
%beginopen(27)\r
; 0\r
pop BX\r
%get_buf_seg\r
MOV ES:bytecount,BX\r
%endopen(27)\r
%beginopen(28)\r
; 0\r
pop BX\r
%get_buf_seg\r
cmp BX,ES:datasize\r
jle setoff_1\r
%fault(F_RANGE)\r
; int 29 \r
setoff_1:\r
MOV ES:dataoffset,BX\r
%endopen(28)\r
%beginopen(29)\r
; 0\r
pop BX\r
%get_buf_seg\r
cmp BX,ES:datasize\r
jle settop_1\r
%fault(F_RANGE)\r
; int 29 \r
settop_1:\r
MOV ES:top,BX\r
%endopen(29)\r
%beginopen(30)\r
; 0\r
pop BX\r
%get_buf_seg\r
MOV ES:u1,BL\r
%endopen(30)\r
%beginopen(31)\r
; 0\r
pop BX\r
%get_buf_seg\r
MOV ES:u2,BL\r
%endopen(31)\r
%beginopen(32)\r
; 0\r
pop BX\r
%get_buf_seg\r
MOV ES:u3,BL\r
%endopen(32)\r
%beginopen(33)\r
; 0\r
pop BX\r
%get_buf_seg\r
MOV ES:u4,BL\r
%endopen(33)\r
%beginopen(34)\r
; 0\r
%get_buf_seg\r
MOV AX,ES:depth\r
%endopen(34)\r
%beginopen(35)\r
; 0\r
pop ax\r
cli \r
test DS: byte ptr own.p_state, 1\r
JNZ start_1\r
mov DS: byte ptr own.priority, al\r
start_1:\r
sti\r
%extcall(routine_resume)\r
%endopen(35)\r
%beginopen(36)\r
; 0\r
POP BX\r
POP AX\r
CMP AL,BL\r
JNE SUCC_1\r
%fault(F_RANGE)\r
succ_1:\r
INC AL\r
%endopen(36)\r
%beginopen(37)\r
; 0\r
POP BX\r
POP AX\r
CMP AX,BX\r
JNE SUCC_2\r
%fault(F_RANGE)\r
succ_2:\r
INC AX\r
%endopen(37)\r
%beginopen(38)\r
; 0\r
%get_buf_seg\r
MOV AX,ES:top\r
%endopen(38)\r
%beginopen(39)\r
; 0\r
%get_buf_seg\r
MOV AL,ES:u1\r
%endopen(39)\r
%beginopen(40)\r
; 0\r
%get_buf_seg\r
MOV AL,ES:u2\r
%endopen(40)\r
%beginopen(41)\r
; 0\r
%get_buf_seg\r
MOV AL,ES:u3\r
%endopen(41)\r
%beginopen(42)\r
; 0\r
%get_buf_seg\r
MOV AL,ES:u4\r
%endopen(42)\r
%beginopen(43)\r
; 1\r
POP AX\r
XCHG AL,AH\r
%endopen(43)\r
%beginopen(44)\r
; 4\r
INT 3\r
%endopen(44)\r
%beginopen(45)\r
; 0\r
%get_buf_seg\r
MOV AX,ES:datapart\r
%endopen(45)\r
%beginopen(46)\r
; 0\r
CLI\r
%endopen(46)\r
%beginopen(47)\r
; 0\r
STI\r
%endopen(47)\r
%beginopen(48)\r
; 0\r
%GET_BUF_SEG\r
MOV AX,ES: WORD PTR HOME\r
MOV BX,ES: WORD PTR HOME+2\r
%GET_BUF_SEG\r
SUB AX,ES: WORD PTR HOME\r
JNE EQUALHOME_1\r
SUB BX,ES: WORD PTR HOME+2\r
JE EQUALHOME_2\r
EQUALHOME_1:\r
MOV AL,0FFH\r
EQUALHOME_2:\r
INC AL\r
%endopen(48)\r
%beginopen(49)\r
; 0\r
%get_buf_seg\r
MOV AX,ES:dataoffset\r
%endopen(49)\r
%beginopen(50)\r
; 0\r
pop dx\r
in al,dx\r
%endopen(50)\r
%beginopen(51)\r
; 0\r
pop dx\r
in ax,dx\r
%endopen(51)\r
%beginopen(52)\r
; 0\r
%get_buf_seg\r
MOV AX,ES:top\r
DEC AX\r
%endopen(52)\r
%beginopen(53)\r
; 0\r
%get_buf_seg\r
MOV AX,ES: bytecount\r
ADD AX,ES: dataoffset\r
%endopen(53)\r
%beginopen(54)\r
; 0\r
POP SI\r
POP ES\r
MOV AX,ES:[SI].s\r
%endopen(54)\r
%beginopen(55)\r
; 0\r
pop ax\r
pop dx\r
out dx,al\r
%endopen(55)\r
%beginopen(56)\r
; 0\r
pop ax\r
pop dx\r
out dx,ax\r
%endopen(56)\r
%beginopen(57)\r
; 0\r
mov ax, word ptr own.stackbound\r
%endopen(57)\r
%beginopen(58)\r
; 0\r
mov ax, word ptr own.stacksize\r
%endopen(58)\r
%beginopen(59)\r
; 0\r
mov al, DS: byte ptr own.priority\r
%endopen(59)\r
%beginopen(60)\r
; 0\r
pop di\r
pop es\r
mov ax, es: [di].procvar\r
cmp ax,0\r
jnz priority_1\r
%fault(F_NIL)\r
; mov al, f_nil\r
; int 31\r
priority_1:\r
mov es, ax\r
mov al, es: priority\r
%endopen(60)\r
%beginopen(61)\r
; \r
POP BX\r
POP ES\r
%endopen(61)\r
%beginopen(62)\r
; 0\r
mov ax, word ptr own.timer\r
%endopen(62)\r
%beginopen(63)\r
; 0\r
pop BX\r
%get_buf_seg\r
cmp BX,ES:datasize\r
jle setfir_1\r
%fault(F_RANGE)\r
; int 29 \r
setfir_1:\r
MOV CX,ES:dataoffset\r
SUB CX,BX\r
MOV ES:dataoffset,BX\r
ADD ES:bytecount,CX\r
CMP ES:depth,1\r
JBE setfir_2\r
MOV AX,ES:bufcount\r
MOV ES,ES:stack\r
CMP ES:bufcount,AX\r
JZ setfir_1\r
setfir_2:\r
%endopen(63)\r
%beginopen(64)\r
; 0\r
pop BX\r
inc BX\r
%get_buf_seg\r
cmp BX,ES:datasize\r
jle setlas_1\r
%fault(F_RANGE)\r
; int 29 \r
setlas_1:\r
MOV ES:top,BX\r
CMP ES:depth,1\r
JBE setlas_2\r
MOV AX,ES:bufcount\r
MOV ES,ES:stack\r
CMP ES:bufcount,AX\r
JZ setlas_1\r
setlas_2:\r
%endopen(64)\r
%beginopen(65)\r
; 0\r
pop BX\r
%get_buf_seg\r
setnex_1: \r
MOV CX,BX\r
SUB CX,ES:dataoffset\r
MOV ES:bytecount,CX\r
CMP ES:depth,1\r
JBE setnex_2\r
MOV AX,ES:bufcount\r
MOV ES,ES:stack\r
CMP ES:bufcount,AX\r
JZ setnex_1\r
setnex_2:\r
%endopen(65)\r
%beginopen(66)\r
; 0\r
pop ax\r
cli \r
test DS: byte ptr own.p_state, 1\r
JNZ set_priority_1\r
mov DS: byte ptr own.priority, al\r
set_priority_1:\r
sti\r
%endopen(66)\r
%beginopen(67)\r
; 0\r
pop di\r
pop es\r
mov ax, es: [di].procvar\r
cmp ax,0\r
jnz stackbound_1\r
%fault(F_NIL)\r
; mov al, f_nil\r
; int 31\r
stackbound_1:\r
mov es, ax\r
mov al, es: priority\r
%endopen(67)\r
%beginopen(68)\r
; 0\r
pop di\r
pop es\r
mov ax, es: [di].procvar\r
cmp ax,0\r
jnz stacksize_1\r
%fault(F_NIL)\r
; mov al, f_nil\r
; int 31\r
stacksize_1:\r
mov es, ax\r
mov ax, es: stacksize\r
%endopen(68)\r
openrtn ends\r
end\r