#!/usr/bin/apple1basic 1 REM * The Towers Of Hanoi 2 REM * BASIC 3 REM * Copyright (C) 1998 Amit Singh. All Rights Reserved. 4 REM * http://hanoi.kernelthread.com 5 REM * Converted to Apple I BASIC by Michael Steil (2008) 6 REM --- S is the stack 10 DIM S(256) 15 REM --- b is the stack pointer 20 B = 1 25 REM --- _sfTO 30 T = 2 35 REM --- _sfFR 40 F = 0 45 REM --- _sfUS 50 U = 1 55 REM --- _sfNU 60 N = 3 65 REM --- _sfEN 70 E = 0 75 REM --- remain 80 M = 0 85 REM --- the stack variable 90 PRINT "Number of disks (0 < disks < 10)"; 92 INPUT V 95 REM --- PUSH N (=v here) 100 GOSUB 2000 110 V = 1 120 GOSUB 2000 130 V = 3 140 GOSUB 2000 150 V = 0 160 GOSUB 2000 170 IF B <= 1 THEN GOTO 580 180 GOSUB 3000 190 E = V 200 GOSUB 3000 210 T = V 220 GOSUB 3000 230 F = V 240 GOSUB 3000 250 N = V 260 M = 6 - F - T 270 IF E # 0 THEN GOTO 280 271 GOTO 380 280 GOSUB 4000 290 V = N - 1 300 GOSUB 2000 310 V = M 320 GOSUB 2000 330 V = T 340 GOSUB 2000 350 V = 0 360 GOSUB 2000 370 GOTO 570 380 IF N # 1 THEN GOTO 390 381 GOTO 560 390 V = N 400 GOSUB 2000 410 V = F 420 GOSUB 2000 430 V = T 440 GOSUB 2000 450 V = 1 460 GOSUB 2000 470 V = N - 1 480 GOSUB 2000 490 V = F 500 GOSUB 2000 510 V = M 520 GOSUB 2000 530 V = 0 540 GOSUB 2000 550 GOTO 570 560 GOSUB 4000 570 GOTO 170 580 END 1999 REM --- procedure push(v) 2000 S(B) = V 2010 B = B + 1 2020 RETURN 2999 REM --- procedure pop() 3000 IF B = 0 THEN GOTO 3030 3001 GOTO 3010 3010 B = B - 1 3020 V = S(B) 3030 RETURN 3999 REM --- procedure movedisk(from, to) 4000 PRINT "move ";F;" --> ";T 4020 RETURN