// Sokoban (text mode) for Apple 1 - v4, stock 4K compatible
// 3140 bytes (uses apple1_sok_4k.cfg, 3200 B budget)
// Targets REAL Apple 1 stock 4K DRAM — no expansion cards needed.
// 45 levels: 3 teaching + Microban I #1..#42 by D.W. Skinner (2000)
// Port by VERHILLE Arnaud, 2026
// Keyboard: W/A/S/D (QWERTY) or Z/Q/S/D (AZERTY)
// U=undo last move  R=reset level  N=next level
// Layout: LEVEL_BUF $0020 (ZP) / STATE_GRID $0F00 / Code $0280-$0EC3
// Type 280R in Woz Monitor to run

0280: A9 88 A2 06 20 E9 05 A9 BA A2 06 20 E9 05 20 DE
0290: 05 C9 31 F0 07 C9 32 F0 0E 4C 8E 02 A9 57 85 15
02A0: A9 41 85 16 4C AF 02 A9 5A 85 15 A9 51 85 16 A9
02B0: 00 85 06 20 4B 03 A9 00 85 19 85 1A 85 1B 20 0B
02C0: 05 20 DE 05 C5 15 F0 24 C9 53 F0 2B C5 16 F0 32
02D0: C9 44 F0 39 C9 52 F0 40 C9 4E F0 3F C9 55 F0 03
02E0: 4C C1 02 20 9B 04 20 0B 05 4C C1 02 A9 FF 85 11
02F0: A9 00 85 12 4C 1E 03 A9 01 85 11 A9 00 85 12 4C
0300: 1E 03 A9 00 85 11 A9 FF 85 12 4C 1E 03 A9 00 85
0310: 11 A9 01 85 12 4C 1E 03 4C B3 02 4C 39 03 20 B8
0320: 03 C9 00 F0 23 20 0B 05 20 C6 05 C9 00 F0 19 A9
0330: DE A2 06 20 E9 05 20 DE 05 E6 06 A5 06 C9 2D 90
0340: 04 A9 00 85 06 4C B3 02 4C C1 02 20 FC 05 A9 0C
0350: 38 E5 0A 4A 85 0B A9 10 38 E5 09 4A 85 0C A0 00
0360: 98 99 00 0F C8 C0 C0 D0 F8 A9 00 85 00 85 02 A0
0370: 00 A6 02 B5 20 20 8A 05 48 C9 05 F0 04 C9 06 D0
0380: 0D 98 18 65 0C 85 08 A5 00 18 65 0B 85 07 A5 00
0390: 18 65 0B AA BD 75 06 85 01 98 18 65 0C 18 65 01
03A0: AA 68 9D 00 0F E6 02 C8 C4 09 90 C5 E6 00 A5 00
03B0: C5 0A B0 03 4C 6F 03 60 A5 07 18 65 11 85 0D A5
03C0: 08 18 65 12 85 0E A5 0D C9 0C B0 25 A5 0E C9 10
03D0: B0 1F A6 0D BD 75 06 18 65 0E AA BD 00 0F C9 01
03E0: F0 0F C9 03 F0 0E C9 04 F0 0A A9 00 85 1A 4C 3A
03F0: 04 4C 98 04 A5 0D 18 65 11 85 0F A5 0E 18 65 12
0400: 85 10 A5 0F C9 0C B0 E9 A5 10 C9 10 B0 E3 A6 0F
0410: BD 75 06 18 65 10 AA BD 00 0F C9 00 F0 07 C9 02
0420: F0 0F 4C 98 04 A9 03 9D 00 0F A9 01 85 1A 4C 3A
0430: 04 A9 04 9D 00 0F A9 01 85 1A A6 07 BD 75 06 18
0440: 65 08 AA BD 00 0F 20 B7 05 9D 00 0F A6 0D BD 75
0450: 06 18 65 0E AA BD 00 0F C9 03 F0 07 C9 04 F0 0B
0460: 4C 70 04 A9 00 9D 00 0F 4C 70 04 A9 02 9D 00 0F
0470: BD 00 0F 20 BC 05 9D 00 0F A5 07 85 17 A5 08 85
0480: 18 A9 01 85 19 A5 0D 85 07 A5 0E 85 08 E6 1B D0
0490: 04 A9 FF 85 1B A9 01 60 A9 00 60 A5 19 F0 6B A5
04A0: 1A F0 22 A5 07 0A 38 E5 17 85 0F A5 08 0A 38 E5
04B0: 18 85 10 A6 0F BD 75 06 18 65 10 AA BD 00 0F 20
04C0: B7 05 9D 00 0F A6 07 BD 75 06 18 65 08 AA BD 00
04D0: 0F 20 B7 05 9D 00 0F A5 1A F0 09 BD 00 0F 20 C1
04E0: 05 9D 00 0F A6 17 BD 75 06 18 65 18 AA BD 00 0F
04F0: 20 BC 05 9D 00 0F A5 17 85 07 A5 18 85 08 A5 1B
0500: F0 02 C6 1B A9 00 85 19 85 1A 60 A9 8D 20 EF FF
0510: A9 00 85 13 A9 00 85 14 A6 13 BD 75 06 18 65 14
0520: AA BD 00 0F A8 B9 81 06 09 80 20 EF FF E6 14 A5
0530: 14 C9 10 90 E3 A9 8D 20 EF FF E6 13 A5 13 C9 0C
0540: 90 D2 A9 D0 A2 06 20 E9 05 A5 1B 20 56 05 A9 D6
0550: A2 06 20 E9 05 60 A2 00 C9 64 90 06 E9 64 E8 4C
0560: 58 05 48 8A 09 30 09 80 20 EF FF 68 A2 00 C9 0A
0570: 90 06 E9 0A E8 4C 6E 05 48 8A 09 30 09 80 20 EF
0580: FF 68 09 30 09 80 20 EF FF 60 C9 23 F0 17 C9 2E
0590: F0 16 C9 24 F0 15 C9 2A F0 14 C9 40 F0 13 C9 2B
05A0: F0 12 A9 00 60 A9 01 60 A9 02 60 A9 03 60 A9 04
05B0: 60 A9 05 60 A9 06 60 A8 B9 60 06 60 A8 B9 67 06
05C0: 60 A8 B9 6E 06 60 A0 00 B9 00 0F C9 02 F0 0C C9
05D0: 06 F0 08 C8 C0 C0 D0 F0 A9 01 60 A9 00 60 AD 11
05E0: D0 10 FB AD 10 D0 29 7F 60 85 04 86 05 A0 00 B1
05F0: 04 F0 08 09 80 20 EF FF C8 D0 F4 60 A6 06 BD 6A
0600: 0E 85 02 BD 97 0E 85 03 A0 00 B1 02 85 09 C8 B1
0610: 02 85 0A C8 B1 02 85 0B C8 B1 02 85 0C 18 A5 02
0620: 69 04 85 02 A5 03 69 00 85 03 A9 00 85 00 A4 0A
0630: F0 0A 18 A5 00 65 09 85 00 88 D0 F6 A0 00 A2 00
0640: B1 02 C8 C9 80 90 11 29 7F 85 01 B1 02 C8 95 20
0650: E8 C6 01 D0 F9 4C 5B 06 95 20 E8 E4 00 90 E1 60
0660: 00 01 02 00 02 00 02 05 00 06 00 00 00 00 03 00
0670: 04 00 00 00 00 00 10 20 30 40 50 60 70 80 90 A0
0680: B0 20 23 2E 24 2A 40 2B 0D 20 53 4F 4B 4F 42 41
0690: 4E 20 34 4B 20 34 35 4C 56 20 4D 49 43 52 4F 42
06A0: 41 4E 0D 20 56 2E 41 52 4E 41 55 44 20 32 36 20
06B0: 20 53 4B 49 4E 4E 45 52 0D 00 0D 20 31 3D 51 57
06C0: 45 52 54 59 20 20 32 3D 41 5A 45 52 54 59 0D 00
06D0: 0D 20 4D 56 3A 00 20 55 20 52 20 4E 0D 00 0D 20
06E0: 57 49 4E 21 20 4B 45 59 0D 00 05 03 04 07 86 23
06F0: 2E 24 40 86 23 07 06 03 06 88 23 2E 84 20 82 23
0700: 82 20 24 82 20 82 23 85 20 82 23 82 20 40 82 20
0710: 88 23 09 07 02 05 8A 23 2E 85 20 2E 82 23 87 20
0720: 82 23 20 24 83 20 24 20 82 23 87 20 82 23 83 20
0730: 40 83 20 8A 23 06 07 02 07 84 23 82 20 23 20 2E
0740: 23 82 20 23 82 20 84 23 2A 40 82 20 82 23 82 20
0750: 24 20 82 23 82 20 87 23 82 20 06 07 02 07 87 23
0760: 84 20 82 23 20 23 40 20 82 23 20 24 2A 20 82 23
0770: 20 2E 2A 20 82 23 84 20 87 23 09 06 03 05 82 20
0780: 84 23 83 20 83 23 82 20 85 23 85 20 24 20 82 23
0790: 20 23 82 20 23 24 20 82 23 20 2E 20 2E 23 40 20
07A0: 8A 23 08 06 03 06 89 23 86 20 82 23 20 2E 82 2A
07B0: 24 40 82 23 86 20 86 23 82 20 23 84 20 84 23 08
07C0: 07 02 06 20 87 23 20 23 85 20 23 20 23 20 2E 24
07D0: 2E 20 83 23 20 24 40 24 20 82 23 82 20 2E 24 2E
07E0: 20 82 23 86 20 89 23 0C 06 03 04 86 23 20 86 23
07F0: 84 20 83 23 83 20 82 23 20 82 24 85 20 23 40 82
0800: 23 20 24 20 23 83 2E 83 20 82 23 83 20 8D 23 87
0810: 20 07 08 02 06 88 23 85 20 82 23 20 2E 24 2E 20
0820: 82 23 20 24 2E 24 20 82 23 20 2E 24 2E 20 82 23
0830: 20 24 2E 24 20 82 23 82 20 40 82 20 88 23 08 0C
0840: 00 06 82 20 86 23 82 20 23 20 82 2E 40 23 82 20
0850: 23 20 82 24 20 23 82 20 82 23 20 83 23 83 20 23
0860: 20 23 85 20 23 20 23 82 20 84 23 20 23 82 20 23
0870: 84 20 82 23 20 23 20 23 83 20 23 20 23 83 20 23
0880: 20 23 20 83 23 83 20 23 83 20 85 23 20 06 07 02
0890: 07 85 23 20 23 2E 82 20 83 23 40 82 24 20 83 23
08A0: 83 20 23 20 82 23 82 20 23 82 20 82 23 2E 23 83
08B0: 20 83 23 0B 08 02 04 86 20 85 23 86 20 23 2E 82
08C0: 20 23 86 20 23 2E 23 20 88 23 2E 23 20 82 23 20
08D0: 40 20 24 20 24 20 24 20 82 23 20 23 20 23 20 23
08E0: 20 84 23 87 20 23 82 20 89 23 82 20 09 08 02 05
08F0: 82 20 86 23 83 20 23 84 20 23 83 20 23 20 82 23
0900: 40 85 23 20 23 20 24 20 82 23 20 82 2E 23 20 24
0910: 20 82 23 87 20 82 23 82 20 8A 23 85 20 09 08 02
0920: 05 85 23 84 20 23 83 20 82 23 83 20 23 20 24 82
0930: 20 23 83 20 82 23 20 24 20 84 23 20 83 23 40 2E
0940: 82 20 23 82 20 23 82 20 2E 23 20 23 82 20 23 85
0950: 20 23 82 20 87 23 07 09 01 06 84 23 83 20 23 2E
0960: 20 82 23 82 20 23 2E 40 20 23 82 20 23 2E 20 24
0970: 23 82 20 82 23 24 20 83 23 20 23 20 24 82 20 23
0980: 20 23 84 20 23 20 23 82 20 83 23 20 84 23 82 20
0990: 07 06 03 06 88 23 85 20 82 23 20 23 20 23 20 82
09A0: 23 2E 20 24 2A 40 82 23 83 20 88 23 82 20 09 07
09B0: 02 05 85 20 83 23 20 86 23 40 83 23 84 20 2E 2A
09C0: 20 82 23 83 20 23 83 20 86 23 24 23 20 23 84 20
09D0: 23 83 20 23 84 20 85 23 0A 08 02 05 20 84 23 86
09E0: 20 23 82 20 84 23 83 20 23 85 20 82 23 20 82 23
09F0: 20 82 23 83 20 23 20 23 2E 20 2E 23 20 40 24 83
0A00: 23 83 20 23 20 82 24 20 82 23 82 20 2E 23 84 20
0A10: 8B 23 06 07 02 07 85 23 20 23 20 40 20 23 20 23
0A20: 83 2E 23 20 23 83 24 83 23 84 20 82 23 84 20 87
0A30: 23 07 09 01 06 88 23 85 20 82 23 2E 20 2E 82 20
0A40: 82 23 20 82 23 20 83 23 82 20 24 20 23 20 83 23
0A50: 24 20 23 83 20 23 40 20 23 83 20 23 82 20 23 83
0A60: 20 84 23 20 08 08 02 06 89 23 83 20 82 2E 20 82
0A70: 23 82 20 40 82 24 20 86 23 20 82 23 83 20 23 82
0A80: 20 23 84 20 23 82 20 23 84 20 23 82 20 23 84 20
0A90: 84 23 20 09 08 02 05 87 23 82 20 23 85 20 84 23
0AA0: 82 20 40 82 24 82 2E 85 23 20 82 23 20 23 82 20
0AB0: 23 85 20 23 82 20 23 82 20 84 23 82 20 23 82 20
0AC0: 23 85 20 84 23 83 20 07 06 03 06 84 23 83 20 23
0AD0: 82 20 85 23 20 2E 20 2E 20 82 23 20 82 24 23 40
0AE0: 83 23 84 20 23 20 86 23 07 09 01 06 85 23 82 20
0AF0: 23 83 20 84 23 2E 20 2E 82 20 82 23 83 20 23 20
0B00: 83 23 20 23 82 20 23 20 23 40 82 24 20 23 20 23
0B10: 84 20 23 20 23 82 20 83 23 20 84 23 82 20 07 07
0B20: 02 06 88 23 82 20 2A 82 20 82 23 85 20 83 23 20
0B30: 23 20 82 23 20 23 24 40 2E 23 82 20 23 83 20 23
0B40: 82 20 85 23 20 07 07 02 06 23 20 85 23 82 20 23
0B50: 83 20 84 23 82 24 40 82 23 83 20 84 23 85 20 82
0B60: 23 20 2E 20 2E 20 88 23 07 07 02 06 20 84 23 83
0B70: 20 23 82 20 83 23 20 23 20 82 24 20 83 23 83 2E
0B80: 20 82 23 82 20 40 24 20 82 23 83 20 88 23 82 20
0B90: 06 08 02 07 20 85 23 20 23 20 40 20 23 20 23 83
0BA0: 20 84 23 24 20 82 23 20 83 2E 82 23 20 82 24 20
0BB0: 84 23 82 20 23 82 20 84 23 07 07 02 06 86 23 20
0BC0: 23 83 20 2E 23 20 23 20 82 23 20 83 23 82 20 82
0BD0: 24 40 82 23 20 23 83 20 82 23 2E 82 20 88 23 82
0BE0: 20 07 07 02 06 85 23 82 20 23 83 20 23 82 20 23
0BF0: 20 40 20 23 82 20 23 20 82 24 85 23 2E 20 2E 20
0C00: 23 20 23 84 20 23 20 86 23 0B 09 01 04 85 20 85
0C10: 23 86 20 23 83 20 82 23 85 20 23 84 20 23 20 86
0C20: 23 83 20 83 23 85 20 23 2E 20 82 23 20 24 20 24
0C30: 20 40 82 20 83 23 20 86 23 2E 23 20 23 88 20 23
0C40: 20 8A 23 20 06 07 02 07 84 23 82 20 23 82 20 84
0C50: 23 20 82 24 20 82 23 83 2E 20 82 23 20 40 24 20
0C60: 82 23 83 20 87 23 20 07 07 02 06 82 20 84 23 82
0C70: 20 82 23 82 20 23 20 82 23 40 24 2E 83 23 20 82
0C80: 24 82 20 82 23 20 2E 20 2E 20 84 23 83 20 23 82
0C90: 20 85 23 07 07 02 06 20 84 23 82 20 82 23 82 20
0CA0: 84 23 85 20 82 23 2E 82 2A 24 40 82 23 83 20 85
0CB0: 23 82 20 23 83 20 84 23 82 20 07 07 02 06 88 23
0CC0: 2E 20 23 82 20 82 23 82 20 24 82 20 82 23 2E 20
0CD0: 24 23 40 82 23 82 20 24 82 20 82 23 2E 20 23 82
0CE0: 20 88 23 09 06 03 05 82 20 84 23 83 20 83 23 82
0CF0: 20 85 23 87 20 82 23 40 24 83 2A 2E 20 82 23 87
0D00: 20 8A 23 06 0A 01 07 20 84 23 20 82 23 82 20 23
0D10: 20 23 2E 20 24 23 20 23 2E 24 20 23 20 23 2E 24
0D20: 20 23 20 23 2E 24 20 23 20 23 2E 20 24 83 23 83
0D30: 20 40 83 23 83 20 23 20 85 23 0F 05 03 02 84 23
0D40: 8B 20 23 82 20 8D 23 20 24 20 24 20 24 20 24 20
0D50: 24 20 40 20 82 23 20 85 2E 87 20 90 23 09 08 02
0D60: 05 86 20 88 23 20 23 2E 82 23 83 20 83 23 2E 82
0D70: 23 83 20 24 20 23 2E 82 23 20 24 82 20 24 82 20
0D80: 86 23 40 23 20 23 84 20 23 83 20 23 84 20 85 23
0D90: 0A 07 02 05 8B 23 88 20 82 23 20 82 23 2E 83 23
0DA0: 20 82 23 20 23 20 82 24 20 2E 20 82 23 20 2E 20
0DB0: 40 24 82 23 20 86 23 84 20 23 84 20 86 23 0A 09
0DC0: 01 05 85 23 85 20 23 83 20 84 23 82 20 23 20 23
0DD0: 20 23 20 2E 23 82 20 23 84 20 24 20 86 23 20 23
0DE0: 24 2E 82 20 82 23 83 20 23 40 83 20 82 23 20 23
0DF0: 20 87 23 83 20 23 85 20 85 23 85 20 07 06 03 06
0E00: 20 85 23 82 20 23 83 20 23 20 82 23 83 20 83 23
0E10: 20 83 24 20 82 23 20 2E 2B 2E 20 88 23 08 06 03
0E20: 06 87 23 20 23 85 20 23 20 23 40 83 24 20 83 23
0E30: 82 20 23 83 2E 83 23 84 20 82 23 20 86 23 20 07
0E40: 08 02 06 83 20 84 23 83 20 23 82 20 23 83 20 23
0E50: 40 20 85 23 24 2E 82 23 83 20 24 2E 82 23 20 23
0E60: 20 24 2E 82 23 84 20 88 23 20 EA F5 12 35 5A 7A
0E70: A2 BF E7 11 3E 8D B3 EC 1D 56 90 AE D8 12 31 64
0E80: 93 C7 E8 1E 45 68 90 B9 E1 09 44 67 93 BA E3 03
0E90: 3A 5D 90 BE FC 1D 3F 06 06 07 07 07 07 07 07 07
0EA0: 08 08 08 08 08 09 09 09 09 09 0A 0A 0A 0A 0A 0A
0EB0: 0B 0B 0B 0B 0B 0B 0C 0C 0C 0C 0C 0C 0D 0D 0D 0D
0EC0: 0D 0D 0E 0E
