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

⟦6ae44d79e⟧ TextFileVerbose

    Length: 6912 (0x1b00)
    Types: TextFileVerbose
    Names: »lmitxt055«

Derivation

└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
    └─⟦093e2ad1c⟧ 
        └─⟦this⟧ »lmitxt055« 

TextFileVerbose

;;
;; rc3502 sis instructions.
;;
;; file: lmitxt055
;;
;;
                              ;
;;
.instruction lpush            ;
;;
;; param:: none;
;; stack:: r2a, r1a: addr -> ;
;;
   ,,cjs cget4                ; r1a,r2a:= cget4; (*zrdw=r1a,w87=r2a*)
   ,,cjs getshare             ; r1:= getshare(r1a); (*zrd=r1*)
   q:=lpushe1,,               ;
   zdx:=w6:=w2,,cjp b1 xept   ; if nill(r1) then exception(lpushe1);
   w5:=w1+msgstack,,          ; (*zrdx=r1+stack*)
   rdx:=w5,,cjs cread1        ; r1stack:= cread1(r1+stack);
   bus:=w3:=w1,s,ldct xept    ;
   w5:=w7,,cjp b1 lpush10     ; if not nill(r1stack)
   q:=lpushe2,,jrp b1         ; then exception(lpushe2);
lpush10:                      ;
   w6:=w8,,cjs cread21        ; r2:= cread21(r2a);
   w1 xor rd,s,ldct xept      ;
   w2 xor zd,s,cjp not zro lpush20; if r1 = r2 then
   ,,cjp not zro lpush20      ;   exception(lpushe3);
   q:=lpushe3,,jrp not zro    ;
lpush20:                      ;
   w4:=w1,,                   ;
   w1:=w3,,                   ; (*w34=r2*)
   q:=lpushe4,,               ;
   w3:=w2,s,                  ; if locked(r2) then
   w6:=zdw,,cjp b0 xept       ;   exception(lpushe4);
   w5:=rdw,,cjs cwrite1       ; cwrite1(r1a,nill);
   w1:=w4,,                   ;
   w6:=zdx,,                  ;
   w5:=rdx,,cjs cwrite21      ; cwrite21(r1+stack,r2);
   w5:=w5-msgstack,,          ;
   w2:=w8,,                   ;
   w1:=w7,,cjs cwrite65       ; cwrite65(r2a,r1);
   w5:=w5+msgtype,,           ;
   w8:=w5,,cjs cread1         ; r1kind:= cread1(r1+kind);
   bus:=w3,s,                 ;
   bus:=w1,s,cjp b1 cfin4     ; if not nill(r2) and
   w6:=w3,,cjp not zro cfin4  ;    r1kind = headerkind then
   w5:=w4+msgsize,,           ; begin (* copy buf. descr. *)
   ,,cjs cread1               ;   size:= cread1(r2+size);
lpushr1= msgsadr - msgsize    ;
   w5:=w5+lpushr1,,           ;
   w7:=w1,,cjs cread21        ;   addr:= cread21(r2+addr);
lpushr2= msgsadr - msgtype    ;
   w5:=w8+lpushr2,,           ;
   w6:=zdx,,cjs cwrite21      ;   cwrite(r1+addr,addr);
   w5:=w5-lpushr1,,           ;
   w1:=w7,,cjs cwrite1        ;   cwrite1(r1+size,size);
   ,,cjp cfin4                ; goto cfin4;
.p                            ;
;;
.instruction lpop             ;
;;
;; param:: none;
;; stack:: r2a, r1a: addr -> ;
;;
   ,,cjs cget4                ; r1a,r2a:= cget4; (*zrdw=r1a,w87=r2a*)
   w6:=zdw,,                  ;
   w5:=rdw,,cjs cread1        ; r1:= cread1(r1a);
   bus:=w1,s,ldct xept        ; if not nill(r1) then
   w2:=w8,,cjp b1 lpop10      ;   exception(lpope1);
   q:=lpope1,,jrp b1          ;
lpop10:                       ;
   w1:=w7,,cjs cread65        ; r2:= cread65(r2a);
   zd:=w6,s,ldct xept         ; if locked(r2) then
   rd:=w5,,cjp b0 lpop20      ;    exception(lpope3);
   w2:=zdw,,cjp not b1 lpop30 ; if nill(r2) then
   q:=lpope2,,jrp not b1      ;   exception(lpope2);
lpop20:                       ;
   q:=lpope3,,jrp not b0      ;
