The bottom part of the program contains the assembly instructions that generate the core algorithm for finding the Hamilton path. After the machine code has been generated the, the main loop (starting at line 30) is started. In this loop, first the length and the height of the rectangle are asked for. Then the Hamilton counting algorith is called for all possible starting points, and the grand total is printed.
The original program contained in-line machine instructions stored in the comment in line 5, for turning the top line of the screen into inverted graphics. The LINKLL0 will cause an error in the listing below.
5REM ?????????????? 10P.$12;?#E1=0;P."info"';LINK((?18)*256+7) 11P.''"DIT PROGRAMMA BEREKENT HET" 12P.'"AANTAL SLANGEN IN EEN RECHTHOEK" 13P.''"(RET)";LINK#FFE3 15A=0DIMA25;$A="P.$7$11;G.(#FFFF&!1)";?16=A;?17=A/256 20GOS.a 30P.$12"INVOER"'';LINKLL0;?E1=#80 100IN."HOOGTE [1,14] "L;IFL>14OR 0>L P.$13$11;G.100 101IN."LENGTE [1,6] "H;IFH>6OR 0>H P.$13$11;G.101 102IF H=1 OR L=1 P. '"triviaal"''"(RET)";LINK#FFE3;G.30 104P.$12 105GOS.s;?#E1=0 110O=(L+1)/2;Q=(H+1)/2;G=0 120F.A=1 TO O;F.B=1 TO Q 125IF H%2=1ANDL%2=1AND(A+B)%2=1 G.140 130GOS.d;G=G+T*(s-(A*2=L+1))*(2-(B*2=H+1)) 140N.;N. 150@=1;P.$30"geval "L","H" totaal "G/2" ";LINKLL0 155LINK#FFE3;G.30 160eP.A,B,(2-(A*2=L+1))*(2-(B*2=H+1))';R. 201s 220F.I=0TOL;F.J=1TOH;F?(I+Z*J)=32;N.;N. 230F.I=0TO L+1;F?I=V;F?(I+H*Z+Z)=V;N. 240F.I=0TO H+1;F?(I*Z)=V;F?(1+L+I*Z)=V;N. 250 ?K=L*H-1;R. 251dI=#83;?I=0;?C=A+B*Z;F?(?C)=V 254@=1;P.$30"geval "L","H" computing "A","B" ";LINKLL0 260IFA=1OR1=B THEN ?#85=#FF;LINK#A6000;G.268 265LINK#A671 268F?(A+B*Z)=32 270P.$8$8$7$8$8$8"ready";LINKLL0;LINK#FFE3 300R. 1010aC=#80;D=#81;E=#82;I=#83 1020P.$12"assembler"';LINK(256*?18+7);P.'''"(ADDRES,ADDRES" 1021P."+580] USED"'",ADDRESS = 0 : NO ASSEMBLING)"'' 1022IN."ADDRES "N 1025IFN=0 DIMLL0;G.2999 1029P.''" wait"$21 1030B=N+#100;S=B+#100;F=S+#100 1032 Z=32;!R=#FFE00120 1050tDIMLL9;LL4=F;F.J=0TO1;P=F+#100 1060[LDX@0;LDA@L 1065:LL0 STA N,X;STA B,X;INX;BNE LL0;LDA C 1070:LL1TAX;LDA F+1,X;CMP F-1,X;BNE LL7 1071 LDA F+Z,X;CMP F-Z,X;BNE LL7 1074 TXA; JMP LL4 1079:LL7 TXA;LDY@0 1080:LL2 CLC;ADC R,Y;TAX;LDA F,X;CMP@V;BEQ LL6 1090LDA@V;STA F,X;STX C;LDX I;TYA;STA S,X; INC I;LDA C 1100LDX I;CPX K;BNE LL1 1105 TAX;INC N,X;bne LL4;INC B,X 1110:LL4 DEC I;LDX I;CPX@#FF; BNE LL5;RTS 1120:LL5 LDY S,X;TAX;LDA@L;STA F,X 1130:LL6 TXA;SEC;SBC R,Y;INY;CPY @4;BNE LL2;BEQ LL4 1150];N.;W=LL7 2050Q=P;F.J=0TO1;P=Q 2060[LDX@0;LDA@L 2065:LL0 STA N,X;STA B,X;INX;BNE LL0;LDA C;JMPLL7 2070:LL1TAX;LDA F+1,X;CMP F-1,X;BNE LL7 2071 LDA F+Z,X;CMP F-Z,X;BNE LL7 2072DEC I;LDA I;STA Y;INC I;JSR W ;JMPLL5 2079:LL7 TXA;LDY@0 2080:LL2 CLC;ADC R,Y;TAX;LDA F,X;CMP@V;BEQ LL6 2090LDA@V;STA F,X;STX C;LDX I;TYA;STA S,X; INC I;LDA C 2100LDX I;CPX K;BNE LL1 2105 TAX;INC N,X;bne LL4;INC B,X 2110:LL4 DEC I;LDX I;CPX@#FF; BNE LL5;RTS 2120:LL5 LDY S,X;TAX;LDA@L;STA F,X 2130:LL6 TXA;SEC;SBC R,Y;INY;CPY @4;BNE LL2;BEQ LL4 2150];N. 2999P.$6;LL0=256*?18+7;R.