DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

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

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦0dd12edce⟧ TextFileVerbose

    Length: 2304 (0x900)
    Types: TextFileVerbose
    Names: »hlvpushpop«

Derivation

└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
    └─⟦72244f0ef⟧ 
        └─⟦this⟧ »hlvpushpop« 

TextFileVerbose

                                 800923 hlv
>sp3
>a1 RC3502 Instruktioner: LPUSH og LPOP.
>nf
instruction lpush(0e0):
(* param:: none;
   stack:: r2a, r1a: addr -> ; *)
>sp1
>in2
>nf
r2a:= memaddr(lu-3);
r1a:= memaddr(lu-7);
r1:= memaddr(r1a);
if nill(r1) or locked(r1) then exception(lpushe1);
r1stack:= memaddr(r1 + stack);
if not nill(r1stack) then exception(lpushe2);
r2:= memaddr(r2a);
if r1 = r2 then exception(lpushe3);
if locked(r2) then exception(lpushe4);
mem(r1a):= nill;
memaddr(r1 + stack):= r2;
memaddr(r2a):= r1;
r1kind:= mem(r1 + kind);
if not nill(r2) and r1kind = headerkind then
begin (* copy buffer description *)
>in2
>nf
r2size:= mem(r2 + size);
r2sadr:= memaddr(r2 + startaddr);
memaddr(r1 + startaddr):= r2sadr;
mem(r1 + size):= r2size
>in-2
>nf
end copy buffer description;
lu:= lu - 8;
ic:= ic + 1;
goto fetch;
>in-2
>np
>nf
instruction lpop(0e1):
(* param:: none;
   stack:: r2a, r1a: addr -> ; *)
>sp1
>in2
>nf
r2a:= memaddr(lu-3);
r1a:= memaddr(lu-7);
r1base:= mem(r1a);
if not nill(r1base) then exception(lpope1);
r2:= mem(r2a);
if nill(r2) then exception(lpope2);
if locked(r2) then exception(lpope3);
memaddr(r1a):= r2;
r2stack:= nill;
r2stack :=: memaddr(r2 + stack);
memaddr(r2a):= r2stack;
r2kind:= mem(r2 + kind);
if r2kind = headerkind then
begin (* clear buffer description *)
>in2
>nf
mem(r2 + size):= 0;
mem(r2 + startaddr):= nill;
>in-2
>nf
end clear buffer description;
lu:= lu - 8;
ic:= ic + 1;
goto fetch;
«eof»