lpop30:                       ;
   w1:=rdw,,cjs cwrite65      ; cwrite65(r1a,r2);
   w5:=w5+msgstack,,          ;
   bus:=40,w1:=w1-w1,,        ; r2stack:= nill;
   w2:=swp,,cjs cexch21       ; r2stack :=: cexch(r2+stack);
   w6:=w8,,                   ;
   w5:=w7,,cjs cwrite21       ; cwrite21(r2a,r2stack);
   w6:=zd,,                   ;
   w5:=msgtype,,              ;
   w5:=w5+rd,,cjs cread1      ; r2kind:= cread1(r2+kind);
   bus:=40,w1,s,              ; if r2kind=headerkind then
   w3:=swp,,cjp not zro cfin4 ; begin (*clear buf. descr.*)
lpopr1= msgsize - msgtype     ;
   w5:=w5+lpopr1,,            ;
   ,,cjs cwrite1              ;   cwrite1(r2+size,0);
lpopr2= msgsadr - msgsize     ;
   w5:=w5+lpopr2,,            ;
   w1:=w3,,cjs cwrite1        ;   cwrite1(r2+addr,nill);
   ,,cjp cfin4                ; end; goto cfin4;
.p                            ;
.instruction lrese ;; (* reserve reference *)
;;
;; time :: 41x = 8,90us
;; param:: none;
;; stack:: refadr: addr -> refadr: addr;
;;
   ,,cjs readluc              ; readluc;
   w1:=bd--,h w s,cjs readluct; refadr.d:= waitmem-1; readluct;
   w2:=bd,h w s,cjs read12t   ; refadr.b:= waitmem; readnextt(refadr);
   bus:=80,,h ,               ;
   w4:=swp,h ,                ; w4:= lockbit;
   w3:=bd,h w s,cjs rterror   ; ref.b:= waitmem; therror;
   ,,cjp b1 nillerr           ; if nill(ref) then goto nillerror;
   ,,cjp b0 lockerr           ; if lock(ref) then goto lockerror;
   w3:=w3 ior w4,,cjs writenext; writenext(refadr,ref.b or lockbit);
   slu:=zd,,cjp fetch         ; slu:= regset.lu;(*=slu+2*); goto fetch;
                              ;
lockerr:                      ;lockerror:
   q:=llocke,,                ; q:= llockerror;
   ,,cjp xept                 ; goto exception;
.p                            ;
;;
.instruction llock ;; (* lock type on msg *)
;;
;; time :: 97x = 21,2us
;; param:: ldisp: word;
;; stack:: minsize: word; refadr: addr -> refadr: addr;
;;
   ,,cjs readcont             ; ldisp:= readcont;
   w0:=w3,,cjs readluc        ; readluc;
   w4:=bd,h w s,cjs readluct  ; minsize:= waitmem; readluct;
   w1:=bd--,h w s,cjs readluct; refadr.d:= waitmem-1; readluct;
   w2:=bd,h w s,cjs read12t   ; refadr.b:= waitmem; read12t(refadr);
   w6:=bd,h w s,cjs rterror   ; ref.b:= waitmem; therror;
   w1:=w1++,,cjp b1 nillerr   ; if nill(ref) then goto nillerror;
   w1:=w1++,,cjp b0 lockerr   ; if lock(ref) then goto lockerror;
   slu:=slu++,,cjs read12     ; read12(refadr+2);
llocktype= msgtype - 1        ;
   w5:=llocktype,h ,          ; ltype:= msgtype - 1;
   w5:=w5+bd,h w s,cjs readnextt; ref.d:= waitmem; readnextt(ref.type);
   w7:=llocke1,h ,            ;
   q:=bd,h w s,cjs rterror    ; if waitmem = chtype then
   q:=w7,,cjp b0 xept         ;   exception(locktypeerror);
   slu:=slu++,,cjs readnext   ; readnext(ref.size);
   q:=llocke2,h ,             ;
   bd-w4,h w s,cjs rterror    ; if waitmem < minsize then
   w1:=w0--,,cjs not acy xept ;   exception(llocksizeerror);
   w2:=spb,,cjs readnext      ; readnext(ref.saddr.b);
   w3:=bd,h w s,cjs readnextt ; sad.b:= waitmem; readnextt(ref.saddr.d);
   w4:=bd,h w s,cjs terror    ; sad.d:= waitmem; terror;
   w1:=w1+rd0,,               ; l.d:= sf + ldisp;
   slu:=slu++,,cjs writenext  ; writenext(spb,l.d,sad.b);
   w3:=w4,,cjs writenext      ; writenext(spb,l.d+2,sad.d);
   slu:=slu++,,cjp fetch      ; slu:= slu + 4; goto fetch;
;;
;; end of lmitxt055
;;
.p                            ;
«eof»