%%HP: T(3)A(R)F(.);
DIR
  LIGHT
    \<< 1 OUTPORT
DROP MS0 DROP 2
WAIT 3 OUTPORT DROP
MS1 DROP 150 DAC
DROP 4 WAIT 255 DAC
DROP 5 OUTPORT DROP
1 WAIT 1 OUTPORT
DROP 130 DAC DROP 2
WAIT 11 OUTPORT
DROP 10 WAIT MSOFF
DROP 8 OUTPORT DROP
    \>>
  HOMRBT
    \<< PILE 1 GET
SERVO1
    \>>
  HANRBT
    \<< HANOI OBJ\-> 1
SWAP
      START MOVE
      NEXT
    \>>
  PILE { 95 125 150
}
  MOVE
    \<< OBJ\-> DROP
SWAP PILE SWAP GET
SERVO1 SWDN SWUPM
PILE SWAP GET
SERVO1M SWDNM SWUP
    \>>
  SWDNM
    \<< "W40EF" 13
CHR + "FE" 13 CHR +
"R0143" 13 CHR +
"W40E7" 13 CHR +
XMIT DROP RDIF DROP
      DO DUP2 XMIT
DROP RDIF ==
      UNTIL
      END DROP2
XMIT DROP RDIF DROP
    \>>
  SWUPM
    \<< "W40EF" 13
CHR + "FD" 13 CHR +
"R0143" 13 CHR +
"W40EB" 13 CHR +
XMIT DROP RDIF DROP
      DO DUP2 XMIT
DROP RDIF ==
      UNTIL
      END DROP2
XMIT DROP RDIF DROP
    \>>
  SWDN
    \<< "W40FF" 13
CHR + "FE" 13 CHR +
"R0143" 13 CHR +
"W40F7" 13 CHR +
XMIT DROP RDIF DROP
      DO DUP2 XMIT
DROP RDIF ==
      UNTIL
      END DROP2
XMIT DROP RDIF DROP
    \>>
  SWUP
    \<< "W40FF" 13
CHR + "FD" 13 CHR +
"R0143" 13 CHR +
"W40FB" 13 CHR +
XMIT DROP RDIF DROP
      DO DUP2 XMIT
DROP RDIF ==
      UNTIL
      END DROP2
XMIT DROP RDIF DROP
    \>>
  SERVO1M
    \<< MEM DROP
"W40ED" 13 CHR +
"W40EF" 13 CHR +
"W40EE" 13 CHR +
"W9041" 13 CHR + 5
ROLL SWAP SLP
    \>>
  SERVO1
    \<< MEM DROP
"W40FD" 13 CHR +
"W40FF" 13 CHR +
"W40FE" 13 CHR +
"W9041" 13 CHR + 5
ROLL SWAP SLP
    \>>
  TDA8444
    \<< "W400" SWAP 8
MOD NIB\->CHR + SWAP
DUP 16 / IP NIB\->CHR
SWAP 16 MOD NIB\->CHR
+ + 13 CHR + XMIT
RDIF
    \>>
  HANOI
    \<< { } 3 2 1 5
ROLL HLIST
    \>>
  HLIST
    \<< \-> A B C N
      \<<
        IF N 1 ==
        THEN C B 2
\->LIST 1 \->LIST SWAP
+
        ELSE B A C
N 1 - HLIST C B 2
\->LIST 1 \->LIST SWAP
+ C B A N 1 - HLIST
        END
      \>>
    \>>
  MSOFF
    \<< "W4EFF" 13
CHR + XMIT DROP
RDIF
    \>>
  MS1
    \<< "W4EFD" 13
CHR + XMIT DROP
RDIF
    \>>
  MS0
    \<< "W4EFE" 13
CHR + XMIT DROP
RDIF
    \>>
  DROPIF
    \<<
      DO BUFLEN
DROP SRECV DROP
      UNTIL 13 CHR
POS 0 >
      END
    \>>
  POINT
    \<< IV EVAL SWAP
EVAL SWAP 2 \->ARRY
\GS+
    \>>
  IV
    \<< 0 ADC 256 /
"I" \->TAG 1 ADC 256
/ 5 * "V" \->TAG
    \>>
  SWEEP
    \<< 100 255
      FOR i i DAC
DROP
      NEXT
    \>>
  DAC
    \<< CLRBUF 256
MOD DUP 16 / IP
NIB\->CHR SWAP 16 MOD
NIB\->CHR + "W9040"
SWAP + 13 CHR +
XMIT DROP RDIF
    \>>
  TS
    \<< 1 10
      START 10
SERVO1 5 WAIT 80
SERVO1 5 WAIT
      NEXT
    \>>
  SLP
    \<< XMIT DROP
RDIF DROP "R0291"
13 CHR +
      DO DUP2 XMIT
DROP "#" RDIF 3 4
SUB + "h" + OBJ\->
B\->R - 4 / IP SIGN
DUP 5 + PICK XMIT
DROP DROPIF
      UNTIL 0 ==
      END 5 DROPN
    \>>
  THERM
    \<< ADC 256 / '
100_\^oC' *
    \>>
  VOLTS
    \<< ADC 256 / '5_
V' *
    \>>
  ADC
    \<< CLRBUF "W904"
SWAP 4 MOD NIB\->CHR
+ 13 CHR + XMIT
DROP RDIF DROP
"R0291" 13 CHR +
XMIT DROP RDIF 3 4
SUB "#" SWAP + "h"
+ OBJ\-> B\->R
    \>>
  INPORT
    \<< CLRBUF
"R0141" 13 CHR +
XMIT DROP RDIF 1 2
SUB "#" SWAP + "h"
+ OBJ\-> B\->R 255 SWAP
-
    \>>
  OUTPORT
    \<< CLRBUF 256
MOD 255 SWAP - DUP
16 / IP NIB\->CHR
SWAP 16 MOD NIB\->CHR
+ "W40" SWAP + 13
CHR + XMIT DROP
RDIF
    \>>
  RDIF
    \<< ""
      DO BUFLEN
DROP SRECV DROP +
      UNTIL DUP 13
CHR POS 0 >
      END
    \>>
  CLRBUF
    \<< BUFLEN DROP
SRECV DROP DROP
    \>>
  NIB\->CHR
    \<<
"0123456789ABCDEF"
SWAP 1 + DUP SUB
    \>>
END
