10 REM > DecodeIC10
   20 :
   30 in%=OPENIN("ic10/bin")
   40 :
   50 PRINT" A7 A0---------+    +--------D7 -    "
   60 PRINT" A6 A1--------+|    |+-------D6 -    "
   70 PRINT" A4 A2-------+||    ||+------D5 BLK2 BLK2 I/O"
   80 PRINT"A10 A3------+|||    |||+-----D4 BLK1 BLK1 I/O"
   90 PRINT" A9 A4-----+||||    ||||+----D3 M0OE MEM0 OUTPUT ENABLE"
  100 PRINT" IO A5----+|||||    |||||+---D2 CKS  M3002 CLOCK SELECT"
  110 PRINT" A3 A6---+||||||    ||||||+--D1 PCS  6522 VIA SELECT"
  120 PRINT" A5 A7--+|||||||    |||||||+-D0 ACS  6551 ACIA SELECT"
  130 PRINT" A8 A8-+||||||||    ||||||||"
  140 PRINT"       |||||||||    ||||||||"
  150 :
  160 FOR loop%=0 TO 511:a%=loop%
  170   a%=(loop%AND1)*64+(loop%AND2)*2+(loop%AND4)*32+(loop%AND8)DIV4+(loop%AND16)DIV16+(loop%AND32)*8+(loop%AND64)DIV4+(loop%AND128)DIV16+(loop%AND256)DIV8
  180   REM      A3              A4            A5             A6              A7                A8             A9              A10             IO
  190   PTR#in%=a%:b%=BGET#in%
  200   a$=FNb0(a%,9):b$=FNb0(b%,8)
  210   PRINT SPC7;a$;" -> ";b$;
  220   addr%=&F800+(loop%AND255)*8
  230   PRINT SPC3;"&";FNh0(addr%,4);" -> ";
  240   b%=NOT b% EOR 4
  250   IF b%AND1  :PRINT"ACIA ";
  260   IF b%AND2  :PRINT"VIA ";
  270   IF b%AND4  :PRINT"RTC ";
  280   IF b%AND8  :PRINT"MEM0 ";
  290   IF b%AND16 :PRINT"BLK1 ";
  300   IF b%AND32 :PRINT"BLK2 ";
  310   IF b%AND64 :PRINT"d6 ";
  320   IF b%AND128:PRINT"d7 ";
  330   PRINT
  340 NEXT loop%
  350 CLOSE#in%
  360 END
  370 :
  380 REM Hexadecimal padded with zeros
  390 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)
  400 :
  410 REM Binary padded with zeros
  420 DEFFNb0(A%,N%):LOCAL A$,B$:IFA%<0:B$="1":A%=A% AND &7FFFFFFF ELSE B$="0"
  430 REPEAT A$=STR$(A% AND 1)+A$:A%=A% DIV 2:UNTILA%=0:=RIGHT$(STRING$(N%,B$)+A$,N%)