DataMuseum.dk

Presents historical artifacts from the history of:

DANOSI

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DANOSI

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦6efb1707b⟧ TextFile

    Length: 11782 (0x2e06)
    Types: TextFile
    Names: »RTPOPE.A86«

Derivation

└─⟦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« 

TextFile

\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