|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2304 (0x900) Types: TextFileVerbose Names: »hlvpushpop«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »hlvpushpop«
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»