dNode IS 16 LOC Data_Segment GREG @ FIRST OCTA @+8+4*dNode OCTA #10 % Node 1 (bottom) OCTA 0 OCTA #20 % Node 2 OCTA @-dNode-8 OCTA #30 % Node 3 OCTA @-dNode-8 OCTA #40 % Node 4 OCTA @-dNode-8 OCTA #50 % Node 5 (top, FIRST) OCTA @-dNode-8 % Section 2.2.3, Exo.8 % Author Chan Vinh VONG % Draft Version 2012 March 21st % % The structure for one Node is: % % OCTA % +----------------+ % (BA+0) | INFO | % +----------------+ % (BA+8) | LINK | % +----------------+ % % One Node has thus a size of 16 bytes. % % Here's a graphical representation of one cycle of the loop as per % algorithm described in Ex7 p.546 in V1e3: % % Q P % [ ] [ ]->[ ] % % Q R P % [ ] [ ]->[ ] % % R P Q % [ ] [ ]->[ ] % % R Q P % [ ] [P]->[ ] % % R Q P % [ ]<-[R] [ ] % dLINK IS 8 P IS $1 Q IS $2 R IS $3 % rA in the MIX version LOC #100 GREG @ REVERT LDO P,FIRST 1*(u+v) % P XOR Q,Q,Q 1*(1v) % Q set at NULL BZ P,2F 1*(1v) % if the list is empty, jump 1H LDA R,Q n*(u+v) % R <- Q LDA Q,P n*(u+v) % Q <- P LDO P,Q,dLINK n*(u+v) % P <- LINK(Q) STO R,Q,dLINK n*(u+v) % LINK(Q) <- R PBNZ P,1B n*(1v) % Is P not NULL? 2H STO Q,FIRST 1*(u+v) % FIRST <- Q GO $0,$0,0 % Total (4n+2)u + (5n+4)v Main GO $0,REVERT % Breakpoints and monitor memory TRAP 0,Halt,0 % script for interactive mode % % M2000000000000000# % M2000000000000008# % M2000000000000010# % M2000000000000018# % M2000000000000020# % M2000000000000028# % M2000000000000030# % M2000000000000038# % M2000000000000040# % M2000000000000048# % M2000000000000050# % M2000000000000058# %