initial import
This commit is contained in:
parent
f65d79efe2
commit
55ab780ddb
|
@ -0,0 +1,2 @@
|
||||||
|
.DS_Store
|
||||||
|
/build/
|
|
@ -0,0 +1,37 @@
|
||||||
|
#
|
||||||
|
# Million Perfect Letters makefile
|
||||||
|
# assembles source code, optionally builds a disk image and mounts it
|
||||||
|
#
|
||||||
|
# original by Quinn Dunki on 2014-08-15
|
||||||
|
# One Girl, One Laptop Productions
|
||||||
|
# http://www.quinndunki.com/blondihacks
|
||||||
|
#
|
||||||
|
# adapted by 4am on 2020-04-16
|
||||||
|
#
|
||||||
|
|
||||||
|
# third-party tools required to build
|
||||||
|
|
||||||
|
# https://sourceforge.net/projects/acme-crossass/
|
||||||
|
ACME=acme
|
||||||
|
|
||||||
|
# https://www.brutaldeluxe.fr/products/crossdevtools/cadius/
|
||||||
|
# https://github.com/sicklittlemonkey/cadius
|
||||||
|
# version 1.4.0 or later
|
||||||
|
CADIUS=cadius
|
||||||
|
|
||||||
|
BUILDDISK=build/million
|
||||||
|
|
||||||
|
asm:
|
||||||
|
mkdir -p build
|
||||||
|
$(ACME) -r build/million.lst src/million.a 2>build/log
|
||||||
|
cp res/work.po "$(BUILDDISK)".po >build/log
|
||||||
|
cp res/_FileInformation.txt build/ >build/log
|
||||||
|
$(CADIUS) ADDFILE "${BUILDDISK}".po "/MILLION/" "build/MILLION.SYSTEM" >build/log
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf build/
|
||||||
|
|
||||||
|
mount:
|
||||||
|
open "$(BUILDDISK)".po
|
||||||
|
|
||||||
|
all: clean asm mount
|
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
def myhex(bitstring):
|
||||||
|
return hex(int(bitstring, 2))[2:].rjust(2, "0").upper()
|
||||||
|
|
||||||
|
leftdata = [ [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [] ]
|
||||||
|
rightdata = [ [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [] ]
|
||||||
|
with open("font.txt", "r") as f:
|
||||||
|
for c in 'ABCDEFGHJIKLMNOPQRSTUVWXYZ':
|
||||||
|
#print(c)
|
||||||
|
for row in range(16):
|
||||||
|
left = f.read(7)
|
||||||
|
right = f.read(7)
|
||||||
|
f.readline()
|
||||||
|
left = "0b1" + left[::-1]
|
||||||
|
right = "0b1" + right[::-1]
|
||||||
|
#print(myhex(left), myhex(right))
|
||||||
|
leftdata[row].append(myhex(left))
|
||||||
|
rightdata[row].append(myhex(right))
|
||||||
|
print("; This file is automatically generated")
|
||||||
|
for row in range(16):
|
||||||
|
print("LeftFontRow%s" % row)
|
||||||
|
for c, i in zip(leftdata[row], range(len(leftdata[row]))):
|
||||||
|
print(" !byte $%s ; %s" % (c, chr(i+65)))
|
||||||
|
for row in range(16):
|
||||||
|
print("RightFontRow%s" % row)
|
||||||
|
for c, i in zip(rightdata[row], range(len(rightdata[row]))):
|
||||||
|
print(" !byte $%s ; %s" % (c, chr(i+65)))
|
|
@ -0,0 +1,416 @@
|
||||||
|
00000000000000
|
||||||
|
00111111100000
|
||||||
|
00111111110000
|
||||||
|
00111111110000
|
||||||
|
00001111110000
|
||||||
|
00001110111000
|
||||||
|
00001100111000
|
||||||
|
00011100111000
|
||||||
|
00011111111100
|
||||||
|
00011111111100
|
||||||
|
00111111111100
|
||||||
|
00111000001110
|
||||||
|
11111100111111
|
||||||
|
11111100111111
|
||||||
|
11111100111111
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111111110000
|
||||||
|
01111111111000
|
||||||
|
01111111111100
|
||||||
|
00011100011100
|
||||||
|
00011100011100
|
||||||
|
00011111111000
|
||||||
|
00011111111000
|
||||||
|
00011111111100
|
||||||
|
00011100001110
|
||||||
|
00011100001110
|
||||||
|
00011100001110
|
||||||
|
01111111111110
|
||||||
|
01111111111100
|
||||||
|
01111111111000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
00000111101110
|
||||||
|
00011111111110
|
||||||
|
00111111111110
|
||||||
|
00111100011110
|
||||||
|
01111000001110
|
||||||
|
01110000001110
|
||||||
|
01110000000000
|
||||||
|
01110000000000
|
||||||
|
01110000000000
|
||||||
|
01111000000000
|
||||||
|
00111100001110
|
||||||
|
00111111111110
|
||||||
|
00011111111110
|
||||||
|
00000111111000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111111110000
|
||||||
|
01111111111100
|
||||||
|
01111111111110
|
||||||
|
00011100011110
|
||||||
|
00011100001111
|
||||||
|
00011100000111
|
||||||
|
00011100000111
|
||||||
|
00011100000111
|
||||||
|
00011100000111
|
||||||
|
00011100001111
|
||||||
|
00011100011110
|
||||||
|
01111111111110
|
||||||
|
01111111111100
|
||||||
|
01111111110000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
00011100001110
|
||||||
|
00011100000000
|
||||||
|
00011111100000
|
||||||
|
00011111110000
|
||||||
|
00011111100000
|
||||||
|
00011100001110
|
||||||
|
00011100001110
|
||||||
|
00011100001110
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
00011100001110
|
||||||
|
00011100000000
|
||||||
|
00011100000000
|
||||||
|
00011111110000
|
||||||
|
00011111110000
|
||||||
|
00011111110000
|
||||||
|
00011100000000
|
||||||
|
00011100000000
|
||||||
|
01111111100000
|
||||||
|
01111111100000
|
||||||
|
01111111100000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
00000111101110
|
||||||
|
00011111111110
|
||||||
|
00111111111110
|
||||||
|
00111100011110
|
||||||
|
01111000001110
|
||||||
|
01110000001110
|
||||||
|
01110000000000
|
||||||
|
01110001111111
|
||||||
|
01110001111111
|
||||||
|
01111001111111
|
||||||
|
00111100001110
|
||||||
|
00111111111110
|
||||||
|
00011111111110
|
||||||
|
00000111111000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111100111110
|
||||||
|
01111100111110
|
||||||
|
01111100111110
|
||||||
|
00111000011100
|
||||||
|
00111000011100
|
||||||
|
00111111111100
|
||||||
|
00111111111100
|
||||||
|
00111111111100
|
||||||
|
00111000011100
|
||||||
|
00111000011100
|
||||||
|
00111000011100
|
||||||
|
01111100111110
|
||||||
|
01111100111110
|
||||||
|
01111100111110
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
00111111111000
|
||||||
|
01111111111100
|
||||||
|
00111111111000
|
||||||
|
00000111000000
|
||||||
|
00000111000000
|
||||||
|
00000111000000
|
||||||
|
00000111000000
|
||||||
|
00000111000000
|
||||||
|
00000111000000
|
||||||
|
00000111000000
|
||||||
|
00000111000000
|
||||||
|
01111111111100
|
||||||
|
01111111111100
|
||||||
|
01111111111100
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
00001111111111
|
||||||
|
00001111111111
|
||||||
|
00001111111111
|
||||||
|
00000000111000
|
||||||
|
00000000111000
|
||||||
|
00000000111000
|
||||||
|
00000000111000
|
||||||
|
01110000111000
|
||||||
|
01110000111000
|
||||||
|
01110000111000
|
||||||
|
01111001111000
|
||||||
|
01111111111000
|
||||||
|
00111111110000
|
||||||
|
00011111100000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111110111110
|
||||||
|
01111110111111
|
||||||
|
01111110111111
|
||||||
|
00011100011100
|
||||||
|
00011100111000
|
||||||
|
00011101110000
|
||||||
|
00011111100000
|
||||||
|
00011111111000
|
||||||
|
00011111111000
|
||||||
|
00011100011100
|
||||||
|
00011100011100
|
||||||
|
01111111001111
|
||||||
|
01111111001111
|
||||||
|
01111111000111
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111111100000
|
||||||
|
01111111100000
|
||||||
|
01111111100000
|
||||||
|
00011100000000
|
||||||
|
00011100000000
|
||||||
|
00011100000000
|
||||||
|
00011100000100
|
||||||
|
00011100001110
|
||||||
|
00011100001110
|
||||||
|
00011100001110
|
||||||
|
00011100001110
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111000001111
|
||||||
|
01111100011111
|
||||||
|
01111100011111
|
||||||
|
00111110111110
|
||||||
|
00111110111110
|
||||||
|
00111110111110
|
||||||
|
00111011101110
|
||||||
|
00111011101110
|
||||||
|
00111011101110
|
||||||
|
00111001001110
|
||||||
|
00111000001110
|
||||||
|
01111110111111
|
||||||
|
01111110111111
|
||||||
|
01111110111111
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111000111110
|
||||||
|
01111100111110
|
||||||
|
00111110011100
|
||||||
|
00111110011100
|
||||||
|
00111110011100
|
||||||
|
00111011011100
|
||||||
|
00111011011100
|
||||||
|
00111001111100
|
||||||
|
00111001111100
|
||||||
|
00111000111100
|
||||||
|
00111000111100
|
||||||
|
01111100011100
|
||||||
|
01111100011100
|
||||||
|
01111100001100
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
00000111110000
|
||||||
|
00011111111100
|
||||||
|
00111111111110
|
||||||
|
00111100011110
|
||||||
|
01111000001111
|
||||||
|
01110000000111
|
||||||
|
01110000000111
|
||||||
|
01110000000111
|
||||||
|
01110000000111
|
||||||
|
01111000001111
|
||||||
|
00111000011110
|
||||||
|
00111111111110
|
||||||
|
00011111111100
|
||||||
|
00000111110000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111111110000
|
||||||
|
01111111111100
|
||||||
|
01111111111100
|
||||||
|
00011100011110
|
||||||
|
00011100001110
|
||||||
|
00011100001110
|
||||||
|
00011100011110
|
||||||
|
00011111111110
|
||||||
|
00011111111100
|
||||||
|
00011111110000
|
||||||
|
00011100000000
|
||||||
|
01111111100000
|
||||||
|
01111111100000
|
||||||
|
01111111100000
|
||||||
|
00000000000000
|
||||||
|
00001111110000
|
||||||
|
00011111111000
|
||||||
|
00111111111100
|
||||||
|
00111000011100
|
||||||
|
01110000001110
|
||||||
|
01110000001110
|
||||||
|
01110000001110
|
||||||
|
01110000001110
|
||||||
|
00111000011100
|
||||||
|
00111111111100
|
||||||
|
00011111111000
|
||||||
|
00000111110000
|
||||||
|
00001100000100
|
||||||
|
00011111111110
|
||||||
|
00111111111110
|
||||||
|
00111111111100
|
||||||
|
00000000000000
|
||||||
|
01111111111000
|
||||||
|
01111111111100
|
||||||
|
01111111111110
|
||||||
|
00011100011110
|
||||||
|
00011100001110
|
||||||
|
00011100001110
|
||||||
|
00011111111100
|
||||||
|
00011111111000
|
||||||
|
00011111111000
|
||||||
|
00011100111100
|
||||||
|
00011100011110
|
||||||
|
01111111011111
|
||||||
|
01111111001111
|
||||||
|
01111111000111
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
00001111011000
|
||||||
|
00011111111000
|
||||||
|
00111111111000
|
||||||
|
00111000011000
|
||||||
|
00111000000000
|
||||||
|
00111100000000
|
||||||
|
00011111110000
|
||||||
|
00000111111000
|
||||||
|
00000000111100
|
||||||
|
00110000011100
|
||||||
|
00111000011100
|
||||||
|
00111111111100
|
||||||
|
00111111111000
|
||||||
|
00111011110000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
01111111111110
|
||||||
|
01110011101110
|
||||||
|
01110011101110
|
||||||
|
01110011101110
|
||||||
|
01110011101110
|
||||||
|
00000011100000
|
||||||
|
00000011100000
|
||||||
|
00000011100000
|
||||||
|
00000011100000
|
||||||
|
00011111111100
|
||||||
|
00011111111100
|
||||||
|
00011111111100
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111100111110
|
||||||
|
01111100111110
|
||||||
|
01111100111110
|
||||||
|
00111000011100
|
||||||
|
00111000011100
|
||||||
|
00111000011100
|
||||||
|
00111000011100
|
||||||
|
00111000011100
|
||||||
|
00111000011100
|
||||||
|
00111000011100
|
||||||
|
00111100111100
|
||||||
|
00111111111100
|
||||||
|
00011111111000
|
||||||
|
00001111110000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
11111100111111
|
||||||
|
11111100111111
|
||||||
|
11111100111111
|
||||||
|
00111000001110
|
||||||
|
00111000011100
|
||||||
|
00011100011100
|
||||||
|
00011100111100
|
||||||
|
00011100111000
|
||||||
|
00001110111000
|
||||||
|
00001111110000
|
||||||
|
00000111110000
|
||||||
|
00000111100000
|
||||||
|
00000111100000
|
||||||
|
00000011100000
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
11111100011111
|
||||||
|
11111100011111
|
||||||
|
11111100011111
|
||||||
|
01110000000111
|
||||||
|
00110001000110
|
||||||
|
00110011100110
|
||||||
|
00110011100110
|
||||||
|
00110111110110
|
||||||
|
00110110110110
|
||||||
|
00111110111110
|
||||||
|
00111100111110
|
||||||
|
00111100011110
|
||||||
|
00111100011100
|
||||||
|
00011000011100
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
01111110111111
|
||||||
|
01111110111111
|
||||||
|
01111110111111
|
||||||
|
00011100011100
|
||||||
|
00001110111000
|
||||||
|
00001111110000
|
||||||
|
00000111100000
|
||||||
|
00000111110000
|
||||||
|
00001111110000
|
||||||
|
00011100111000
|
||||||
|
00111000011100
|
||||||
|
11111100111111
|
||||||
|
11111100111111
|
||||||
|
11111100111111
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
11111100111111
|
||||||
|
11111100111111
|
||||||
|
11111100111111
|
||||||
|
00111000011100
|
||||||
|
00011100111100
|
||||||
|
00001111111000
|
||||||
|
00001111110000
|
||||||
|
00000111110000
|
||||||
|
00000011100000
|
||||||
|
00000011100000
|
||||||
|
00000011100000
|
||||||
|
00011111111100
|
||||||
|
00011111111100
|
||||||
|
00011111111100
|
||||||
|
00000000000000
|
||||||
|
00000000000000
|
||||||
|
00111111111100
|
||||||
|
00111111111100
|
||||||
|
00111111111000
|
||||||
|
00111000111000
|
||||||
|
00111000110000
|
||||||
|
00111001100000
|
||||||
|
00000011000000
|
||||||
|
00000110000000
|
||||||
|
00000110011100
|
||||||
|
00001100011100
|
||||||
|
00011000011100
|
||||||
|
00111111111100
|
||||||
|
00111111111100
|
||||||
|
00111111111100
|
||||||
|
00000000000000
|
|
@ -0,0 +1 @@
|
||||||
|
MILLION.SYSTEM=Type(FF),AuxType(2000),Access(C3)
|
|
@ -0,0 +1,130 @@
|
||||||
|
# 4x3, easy
|
||||||
|
ARUH
|
||||||
|
WLCM
|
||||||
|
BHOR
|
||||||
|
|
||||||
|
ARCH
|
||||||
|
BLUR
|
||||||
|
WHOM
|
||||||
|
--
|
||||||
|
UPUG
|
||||||
|
THGE
|
||||||
|
WAON
|
||||||
|
|
||||||
|
THUG
|
||||||
|
UPON
|
||||||
|
WAGE
|
||||||
|
--
|
||||||
|
SGOY
|
||||||
|
AANT
|
||||||
|
ZHES
|
||||||
|
|
||||||
|
AGES
|
||||||
|
SHOT
|
||||||
|
ZANY
|
||||||
|
--
|
||||||
|
EARY
|
||||||
|
RECB
|
||||||
|
HPIC
|
||||||
|
|
||||||
|
EPIC
|
||||||
|
HERB
|
||||||
|
RACY
|
||||||
|
--
|
||||||
|
NSVB
|
||||||
|
BAMR
|
||||||
|
UOEY
|
||||||
|
|
||||||
|
BOMB
|
||||||
|
NAVY
|
||||||
|
USER
|
||||||
|
--
|
||||||
|
GVAE
|
||||||
|
ESIR
|
||||||
|
IELL
|
||||||
|
|
||||||
|
EVIL
|
||||||
|
GEAR
|
||||||
|
ISLE
|
||||||
|
--
|
||||||
|
IIAA
|
||||||
|
CDEL
|
||||||
|
DASE
|
||||||
|
|
||||||
|
CASE
|
||||||
|
DIAL
|
||||||
|
IDEA
|
||||||
|
--
|
||||||
|
IECF
|
||||||
|
RHET
|
||||||
|
WTAH
|
||||||
|
|
||||||
|
ITCH
|
||||||
|
REEF
|
||||||
|
WHAT
|
||||||
|
--
|
||||||
|
SOLA
|
||||||
|
EIAM
|
||||||
|
VXSO
|
||||||
|
|
||||||
|
EXAM
|
||||||
|
SOLO
|
||||||
|
VISA
|
||||||
|
--
|
||||||
|
TLGE
|
||||||
|
UROM
|
||||||
|
SERP
|
||||||
|
|
||||||
|
SLOP
|
||||||
|
TERM
|
||||||
|
URGE
|
||||||
|
--
|
||||||
|
CNFP
|
||||||
|
SDIF
|
||||||
|
EUGY
|
||||||
|
|
||||||
|
CUFF
|
||||||
|
EDGY
|
||||||
|
SNIP
|
||||||
|
--
|
||||||
|
IYTN
|
||||||
|
SUOC
|
||||||
|
CCNE
|
||||||
|
|
||||||
|
CUTE
|
||||||
|
ICON
|
||||||
|
SYNC
|
||||||
|
--
|
||||||
|
RYDE
|
||||||
|
EHIS
|
||||||
|
CIEC
|
||||||
|
|
||||||
|
CHIC
|
||||||
|
EYES
|
||||||
|
RIDE
|
||||||
|
--
|
||||||
|
PRCX
|
||||||
|
LYLS
|
||||||
|
AONO
|
||||||
|
|
||||||
|
ARCS
|
||||||
|
LYNX
|
||||||
|
POLO
|
||||||
|
--
|
||||||
|
LARR
|
||||||
|
SVEY
|
||||||
|
OPMB
|
||||||
|
|
||||||
|
LAMB
|
||||||
|
OVER
|
||||||
|
SPRY
|
||||||
|
--
|
||||||
|
BEOK
|
||||||
|
ASRS
|
||||||
|
JRPW
|
||||||
|
|
||||||
|
ASPS
|
||||||
|
BROW
|
||||||
|
JERK
|
||||||
|
--
|
||||||
|
[eof]
|
|
@ -0,0 +1,130 @@
|
||||||
|
# 5x3, easy
|
||||||
|
KUADL
|
||||||
|
FREEY
|
||||||
|
GNNNE
|
||||||
|
|
||||||
|
FUNNY
|
||||||
|
GRADE
|
||||||
|
KNEEL
|
||||||
|
--
|
||||||
|
EIAIS
|
||||||
|
MRJEY
|
||||||
|
GNLON
|
||||||
|
|
||||||
|
ENJOY
|
||||||
|
GRAIN
|
||||||
|
MILES
|
||||||
|
--
|
||||||
|
SACDY
|
||||||
|
LUOES
|
||||||
|
MTDMP
|
||||||
|
|
||||||
|
LACES
|
||||||
|
MUDDY
|
||||||
|
STOMP
|
||||||
|
--
|
||||||
|
RHUCY
|
||||||
|
TEEMT
|
||||||
|
ELPAP
|
||||||
|
|
||||||
|
ELECT
|
||||||
|
REPAY
|
||||||
|
THUMP
|
||||||
|
--
|
||||||
|
RALLH
|
||||||
|
STDIO
|
||||||
|
MUYCE
|
||||||
|
|
||||||
|
MULCH
|
||||||
|
RADIO
|
||||||
|
STYLE
|
||||||
|
--
|
||||||
|
MIELD
|
||||||
|
BOMMY
|
||||||
|
WUAST
|
||||||
|
|
||||||
|
BOAST
|
||||||
|
MUMMY
|
||||||
|
WIELD
|
||||||
|
--
|
||||||
|
SOUNG
|
||||||
|
YSSAS
|
||||||
|
EHOWY
|
||||||
|
|
||||||
|
ESSAY
|
||||||
|
SHOWS
|
||||||
|
YOUNG
|
||||||
|
--
|
||||||
|
MOBND
|
||||||
|
HLVUA
|
||||||
|
AYEEM
|
||||||
|
|
||||||
|
ALBUM
|
||||||
|
HYENA
|
||||||
|
MOVED
|
||||||
|
--
|
||||||
|
CITTH
|
||||||
|
SNUED
|
||||||
|
AONUL
|
||||||
|
|
||||||
|
ANNUL
|
||||||
|
CITED
|
||||||
|
SOUTH
|
||||||
|
--
|
||||||
|
AEAER
|
||||||
|
NINDE
|
||||||
|
FBESY
|
||||||
|
|
||||||
|
ABASE
|
||||||
|
FINER
|
||||||
|
NEEDY
|
||||||
|
--
|
||||||
|
OBIRK
|
||||||
|
QPBNT
|
||||||
|
AUEOS
|
||||||
|
|
||||||
|
ABBOT
|
||||||
|
OPENS
|
||||||
|
QUIRK
|
||||||
|
--
|
||||||
|
AUSLW
|
||||||
|
BEGEE
|
||||||
|
RRNON
|
||||||
|
|
||||||
|
ARSON
|
||||||
|
BUGLE
|
||||||
|
RENEW
|
||||||
|
--
|
||||||
|
THDED
|
||||||
|
FEIGH
|
||||||
|
CUNKY
|
||||||
|
|
||||||
|
CEDED
|
||||||
|
FUNKY
|
||||||
|
THIGH
|
||||||
|
--
|
||||||
|
FRADY
|
||||||
|
RECHE
|
||||||
|
NIILL
|
||||||
|
|
||||||
|
FRILL
|
||||||
|
NICHE
|
||||||
|
READY
|
||||||
|
--
|
||||||
|
OPUDN
|
||||||
|
ATTCK
|
||||||
|
SUROO
|
||||||
|
|
||||||
|
APRON
|
||||||
|
OUTDO
|
||||||
|
STUCK
|
||||||
|
--
|
||||||
|
NECNG
|
||||||
|
UNXUE
|
||||||
|
WROLS
|
||||||
|
|
||||||
|
NEXUS
|
||||||
|
UNCLE
|
||||||
|
WRONG
|
||||||
|
--
|
||||||
|
[eof]
|
|
@ -0,0 +1,130 @@
|
||||||
|
# 6x3, easy
|
||||||
|
OBPGIR
|
||||||
|
LAJEET
|
||||||
|
NONKCN
|
||||||
|
|
||||||
|
LONGER
|
||||||
|
NAPKIN
|
||||||
|
OBJECT
|
||||||
|
--
|
||||||
|
BUTIEE
|
||||||
|
PNODPD
|
||||||
|
URNMLT
|
||||||
|
|
||||||
|
BUNDLE
|
||||||
|
PROMPT
|
||||||
|
UNTIED
|
||||||
|
--
|
||||||
|
TSUPTT
|
||||||
|
FAIOOD
|
||||||
|
ERCLRY
|
||||||
|
|
||||||
|
ESCORT
|
||||||
|
FAULTY
|
||||||
|
TRIPOD
|
||||||
|
--
|
||||||
|
JIEEGD
|
||||||
|
CVLTRE
|
||||||
|
AAVNEN
|
||||||
|
|
||||||
|
AVENGE
|
||||||
|
CAVERN
|
||||||
|
JILTED
|
||||||
|
--
|
||||||
|
EIAZER
|
||||||
|
SSCROS
|
||||||
|
PLMMAW
|
||||||
|
|
||||||
|
ESCROW
|
||||||
|
PLAZAS
|
||||||
|
SIMMER
|
||||||
|
--
|
||||||
|
MUFDUY
|
||||||
|
DPSEAR
|
||||||
|
SEIREM
|
||||||
|
|
||||||
|
DEFRAY
|
||||||
|
MUSEUM
|
||||||
|
SPIDER
|
||||||
|
--
|
||||||
|
PPIAEA
|
||||||
|
SNSNYS
|
||||||
|
IAPURE
|
||||||
|
|
||||||
|
INSURE
|
||||||
|
PAPAYA
|
||||||
|
SPINES
|
||||||
|
--
|
||||||
|
CICAIC
|
||||||
|
POBRTS
|
||||||
|
ORNNAE
|
||||||
|
|
||||||
|
COBRAS
|
||||||
|
ORNATE
|
||||||
|
PICNIC
|
||||||
|
--
|
||||||
|
NBBLTD
|
||||||
|
EEURON
|
||||||
|
AYEOIS
|
||||||
|
|
||||||
|
ABBOTS
|
||||||
|
EYELID
|
||||||
|
NEURON
|
||||||
|
--
|
||||||
|
TIPTLE
|
||||||
|
REROAT
|
||||||
|
VULLRS
|
||||||
|
|
||||||
|
REPORT
|
||||||
|
TURTLE
|
||||||
|
VILLAS
|
||||||
|
--
|
||||||
|
WATCHL
|
||||||
|
UNCGOY
|
||||||
|
PEDOES
|
||||||
|
|
||||||
|
PATCHY
|
||||||
|
UNCOOL
|
||||||
|
WEDGES
|
||||||
|
--
|
||||||
|
DAPOFF
|
||||||
|
FULEOD
|
||||||
|
CETCNN
|
||||||
|
|
||||||
|
CUTOFF
|
||||||
|
DEPEND
|
||||||
|
FALCON
|
||||||
|
--
|
||||||
|
ORGTOY
|
||||||
|
WOAUSR
|
||||||
|
LICGLT
|
||||||
|
|
||||||
|
LOCUST
|
||||||
|
ORATOR
|
||||||
|
WIGGLY
|
||||||
|
--
|
||||||
|
ZETTTD
|
||||||
|
FANIEH
|
||||||
|
CLOWLE
|
||||||
|
|
||||||
|
CATTLE
|
||||||
|
FLOWED
|
||||||
|
ZENITH
|
||||||
|
--
|
||||||
|
PLAIET
|
||||||
|
CURKVO
|
||||||
|
STCNOE
|
||||||
|
|
||||||
|
CUCKOO
|
||||||
|
PLANET
|
||||||
|
STRIVE
|
||||||
|
--
|
||||||
|
OONOIR
|
||||||
|
MUTTOS
|
||||||
|
REBBTD
|
||||||
|
|
||||||
|
MENTOR
|
||||||
|
OUTBID
|
||||||
|
ROBOTS
|
||||||
|
--
|
||||||
|
[eof]
|
|
@ -0,0 +1,130 @@
|
||||||
|
# 7x3, easy
|
||||||
|
PRTFELE
|
||||||
|
MHERINS
|
||||||
|
SIOTBET
|
||||||
|
|
||||||
|
MITTENS
|
||||||
|
PROFILE
|
||||||
|
SHERBET
|
||||||
|
--
|
||||||
|
ELSNTNG
|
||||||
|
DSOTIRS
|
||||||
|
CITAOET
|
||||||
|
|
||||||
|
CLONING
|
||||||
|
DISTORT
|
||||||
|
ESTATES
|
||||||
|
--
|
||||||
|
CUNVERE
|
||||||
|
DOCTATD
|
||||||
|
GIESSET
|
||||||
|
|
||||||
|
CONVERT
|
||||||
|
DICTATE
|
||||||
|
GUESSED
|
||||||
|
--
|
||||||
|
GSAISRE
|
||||||
|
AUSFTED
|
||||||
|
SLNTITS
|
||||||
|
|
||||||
|
ASSISTS
|
||||||
|
GUNFIRE
|
||||||
|
SLATTED
|
||||||
|
--
|
||||||
|
CAPLICG
|
||||||
|
SLOAKED
|
||||||
|
PREFENT
|
||||||
|
|
||||||
|
CLOAKED
|
||||||
|
PREFECT
|
||||||
|
SAPLING
|
||||||
|
--
|
||||||
|
UNECEEY
|
||||||
|
BRSVITN
|
||||||
|
DIDATRD
|
||||||
|
|
||||||
|
BREVITY
|
||||||
|
DISCERN
|
||||||
|
UNDATED
|
||||||
|
--
|
||||||
|
ASEVTIS
|
||||||
|
SMARATL
|
||||||
|
PRSERLY
|
||||||
|
|
||||||
|
ASSERTS
|
||||||
|
PREVAIL
|
||||||
|
SMARTLY
|
||||||
|
--
|
||||||
|
BHAVDEY
|
||||||
|
ANNUITO
|
||||||
|
SRUDADR
|
||||||
|
|
||||||
|
ANNUITY
|
||||||
|
BRAVADO
|
||||||
|
SHUDDER
|
||||||
|
--
|
||||||
|
AQVGRNC
|
||||||
|
COUEIUP
|
||||||
|
BEGATIG
|
||||||
|
|
||||||
|
AQUATIC
|
||||||
|
BEGGING
|
||||||
|
COVERUP
|
||||||
|
--
|
||||||
|
HIATFUD
|
||||||
|
PUSPHNR
|
||||||
|
SETIEEL
|
||||||
|
|
||||||
|
HEATHER
|
||||||
|
PITIFUL
|
||||||
|
SUSPEND
|
||||||
|
--
|
||||||
|
KIASOEP
|
||||||
|
SHNTHIS
|
||||||
|
PERITDR
|
||||||
|
|
||||||
|
KINSHIP
|
||||||
|
PERIODS
|
||||||
|
SHATTER
|
||||||
|
--
|
||||||
|
VRTFPEA
|
||||||
|
CIAATID
|
||||||
|
TELERAN
|
||||||
|
|
||||||
|
CRAFTED
|
||||||
|
TILAPIA
|
||||||
|
VETERAN
|
||||||
|
--
|
||||||
|
HEGIAAO
|
||||||
|
MVRDCRL
|
||||||
|
AAOCEDS
|
||||||
|
|
||||||
|
AVOCADO
|
||||||
|
HERDERS
|
||||||
|
MAGICAL
|
||||||
|
--
|
||||||
|
TAIPASE
|
||||||
|
AEUTLIT
|
||||||
|
MGMDETN
|
||||||
|
|
||||||
|
AGITATE
|
||||||
|
MAUDLIN
|
||||||
|
TEMPEST
|
||||||
|
--
|
||||||
|
GPLLERC
|
||||||
|
DYARMAN
|
||||||
|
SANATIY
|
||||||
|
|
||||||
|
DYNAMIC
|
||||||
|
GALLERY
|
||||||
|
SPARTAN
|
||||||
|
--
|
||||||
|
DEAUUEL
|
||||||
|
STCLNSH
|
||||||
|
MOLIBCK
|
||||||
|
|
||||||
|
DECIBEL
|
||||||
|
MOLLUSK
|
||||||
|
STAUNCH
|
||||||
|
--
|
||||||
|
[eof]
|
|
@ -0,0 +1,179 @@
|
||||||
|
# 4x4, intermediate
|
||||||
|
# Try to find the optimal solution
|
||||||
|
IOLA
|
||||||
|
ALOO
|
||||||
|
DEEI
|
||||||
|
HDSK
|
||||||
|
|
||||||
|
ALSO
|
||||||
|
DELI
|
||||||
|
HOOK
|
||||||
|
IDEA
|
||||||
|
DESK
|
||||||
|
--
|
||||||
|
RNDO
|
||||||
|
UANK
|
||||||
|
HVER
|
||||||
|
OIGH
|
||||||
|
|
||||||
|
HIGH
|
||||||
|
OVER
|
||||||
|
RANK
|
||||||
|
UNDO
|
||||||
|
RINK
|
||||||
|
--
|
||||||
|
UDOR
|
||||||
|
ONEM
|
||||||
|
HUTO
|
||||||
|
THNG
|
||||||
|
|
||||||
|
HUNG
|
||||||
|
ODOR
|
||||||
|
THEM
|
||||||
|
UNTO
|
||||||
|
ONTO
|
||||||
|
--
|
||||||
|
MATI
|
||||||
|
OILP
|
||||||
|
PREO
|
||||||
|
TNXK
|
||||||
|
|
||||||
|
MILK
|
||||||
|
ONTO
|
||||||
|
PREP
|
||||||
|
TAXI
|
||||||
|
TALK
|
||||||
|
--
|
||||||
|
CULP
|
||||||
|
EDAK
|
||||||
|
LEGM
|
||||||
|
FANY
|
||||||
|
|
||||||
|
CALM
|
||||||
|
EDGY
|
||||||
|
FUNK
|
||||||
|
LEAP
|
||||||
|
LEAK
|
||||||
|
--
|
||||||
|
OMIK
|
||||||
|
IODM
|
||||||
|
JUET
|
||||||
|
BTNY
|
||||||
|
|
||||||
|
BODY
|
||||||
|
ITEM
|
||||||
|
JUNK
|
||||||
|
OMIT
|
||||||
|
BUNK
|
||||||
|
--
|
||||||
|
WHNR
|
||||||
|
AVEM
|
||||||
|
CCOE
|
||||||
|
ELIT
|
||||||
|
|
||||||
|
ACNE
|
||||||
|
CLOT
|
||||||
|
EVER
|
||||||
|
WHIM
|
||||||
|
WHOM
|
||||||
|
--
|
||||||
|
TARY
|
||||||
|
VIIW
|
||||||
|
EHAC
|
||||||
|
KPND
|
||||||
|
|
||||||
|
EPIC
|
||||||
|
KIND
|
||||||
|
THAW
|
||||||
|
VARY
|
||||||
|
TINY
|
||||||
|
--
|
||||||
|
ODGW
|
||||||
|
SNLE
|
||||||
|
ELTY
|
||||||
|
MYEH
|
||||||
|
|
||||||
|
EDGE
|
||||||
|
MYTH
|
||||||
|
ONLY
|
||||||
|
SLEW
|
||||||
|
EDGY
|
||||||
|
--
|
||||||
|
EHOS
|
||||||
|
PIIE
|
||||||
|
MLCT
|
||||||
|
CNDC
|
||||||
|
|
||||||
|
CHIC
|
||||||
|
ENDS
|
||||||
|
MICE
|
||||||
|
PLOT
|
||||||
|
CLOT
|
||||||
|
--
|
||||||
|
AIUC
|
||||||
|
DCMD
|
||||||
|
SRSN
|
||||||
|
IPEY
|
||||||
|
|
||||||
|
ARMY
|
||||||
|
DISC
|
||||||
|
ICED
|
||||||
|
SPUN
|
||||||
|
DIED
|
||||||
|
--
|
||||||
|
OOHS
|
||||||
|
ECDE
|
||||||
|
NWLO
|
||||||
|
TUFU
|
||||||
|
|
||||||
|
ECHO
|
||||||
|
NUDE
|
||||||
|
OWLS
|
||||||
|
TOFU
|
||||||
|
NODE
|
||||||
|
--
|
||||||
|
BILY
|
||||||
|
GUOW
|
||||||
|
AACD
|
||||||
|
PNET
|
||||||
|
|
||||||
|
ANEW
|
||||||
|
BUOY
|
||||||
|
GILD
|
||||||
|
PACT
|
||||||
|
BALD
|
||||||
|
--
|
||||||
|
AVZN
|
||||||
|
OBEZ
|
||||||
|
MYLY
|
||||||
|
BUTH
|
||||||
|
|
||||||
|
ABLY
|
||||||
|
BUZZ
|
||||||
|
MYTH
|
||||||
|
OVEN
|
||||||
|
OBEY
|
||||||
|
--
|
||||||
|
POHN
|
||||||
|
NCUS
|
||||||
|
HEEO
|
||||||
|
ERMY
|
||||||
|
|
||||||
|
ECHO
|
||||||
|
HEMS
|
||||||
|
NOUN
|
||||||
|
PREY
|
||||||
|
PEES
|
||||||
|
--
|
||||||
|
ZUAW
|
||||||
|
MRTO
|
||||||
|
DERA
|
||||||
|
TYNH
|
||||||
|
|
||||||
|
DRAW
|
||||||
|
MYTH
|
||||||
|
TUNA
|
||||||
|
ZERO
|
||||||
|
META
|
||||||
|
--
|
||||||
|
[eof]
|
|
@ -0,0 +1,179 @@
|
||||||
|
# 5x4, intermediate
|
||||||
|
# Try to find the optimal solution
|
||||||
|
GTRIL
|
||||||
|
SIIRY
|
||||||
|
VVENS
|
||||||
|
ERNYP
|
||||||
|
|
||||||
|
EVERY
|
||||||
|
GRINS
|
||||||
|
STRIP
|
||||||
|
VINYL
|
||||||
|
STIRS
|
||||||
|
--
|
||||||
|
RILIT
|
||||||
|
CUIEA
|
||||||
|
DGBNG
|
||||||
|
AOGRR
|
||||||
|
|
||||||
|
AGING
|
||||||
|
COBRA
|
||||||
|
DIGIT
|
||||||
|
RULER
|
||||||
|
DOING
|
||||||
|
--
|
||||||
|
MXTCK
|
||||||
|
KNYRR
|
||||||
|
CAIOA
|
||||||
|
ELAMB
|
||||||
|
|
||||||
|
CLIMB
|
||||||
|
EXTRA
|
||||||
|
KNACK
|
||||||
|
MAYOR
|
||||||
|
CLICK
|
||||||
|
--
|
||||||
|
ABIOO
|
||||||
|
OADTT
|
||||||
|
DLOSY
|
||||||
|
PHBER
|
||||||
|
|
||||||
|
ABBOT
|
||||||
|
DAISY
|
||||||
|
OLDER
|
||||||
|
PHOTO
|
||||||
|
ABBEY
|
||||||
|
--
|
||||||
|
AOUON
|
||||||
|
GYAZH
|
||||||
|
NATCE
|
||||||
|
LMLRD
|
||||||
|
|
||||||
|
AMAZE
|
||||||
|
GOURD
|
||||||
|
LATCH
|
||||||
|
NYLON
|
||||||
|
NOTCH
|
||||||
|
--
|
||||||
|
BRUSG
|
||||||
|
FUZNE
|
||||||
|
YAAON
|
||||||
|
EORZY
|
||||||
|
|
||||||
|
BARON
|
||||||
|
ERASE
|
||||||
|
FUZZY
|
||||||
|
YOUNG
|
||||||
|
BORNE
|
||||||
|
--
|
||||||
|
JAIDP
|
||||||
|
CUDOS
|
||||||
|
ILUME
|
||||||
|
RGLGO
|
||||||
|
|
||||||
|
CLUMP
|
||||||
|
IGLOO
|
||||||
|
JUDGE
|
||||||
|
RAIDS
|
||||||
|
CALMS
|
||||||
|
--
|
||||||
|
LEIOY
|
||||||
|
SYRBN
|
||||||
|
FRLUP
|
||||||
|
POBDE
|
||||||
|
|
||||||
|
FELON
|
||||||
|
LOBBY
|
||||||
|
PRIDE
|
||||||
|
SYRUP
|
||||||
|
PYLON
|
||||||
|
--
|
||||||
|
GWRSE
|
||||||
|
ENOOH
|
||||||
|
JASER
|
||||||
|
AUAMD
|
||||||
|
|
||||||
|
AWASH
|
||||||
|
EASED
|
||||||
|
GNOME
|
||||||
|
JUROR
|
||||||
|
GNASH
|
||||||
|
--
|
||||||
|
LHIFL
|
||||||
|
DAOVA
|
||||||
|
CUNUF
|
||||||
|
GLRKS
|
||||||
|
|
||||||
|
CLIFF
|
||||||
|
DUNKS
|
||||||
|
GHOUL
|
||||||
|
LARVA
|
||||||
|
LURKS
|
||||||
|
--
|
||||||
|
FNIUK
|
||||||
|
THRKE
|
||||||
|
UESOY
|
||||||
|
PUDNR
|
||||||
|
|
||||||
|
FUROR
|
||||||
|
PESKY
|
||||||
|
THINK
|
||||||
|
UNDUE
|
||||||
|
PERKY
|
||||||
|
--
|
||||||
|
ILGFD
|
||||||
|
FURER
|
||||||
|
HRUOF
|
||||||
|
SEKAN
|
||||||
|
|
||||||
|
FLUFF
|
||||||
|
HERON
|
||||||
|
IRKED
|
||||||
|
SUGAR
|
||||||
|
FUROR
|
||||||
|
--
|
||||||
|
ALPPK
|
||||||
|
WFOUR
|
||||||
|
BHIOS
|
||||||
|
VAACL
|
||||||
|
|
||||||
|
AFOUL
|
||||||
|
BLACK
|
||||||
|
VAPOR
|
||||||
|
WHIPS
|
||||||
|
BLOCK
|
||||||
|
--
|
||||||
|
LBNNT
|
||||||
|
AYBRO
|
||||||
|
ZAOUA
|
||||||
|
MEIGG
|
||||||
|
|
||||||
|
ABOUT
|
||||||
|
LYING
|
||||||
|
MANGO
|
||||||
|
ZEBRA
|
||||||
|
ABORT
|
||||||
|
--
|
||||||
|
SWNLA
|
||||||
|
HAGND
|
||||||
|
MOOUY
|
||||||
|
RYERE
|
||||||
|
|
||||||
|
HYENA
|
||||||
|
MANLY
|
||||||
|
ROGUE
|
||||||
|
SWORD
|
||||||
|
SWORE
|
||||||
|
--
|
||||||
|
GNRPN
|
||||||
|
MLGNR
|
||||||
|
IOAAE
|
||||||
|
SUYOH
|
||||||
|
|
||||||
|
GLYPH
|
||||||
|
INANE
|
||||||
|
MORON
|
||||||
|
SUGAR
|
||||||
|
MORPH
|
||||||
|
--
|
||||||
|
[eof]
|
|
@ -0,0 +1,179 @@
|
||||||
|
# 6x4, intermediate
|
||||||
|
# Try to find the optimal solution
|
||||||
|
REASAS
|
||||||
|
ABPOPY
|
||||||
|
GIQLRB
|
||||||
|
LRSUOR
|
||||||
|
|
||||||
|
ABSORB
|
||||||
|
GRASPS
|
||||||
|
LIQUOR
|
||||||
|
REPLAY
|
||||||
|
LESSOR
|
||||||
|
--
|
||||||
|
CADPIE
|
||||||
|
OOMICY
|
||||||
|
MRCHAC
|
||||||
|
RENULD
|
||||||
|
|
||||||
|
COMPLY
|
||||||
|
MANIAC
|
||||||
|
ORCHID
|
||||||
|
REDUCE
|
||||||
|
MODULE
|
||||||
|
--
|
||||||
|
CXPUME
|
||||||
|
EILCAN
|
||||||
|
ROSOIL
|
||||||
|
BAONSC
|
||||||
|
|
||||||
|
BIONIC
|
||||||
|
COLUMN
|
||||||
|
EXPOSE
|
||||||
|
RASCAL
|
||||||
|
CASUAL
|
||||||
|
--
|
||||||
|
RNMONS
|
||||||
|
SLFFIX
|
||||||
|
FEOIVE
|
||||||
|
AUANKT
|
||||||
|
|
||||||
|
ANOINT
|
||||||
|
FLANKS
|
||||||
|
REMOVE
|
||||||
|
SUFFIX
|
||||||
|
REFINE
|
||||||
|
--
|
||||||
|
BCFSLY
|
||||||
|
SEIITE
|
||||||
|
AHUOED
|
||||||
|
CLOERT
|
||||||
|
|
||||||
|
ACUITY
|
||||||
|
BEFORE
|
||||||
|
CLOSET
|
||||||
|
SHIELD
|
||||||
|
CLOSED
|
||||||
|
--
|
||||||
|
OIRHIN
|
||||||
|
GOVEBP
|
||||||
|
DRPSNY
|
||||||
|
HESIAE
|
||||||
|
|
||||||
|
DIVINE
|
||||||
|
GOSSIP
|
||||||
|
HEREBY
|
||||||
|
ORPHAN
|
||||||
|
HEREIN
|
||||||
|
--
|
||||||
|
IXRODS
|
||||||
|
BAAKRT
|
||||||
|
ETHLID
|
||||||
|
PLEAEC
|
||||||
|
|
||||||
|
BARKED
|
||||||
|
EXHORT
|
||||||
|
ITALIC
|
||||||
|
PLEADS
|
||||||
|
PARKED
|
||||||
|
--
|
||||||
|
ILEETT
|
||||||
|
VROCKY
|
||||||
|
BIFTCS
|
||||||
|
PNRILE
|
||||||
|
|
||||||
|
BLOCKS
|
||||||
|
INFECT
|
||||||
|
PRETTY
|
||||||
|
VIRILE
|
||||||
|
BLOCKY
|
||||||
|
--
|
||||||
|
UECIYA
|
||||||
|
GNPRIC
|
||||||
|
POLAEE
|
||||||
|
SATHKT
|
||||||
|
|
||||||
|
GOTHIC
|
||||||
|
PAPAYA
|
||||||
|
SECRET
|
||||||
|
UNLIKE
|
||||||
|
SACHET
|
||||||
|
--
|
||||||
|
RCRTUD
|
||||||
|
SEFKNM
|
||||||
|
PITAOE
|
||||||
|
BOCUPP
|
||||||
|
|
||||||
|
BOTTOM
|
||||||
|
PICKUP
|
||||||
|
REFUND
|
||||||
|
SCRAPE
|
||||||
|
RECTUM
|
||||||
|
--
|
||||||
|
EEPHON
|
||||||
|
CLSORA
|
||||||
|
SNIGMT
|
||||||
|
RIAMPS
|
||||||
|
|
||||||
|
CLAMPS
|
||||||
|
ENIGMA
|
||||||
|
RESORT
|
||||||
|
SIPHON
|
||||||
|
REPORT
|
||||||
|
--
|
||||||
|
VNONKD
|
||||||
|
IHPTTY
|
||||||
|
AMUIEE
|
||||||
|
CETUNT
|
||||||
|
|
||||||
|
ANOINT
|
||||||
|
CHUNKY
|
||||||
|
IMPUTE
|
||||||
|
VETTED
|
||||||
|
AMOUNT
|
||||||
|
--
|
||||||
|
ELUOWY
|
||||||
|
MHBLOR
|
||||||
|
WCITSN
|
||||||
|
OUTMAS
|
||||||
|
|
||||||
|
ELBOWS
|
||||||
|
MUTTON
|
||||||
|
OCULAR
|
||||||
|
WHIMSY
|
||||||
|
OUTLAY
|
||||||
|
--
|
||||||
|
TEMKRE
|
||||||
|
EYEBED
|
||||||
|
CNTNDS
|
||||||
|
DRCIAL
|
||||||
|
|
||||||
|
CYMBAL
|
||||||
|
DECKED
|
||||||
|
ENTIRE
|
||||||
|
TRENDS
|
||||||
|
DECIDE
|
||||||
|
--
|
||||||
|
QADRTO
|
||||||
|
IOESWT
|
||||||
|
HUHUCS
|
||||||
|
MNIADK
|
||||||
|
|
||||||
|
HAIRDO
|
||||||
|
INDUCT
|
||||||
|
MOHAWK
|
||||||
|
QUESTS
|
||||||
|
HOISTS
|
||||||
|
--
|
||||||
|
EIZNRE
|
||||||
|
SOQAID
|
||||||
|
WFFUGY
|
||||||
|
BEUICN
|
||||||
|
|
||||||
|
BOUNCE
|
||||||
|
EFFIGY
|
||||||
|
SEQUIN
|
||||||
|
WIZARD
|
||||||
|
BOUNCY
|
||||||
|
--
|
||||||
|
[eof]
|
|
@ -0,0 +1,179 @@
|
||||||
|
# 7x4, intermediate
|
||||||
|
# Try to find the optimal solution
|
||||||
|
BEUVATE
|
||||||
|
MAASEIT
|
||||||
|
SRTNLGN
|
||||||
|
GOOWIEY
|
||||||
|
|
||||||
|
BETWEEN
|
||||||
|
GRAVITY
|
||||||
|
MOONLIT
|
||||||
|
SAUSAGE
|
||||||
|
GRANITE
|
||||||
|
--
|
||||||
|
HEGDDSD
|
||||||
|
THNOEAS
|
||||||
|
CITURNT
|
||||||
|
ASEHUER
|
||||||
|
|
||||||
|
ASTOUND
|
||||||
|
CHEDDAR
|
||||||
|
HIGHEST
|
||||||
|
TENURES
|
||||||
|
TENURED
|
||||||
|
--
|
||||||
|
WNDIRAC
|
||||||
|
BEUEMEL
|
||||||
|
EOLNCIS
|
||||||
|
ADMCOME
|
||||||
|
|
||||||
|
ADMIRAL
|
||||||
|
BOUNCES
|
||||||
|
ENDEMIC
|
||||||
|
WELCOME
|
||||||
|
ADMIRES
|
||||||
|
--
|
||||||
|
SUUAMES
|
||||||
|
ULWPTPH
|
||||||
|
BRIURDE
|
||||||
|
TPPNOSD
|
||||||
|
|
||||||
|
BLUNTED
|
||||||
|
SUPPOSE
|
||||||
|
TRIUMPH
|
||||||
|
UPWARDS
|
||||||
|
TRIPODS
|
||||||
|
--
|
||||||
|
SLESVEC
|
||||||
|
NMAENUL
|
||||||
|
ETMDTIS
|
||||||
|
IERIFSE
|
||||||
|
|
||||||
|
ELASTIC
|
||||||
|
IMMENSE
|
||||||
|
NEEDFUL
|
||||||
|
STRIVES
|
||||||
|
SLEEVES
|
||||||
|
--
|
||||||
|
WPEBARB
|
||||||
|
RORCILE
|
||||||
|
AHJRKET
|
||||||
|
SDUUNCD
|
||||||
|
|
||||||
|
ADJUNCT
|
||||||
|
RHUBARB
|
||||||
|
SPECKLE
|
||||||
|
WORRIED
|
||||||
|
SPURNED
|
||||||
|
--
|
||||||
|
VEPUORD
|
||||||
|
HRRITEK
|
||||||
|
IMSDBNY
|
||||||
|
AITWILG
|
||||||
|
|
||||||
|
ARTWORK
|
||||||
|
HERDING
|
||||||
|
IMPUTED
|
||||||
|
VISIBLY
|
||||||
|
VISITED
|
||||||
|
--
|
||||||
|
ILLNRNS
|
||||||
|
SNFENMO
|
||||||
|
FICHGGE
|
||||||
|
AHIIELY
|
||||||
|
|
||||||
|
ALCHEMY
|
||||||
|
FILINGS
|
||||||
|
INFERNO
|
||||||
|
SHINGLE
|
||||||
|
ALLERGY
|
||||||
|
--
|
||||||
|
NCTWAOS
|
||||||
|
IOIECNN
|
||||||
|
OARAITG
|
||||||
|
FNFLGRD
|
||||||
|
|
||||||
|
FORWARD
|
||||||
|
INFECTS
|
||||||
|
NAILING
|
||||||
|
OCTAGON
|
||||||
|
FAILING
|
||||||
|
--
|
||||||
|
SHHOELY
|
||||||
|
ETTCLAS
|
||||||
|
TXSTMMN
|
||||||
|
OYIAKED
|
||||||
|
|
||||||
|
EXHALED
|
||||||
|
OTTOMAN
|
||||||
|
SYSTEMS
|
||||||
|
THICKLY
|
||||||
|
THICKEN
|
||||||
|
--
|
||||||
|
HNUSIHD
|
||||||
|
STCTSTT
|
||||||
|
WOAUGNE
|
||||||
|
IROIUEG
|
||||||
|
|
||||||
|
HOUSING
|
||||||
|
INCISED
|
||||||
|
STATUTE
|
||||||
|
WROUGHT
|
||||||
|
STATING
|
||||||
|
--
|
||||||
|
DACEANR
|
||||||
|
WNYTEEL
|
||||||
|
SXEAKLS
|
||||||
|
ERSWIDG
|
||||||
|
|
||||||
|
DRYWALL
|
||||||
|
EXCEEDS
|
||||||
|
SNEAKER
|
||||||
|
WASTING
|
||||||
|
EASTING
|
||||||
|
--
|
||||||
|
TTLEZAT
|
||||||
|
EEGTOSR
|
||||||
|
ADHBREL
|
||||||
|
SUVANOE
|
||||||
|
|
||||||
|
ADVERSE
|
||||||
|
ETHANOL
|
||||||
|
SELTZER
|
||||||
|
TUGBOAT
|
||||||
|
SEVERAL
|
||||||
|
--
|
||||||
|
SITKLLE
|
||||||
|
HUPIIOW
|
||||||
|
THAABAS
|
||||||
|
COSLCEL
|
||||||
|
|
||||||
|
CITABLE
|
||||||
|
HUSKIES
|
||||||
|
SHALLOW
|
||||||
|
TOPICAL
|
||||||
|
CUTICLE
|
||||||
|
--
|
||||||
|
STNIPSH
|
||||||
|
AIOUIOR
|
||||||
|
LNGPMEN
|
||||||
|
DYAASIC
|
||||||
|
|
||||||
|
ANGUISH
|
||||||
|
DYNAMIC
|
||||||
|
LIAISON
|
||||||
|
STOPPER
|
||||||
|
SNAPPER
|
||||||
|
--
|
||||||
|
CRNQRAS
|
||||||
|
AUFAIEL
|
||||||
|
MEHFSIT
|
||||||
|
GPOEUNA
|
||||||
|
|
||||||
|
APHASIA
|
||||||
|
CROQUET
|
||||||
|
GENERAL
|
||||||
|
MUFFINS
|
||||||
|
GENESIS
|
||||||
|
--
|
||||||
|
[eof]
|
|
@ -0,0 +1,520 @@
|
||||||
|
# 4x5, advanced
|
||||||
|
# Try to find the optimal solution
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# needs-work
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OWCS
|
||||||
|
QOGT
|
||||||
|
ZIOK
|
||||||
|
URID
|
||||||
|
KUEE
|
||||||
|
|
||||||
|
KICK
|
||||||
|
OWED
|
||||||
|
QUIT
|
||||||
|
URGE
|
||||||
|
ZOOS
|
||||||
|
OWES
|
||||||
|
--
|
||||||
|
LHUG
|
||||||
|
UOSM
|
||||||
|
CTER
|
||||||
|
NSRH
|
||||||
|
EICP
|
||||||
|
|
||||||
|
CHUG
|
||||||
|
ETCH
|
||||||
|
LISP
|
||||||
|
NORM
|
||||||
|
USER
|
||||||
|
COUP
|
||||||
|
--
|
||||||
|
OEIO
|
||||||
|
KNRZ
|
||||||
|
FHWP
|
||||||
|
VIZI
|
||||||
|
SUTB
|
||||||
|
|
||||||
|
FUZZ
|
||||||
|
KIWI
|
||||||
|
ONTO
|
||||||
|
SHIP
|
||||||
|
VERB
|
||||||
|
SNIP
|
||||||
|
--
|
||||||
|
IDDR
|
||||||
|
HUEY
|
||||||
|
UNNH
|
||||||
|
LISC
|
||||||
|
ZELO
|
||||||
|
|
||||||
|
HUSH
|
||||||
|
IDLY
|
||||||
|
LEER
|
||||||
|
UNDO
|
||||||
|
ZINC
|
||||||
|
LUSH
|
||||||
|
--
|
||||||
|
RROA
|
||||||
|
EPAU
|
||||||
|
OICP
|
||||||
|
UCRN
|
||||||
|
KEWI
|
||||||
|
|
||||||
|
ECRU
|
||||||
|
KIWI
|
||||||
|
ORCA
|
||||||
|
REAP
|
||||||
|
UPON
|
||||||
|
KERN
|
||||||
|
--
|
||||||
|
FHZK
|
||||||
|
DAOE
|
||||||
|
CUEP
|
||||||
|
ACAY
|
||||||
|
IWCD
|
||||||
|
|
||||||
|
AWAY
|
||||||
|
CHOP
|
||||||
|
DUCK
|
||||||
|
FAZE
|
||||||
|
ICED
|
||||||
|
FACE
|
||||||
|
--
|
||||||
|
OKEA
|
||||||
|
UROM
|
||||||
|
ITRD
|
||||||
|
CEGG
|
||||||
|
MLLE
|
||||||
|
|
||||||
|
CLOG
|
||||||
|
ITEM
|
||||||
|
MELD
|
||||||
|
OKRA
|
||||||
|
URGE
|
||||||
|
MERE
|
||||||
|
--
|
||||||
|
EERY
|
||||||
|
CUHB
|
||||||
|
OLET
|
||||||
|
GCFN
|
||||||
|
LNLO
|
||||||
|
|
||||||
|
CURB
|
||||||
|
ECHO
|
||||||
|
GLEN
|
||||||
|
LEFT
|
||||||
|
ONLY
|
||||||
|
CULT
|
||||||
|
--
|
||||||
|
SUCO
|
||||||
|
ERNC
|
||||||
|
VELL
|
||||||
|
OYHA
|
||||||
|
PCRY
|
||||||
|
|
||||||
|
ECHO
|
||||||
|
ORCA
|
||||||
|
PULL
|
||||||
|
SYNC
|
||||||
|
VERY
|
||||||
|
SELL
|
||||||
|
--
|
||||||
|
KRUS
|
||||||
|
YOAD
|
||||||
|
AKOK
|
||||||
|
OIIR
|
||||||
|
EGCY
|
||||||
|
|
||||||
|
ARID
|
||||||
|
EGOS
|
||||||
|
KICK
|
||||||
|
OKAY
|
||||||
|
YOUR
|
||||||
|
ARCS
|
||||||
|
--
|
||||||
|
GICR
|
||||||
|
UANC
|
||||||
|
RUUY
|
||||||
|
ZRRB
|
||||||
|
PPON
|
||||||
|
|
||||||
|
GRUB
|
||||||
|
PURR
|
||||||
|
RACY
|
||||||
|
UPON
|
||||||
|
ZINC
|
||||||
|
ZANY
|
||||||
|
--
|
||||||
|
AMNX
|
||||||
|
JKOA
|
||||||
|
OTZZ
|
||||||
|
LARM
|
||||||
|
EYIR
|
||||||
|
|
||||||
|
ATOM
|
||||||
|
EMIR
|
||||||
|
JAZZ
|
||||||
|
LYNX
|
||||||
|
OKRA
|
||||||
|
LAIR
|
||||||
|
--
|
||||||
|
MRLG
|
||||||
|
SAAS
|
||||||
|
WUIP
|
||||||
|
ABEM
|
||||||
|
HMOY
|
||||||
|
|
||||||
|
ABLY
|
||||||
|
HUES
|
||||||
|
MAIM
|
||||||
|
SMOG
|
||||||
|
WRAP
|
||||||
|
SUES
|
||||||
|
--
|
||||||
|
LNIC
|
||||||
|
GPTH
|
||||||
|
MING
|
||||||
|
REVW
|
||||||
|
EYAY
|
||||||
|
|
||||||
|
EPIC
|
||||||
|
GNAW
|
||||||
|
LEVY
|
||||||
|
MYTH
|
||||||
|
RING
|
||||||
|
ENVY
|
||||||
|
--
|
||||||
|
RAOA
|
||||||
|
OSNL
|
||||||
|
UOAG
|
||||||
|
AQES
|
||||||
|
WKUY
|
||||||
|
|
||||||
|
AQUA
|
||||||
|
OKAY
|
||||||
|
RANG
|
||||||
|
USES
|
||||||
|
WOOL
|
||||||
|
WOES
|
||||||
|
--
|
||||||
|
IENO
|
||||||
|
YASC
|
||||||
|
ZNDY
|
||||||
|
UILL
|
||||||
|
ETEM
|
||||||
|
|
||||||
|
EASY
|
||||||
|
ITEM
|
||||||
|
UNDO
|
||||||
|
YELL
|
||||||
|
ZINC
|
||||||
|
ZANY
|
||||||
|
--
|
||||||
|
OIIA
|
||||||
|
NURD
|
||||||
|
EMER
|
||||||
|
KKLL
|
||||||
|
ICKE
|
||||||
|
|
||||||
|
EMIR
|
||||||
|
ICED
|
||||||
|
KILL
|
||||||
|
NUKE
|
||||||
|
OKRA
|
||||||
|
NULL
|
||||||
|
--
|
||||||
|
DEOR
|
||||||
|
OUIB
|
||||||
|
ARLO
|
||||||
|
LLNG
|
||||||
|
CDSI
|
||||||
|
|
||||||
|
ALSO
|
||||||
|
CRIB
|
||||||
|
DELI
|
||||||
|
LUNG
|
||||||
|
ODOR
|
||||||
|
CLOG
|
||||||
|
--
|
||||||
|
AREY
|
||||||
|
LANG
|
||||||
|
WOTP
|
||||||
|
IEIH
|
||||||
|
KNCL
|
||||||
|
|
||||||
|
ARTY
|
||||||
|
INCH
|
||||||
|
KEEP
|
||||||
|
LONG
|
||||||
|
WAIL
|
||||||
|
ARCH
|
||||||
|
--
|
||||||
|
NAUA
|
||||||
|
GHOK
|
||||||
|
TEMN
|
||||||
|
UUWB
|
||||||
|
MPTG
|
||||||
|
|
||||||
|
GAWK
|
||||||
|
META
|
||||||
|
NUMB
|
||||||
|
THUG
|
||||||
|
UPON
|
||||||
|
NEON
|
||||||
|
--
|
||||||
|
BUXN
|
||||||
|
SDAZ
|
||||||
|
TNZI
|
||||||
|
EAEE
|
||||||
|
OMGG
|
||||||
|
|
||||||
|
BUZZ
|
||||||
|
EDGE
|
||||||
|
OMEN
|
||||||
|
SNAG
|
||||||
|
TAXI
|
||||||
|
SAGE
|
||||||
|
--
|
||||||
|
WIEH
|
||||||
|
AMIS
|
||||||
|
SJAR
|
||||||
|
QUUG
|
||||||
|
ODSZ
|
||||||
|
|
||||||
|
AJAR
|
||||||
|
ODES
|
||||||
|
QUIZ
|
||||||
|
SMUG
|
||||||
|
WISH
|
||||||
|
SUES
|
||||||
|
--
|
||||||
|
SDIC
|
||||||
|
ZOGR
|
||||||
|
AUNF
|
||||||
|
DROD
|
||||||
|
EIRY
|
||||||
|
|
||||||
|
ARID
|
||||||
|
DOOR
|
||||||
|
EDGY
|
||||||
|
SURF
|
||||||
|
ZINC
|
||||||
|
AIRY
|
||||||
|
--
|
||||||
|
GOUK
|
||||||
|
QEIH
|
||||||
|
WTYM
|
||||||
|
JLAS
|
||||||
|
IUCZ
|
||||||
|
|
||||||
|
GLUM
|
||||||
|
ITCH
|
||||||
|
JOYS
|
||||||
|
QUIZ
|
||||||
|
WEAK
|
||||||
|
GUYS
|
||||||
|
--
|
||||||
|
UXRM
|
||||||
|
OAAD
|
||||||
|
CUEY
|
||||||
|
RNDN
|
||||||
|
IMBO
|
||||||
|
|
||||||
|
CARD
|
||||||
|
IMAM
|
||||||
|
OXEN
|
||||||
|
RUBY
|
||||||
|
UNDO
|
||||||
|
OMEN
|
||||||
|
--
|
||||||
|
EAWA
|
||||||
|
YNON
|
||||||
|
AIEL
|
||||||
|
RTSS
|
||||||
|
VEDP
|
||||||
|
|
||||||
|
ATOP
|
||||||
|
ENDS
|
||||||
|
REEL
|
||||||
|
VISA
|
||||||
|
YAWN
|
||||||
|
AIDS
|
||||||
|
--
|
||||||
|
--
|
||||||
|
KLUH
|
||||||
|
OOOF
|
||||||
|
SPRI
|
||||||
|
HATY
|
||||||
|
FIWB
|
||||||
|
|
||||||
|
FLUB
|
||||||
|
HOOF
|
||||||
|
KIWI
|
||||||
|
OATH
|
||||||
|
SPRY
|
||||||
|
SLOB
|
||||||
|
--
|
||||||
|
EKBY
|
||||||
|
ARIT
|
||||||
|
TUVN
|
||||||
|
LEOO
|
||||||
|
CCHS
|
||||||
|
|
||||||
|
AKIN
|
||||||
|
CUBS
|
||||||
|
ECHO
|
||||||
|
LEVY
|
||||||
|
TROT
|
||||||
|
TRIO
|
||||||
|
--
|
||||||
|
MUPW
|
||||||
|
LEOD
|
||||||
|
SPUP
|
||||||
|
AVMN
|
||||||
|
TYLE
|
||||||
|
|
||||||
|
AVOW
|
||||||
|
LUMP
|
||||||
|
MELD
|
||||||
|
SPUN
|
||||||
|
TYPE
|
||||||
|
MULE
|
||||||
|
--
|
||||||
|
LUIY
|
||||||
|
WCHA
|
||||||
|
TAWN
|
||||||
|
EGLP
|
||||||
|
UHNO
|
||||||
|
|
||||||
|
ECHO
|
||||||
|
LAWN
|
||||||
|
TUNA
|
||||||
|
UGLY
|
||||||
|
WHIP
|
||||||
|
THIN
|
||||||
|
--
|
||||||
|
WQBA
|
||||||
|
HOIE
|
||||||
|
EADS
|
||||||
|
TWUN
|
||||||
|
ABOF
|
||||||
|
|
||||||
|
AQUA
|
||||||
|
EBBS
|
||||||
|
HOOF
|
||||||
|
TWIN
|
||||||
|
WADE
|
||||||
|
TABS
|
||||||
|
--
|
||||||
|
OCCO
|
||||||
|
MBPN
|
||||||
|
APOS
|
||||||
|
SSIE
|
||||||
|
EUHK
|
||||||
|
|
||||||
|
ASPS
|
||||||
|
ECHO
|
||||||
|
MUCK
|
||||||
|
OBOE
|
||||||
|
SPIN
|
||||||
|
SUCK
|
||||||
|
--
|
||||||
|
AUPY
|
||||||
|
WGAE
|
||||||
|
OKTO
|
||||||
|
EYOP
|
||||||
|
HHIS
|
||||||
|
|
||||||
|
AUTO
|
||||||
|
EGOS
|
||||||
|
HYPE
|
||||||
|
OKAY
|
||||||
|
WHIP
|
||||||
|
HUTS
|
||||||
|
--
|
||||||
|
LNDO
|
||||||
|
UAOT
|
||||||
|
OERN
|
||||||
|
IDWA
|
||||||
|
SKSL
|
||||||
|
|
||||||
|
IDOL
|
||||||
|
LAST
|
||||||
|
OKRA
|
||||||
|
SEWN
|
||||||
|
UNDO
|
||||||
|
LAWN
|
||||||
|
--
|
||||||
|
LOGN
|
||||||
|
OUUP
|
||||||
|
YNEH
|
||||||
|
EMCR
|
||||||
|
IDME
|
||||||
|
|
||||||
|
EDGE
|
||||||
|
INCH
|
||||||
|
LUMP
|
||||||
|
OMEN
|
||||||
|
YOUR
|
||||||
|
ONCE
|
||||||
|
--
|
||||||
|
UGNY
|
||||||
|
ENEE
|
||||||
|
SVLH
|
||||||
|
LOUN
|
||||||
|
ILCM
|
||||||
|
|
||||||
|
EVEN
|
||||||
|
INCH
|
||||||
|
LONE
|
||||||
|
SLUM
|
||||||
|
UGLY
|
||||||
|
SOLE
|
||||||
|
--
|
||||||
|
MUEA
|
||||||
|
DEGN
|
||||||
|
OOCH
|
||||||
|
EDMI
|
||||||
|
CPLY
|
||||||
|
|
||||||
|
COMA
|
||||||
|
DELI
|
||||||
|
EDGY
|
||||||
|
MUCH
|
||||||
|
OPEN
|
||||||
|
COLA
|
||||||
|
--
|
||||||
|
BHCK
|
||||||
|
HIPE
|
||||||
|
EYIT
|
||||||
|
WDUG
|
||||||
|
CUMN
|
||||||
|
|
||||||
|
BUCK
|
||||||
|
CHUG
|
||||||
|
EDIT
|
||||||
|
HYMN
|
||||||
|
WIPE
|
||||||
|
HYPE
|
||||||
|
--
|
||||||
|
EAEN
|
||||||
|
VCHO
|
||||||
|
BRZM
|
||||||
|
STIY
|
||||||
|
AUMZ
|
||||||
|
|
||||||
|
ARMY
|
||||||
|
BUZZ
|
||||||
|
ECHO
|
||||||
|
STEM
|
||||||
|
VAIN
|
||||||
|
BRIM
|
||||||
|
--
|
||||||
|
[eof]
|
|
@ -0,0 +1,43 @@
|
||||||
|
# 5x5, advanced
|
||||||
|
AANNE
|
||||||
|
SNMLG
|
||||||
|
CTPEH
|
||||||
|
UPZCP
|
||||||
|
BUUIL
|
||||||
|
|
||||||
|
APPLE
|
||||||
|
BUNCH
|
||||||
|
CAMEL
|
||||||
|
STUNG
|
||||||
|
UNZIP
|
||||||
|
SAUCE
|
||||||
|
--
|
||||||
|
AEOIW DLEOK WWNLI TCDBM SIIAD ALIBI DENIM SCOLD TWEAK WIDOW WIELD
|
||||||
|
ADIKR KUKEE VNOWN LOAPY BACCT ADAPT BAKER KNOWN LUCKY VOICE ADOPT
|
||||||
|
ACPVD VENPY ONATE PRMER KOCUS ARMED KNAVE OCCUR POPPY VENTS VENUE
|
||||||
|
AEUIN ETJOD SCCNY WRRRG GNEKO ACRID ENJOY GECKO STERN WRUNG STUNG
|
||||||
|
AFZEY PIMLR CUIIP OHFZA SDRMT ADMIT CHIMP OFFER PIZZA SURLY CURLY
|
||||||
|
AHHRF WETCR CRNDO FSOMH UOAEA AROMA CONDO FETCH USHER WHARF COACH
|
||||||
|
AHSMT EUIFB HDURE TRTKY DXOOL ADORE DRIFT EXTOL HUSKY THUMB DROOL
|
||||||
|
AIMFE WODMY CROET LLTCH YUIPL ALOFT CRIME LUMPY WITCH YODEL COMET
|
||||||
|
DBZZE ULTAS OOMYY NNEIM GIOOD DIZZY GLOOM NOMAD OBEYS UNTIE GLEAM
|
||||||
|
DWNZH BAGCP CEFML AIZUY MLUIC AWFUL BENCH CLUMP DIZZY MAGIC MANIC
|
||||||
|
FALUE AHAST OUCIB QCUMR TNTRC ANTIC FALSE OCCUR QUART THUMB TACIT
|
||||||
|
GIDIN UHOEE RARKH SULFY CNICO CHOKE GULCH RADIO SIREN UNIFY SILKY
|
||||||
|
GIGTY WSSID LROUC FOIEH EHDAL ESSAY FRIED GHOUL LOGIC WIDTH FROTH
|
||||||
|
GUUZY LOYOL RDZFN IEMNE FAFLD FUZZY GAFFE IDYLL LEMON ROUND FOUND
|
||||||
|
HUECG CRIBY SNBUM OHNAN BOROH BUNCH CREAM HOBBY ONION SHRUG HUNCH
|
||||||
|
ISOAN MACOE TESIP UPENS SNZUW ISSUE MACAW SPOON TEENS UNZIP MASON
|
||||||
|
LODEP TUULE OPGUL RHIMM HAVBY HOVEL LADLE OPIUM RUGBY THUMP ROGUE
|
||||||
|
LHUHC OSLCK TUGST UYIIA SARAL LYRIC OUGHT SALSA THICK USUAL SHUCK
|
||||||
|
OOIPD PHCAL RRBOE SEAGN VXOUW OXBOW PROUD REIGN SHAPE VOCAL PECAN
|
||||||
|
SNJAR RAPOY MOITL UIVIK TMOCC MAJOR RIVAL SMOCK TOPIC UNITY SAVOR
|
||||||
|
TTDIA SRBZY WIZGN PEOFE UAFAC PIZZA STOIC TAFFY URBAN WEDGE SEDAN
|
||||||
|
PHTLL TCLHR OICCY KEIUN MNEOK KNELL MELON OCCUR PITHY THICK ONION
|
||||||
|
HOINA SSEEN UMOTO RETGR MYHCK HYENA MOTTO REIGN SMOCK USHER METER
|
||||||
|
MORUK WEAOE KIYIW GRDPM SATAF GRAPE KAYAK MOTIF SERUM WIDOW MADAM
|
||||||
|
UNERP KDZGS YAOLD IMAIA OIRME IMAGE KARMA ODORS UNZIP YIELD IDOLS
|
||||||
|
SABUS KOMSR GMTAY HYOBT MIEHK GAMUT HOBBY KIOSK MYTHS SMEAR MOTHS
|
||||||
|
BNLEF SUNKI OFUAK ETTFN KAYUY BULKY ENNUI KAYAK OFTEN STUFF EATEN
|
||||||
|
PCCLY CEUOO KASKR ONBWN TOOUD COULD KNOWN OCCUR PESKY TABOO TACKY
|
||||||
|
[eof]
|
|
@ -0,0 +1,12 @@
|
||||||
|
BRSED
|
||||||
|
GMAGE
|
||||||
|
IAISF
|
||||||
|
P P
|
||||||
|
M
|
||||||
|
|
||||||
|
BASED
|
||||||
|
GRASP
|
||||||
|
GRIEF
|
||||||
|
IMAGE
|
||||||
|
PRISM
|
||||||
|
BRIEF
|
|
@ -0,0 +1,37 @@
|
||||||
|
ZIRST
|
||||||
|
GOARS
|
||||||
|
TRUNA
|
||||||
|
H NED
|
||||||
|
L E
|
||||||
|
|
||||||
|
GRUNT
|
||||||
|
HORSE
|
||||||
|
LINES
|
||||||
|
TIARA
|
||||||
|
ZONED
|
||||||
|
GIANT
|
||||||
|
GORED
|
||||||
|
GORES
|
||||||
|
GOURD
|
||||||
|
GRAND
|
||||||
|
GRANT
|
||||||
|
GRASS
|
||||||
|
HIRED
|
||||||
|
HIRES
|
||||||
|
HOARD
|
||||||
|
HORNS
|
||||||
|
HOUND
|
||||||
|
HOURS
|
||||||
|
HOUSE
|
||||||
|
LIARS
|
||||||
|
LINED
|
||||||
|
LOANS
|
||||||
|
LOUSE
|
||||||
|
TIRED
|
||||||
|
TIRES
|
||||||
|
TOAST
|
||||||
|
TONED
|
||||||
|
TONES
|
||||||
|
TOURS
|
||||||
|
TRUST
|
||||||
|
ZONES
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,56 @@
|
||||||
|
;license:MIT
|
||||||
|
;(c) 2020 by 4am
|
||||||
|
;
|
||||||
|
|
||||||
|
; soft switches
|
||||||
|
KBD = $C000 ; last key pressed (if any)
|
||||||
|
STOREOFF = $C000 ; STA then use the following 4 flags:
|
||||||
|
READMAINMEM = $C002 ; STA to read from main mem
|
||||||
|
READAUXMEM = $C003 ; STA to read from aux mem
|
||||||
|
WRITEMAINMEM = $C004 ; STA to write to main mem
|
||||||
|
WRITEAUXMEM = $C005 ; STA to write to aux mem
|
||||||
|
CLRC3ROM = $C00A ; STA to use internal Slot 3 ROM (required to use 128K and DHGR)
|
||||||
|
SETC3ROM = $C00B ; STA to use external Slot 3 ROM (required to detect VidHD in slot 3)
|
||||||
|
CLR80VID = $C00C ; 40 columns (also used to get out of DHGR mode)
|
||||||
|
SET80VID = $C00D ; 80 columns (also used to get into DHGR mode)
|
||||||
|
PRIMARYCHARSET= $C00E ; no mousetext for you
|
||||||
|
CLEARKBD = $C010 ; clear last key pressed
|
||||||
|
SPEAKER = $C030 ; chirp chirp
|
||||||
|
CLOCKCTL = $C034 ; bits 0-3 are IIgs border color (also VidHD)
|
||||||
|
GFXMODE = $C050
|
||||||
|
TEXTMODE = $C051
|
||||||
|
FULLGFX = $C052
|
||||||
|
MIXGFX = $C053
|
||||||
|
PAGE1 = $C054 ; page 1 (affects text, HGR, DHGR)
|
||||||
|
PAGE2 = $C055 ; page 2 (affects text, HGR, DHGR)
|
||||||
|
LORES = $C056
|
||||||
|
HIRES = $C057
|
||||||
|
|
||||||
|
; ROM routines and addresses
|
||||||
|
ROM_TEXT = $FB2F
|
||||||
|
ROM_MACHINEID =$FBB3
|
||||||
|
ROM_HOME = $FC58
|
||||||
|
ROM_WAIT = $FCA8
|
||||||
|
ROM_COUT = $FDED
|
||||||
|
ROM_NORMAL = $FE84 ; NORMAL text (instead of INVERSE or FLASH)
|
||||||
|
ROM_IN0 = $FE89 ; SETKBD
|
||||||
|
ROM_PR0 = $FE93 ; SETVID
|
||||||
|
|
||||||
|
; zero page
|
||||||
|
PARAM = $00 ; word (used by PARAMS_ON_STACK macro, so basically everywhere)
|
||||||
|
PTR = $02 ; word
|
||||||
|
SRC = $04 ; word
|
||||||
|
DEST = $06 ; word
|
||||||
|
SAVE = $08 ; word
|
||||||
|
HTAB = $24 ; byte
|
||||||
|
VTAB = $25 ; byte
|
||||||
|
RNDSEED = $4E ; word
|
||||||
|
|
||||||
|
; application constants
|
||||||
|
original_char = $ED ; byte
|
||||||
|
char = $EE ; byte
|
||||||
|
charrow = $EF ; byte
|
||||||
|
GENSCROLLDOWN = $0800 ; 0x0900 bytes
|
||||||
|
GENSCROLLUP = $1100 ; 0x0900 bytes
|
||||||
|
HGRLO = $1A00 ; 0xC0 bytes
|
||||||
|
HGRHI = $1B00 ; 0xC0 bytes
|
|
@ -0,0 +1,256 @@
|
||||||
|
;license:MIT
|
||||||
|
;(c) 2020 by 4am
|
||||||
|
;
|
||||||
|
; data storage routines for puzzles
|
||||||
|
;
|
||||||
|
|
||||||
|
puzzle_logical_width ; number of letters per word (4..7)
|
||||||
|
!byte 0
|
||||||
|
puzzle_logical_height ; number of rows with letters (1..5)
|
||||||
|
!byte 0
|
||||||
|
puzzle_offsets ; how far each column has been scrolled down from top of grid
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_data ; character data
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_data1
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_data2
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_data3
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_data4
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_data5
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_data6
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_data7
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_data8
|
||||||
|
!fill 8, 0
|
||||||
|
puzzle_word_count ; number of records in <puzzle_words>
|
||||||
|
!byte 0
|
||||||
|
puzzle_words ; 32 x 8-byte records
|
||||||
|
!fill 256, 0 ; each record is a <puzzle_logical_width>-length word, no prefix
|
||||||
|
|
||||||
|
InitPuzzle
|
||||||
|
; in: A = logical puzzle width (number of letters in each word, 4..7)
|
||||||
|
sta puzzle_logical_width
|
||||||
|
lda #0
|
||||||
|
sta puzzle_logical_height
|
||||||
|
sta puzzle_word_count
|
||||||
|
ldx #8
|
||||||
|
- sta puzzle_offsets-1, x
|
||||||
|
dex
|
||||||
|
bne -
|
||||||
|
- sta puzzle_words, x
|
||||||
|
inx
|
||||||
|
bne -
|
||||||
|
rts
|
||||||
|
|
||||||
|
AddLineToPuzzle
|
||||||
|
; in: A/Y points to <puzzle_logical_width> length character buffer (no prefix, no suffix)
|
||||||
|
; out: clobbers all registers
|
||||||
|
; clobbers $FE/$FF
|
||||||
|
+ST16 $FE
|
||||||
|
lda puzzle_logical_height
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
ldy #0
|
||||||
|
- lda ($FE), y
|
||||||
|
sta puzzle_data, x
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
cpy puzzle_logical_width
|
||||||
|
bne -
|
||||||
|
inc puzzle_logical_height
|
||||||
|
rts
|
||||||
|
|
||||||
|
AddTargetWordToPuzzle
|
||||||
|
; in: A/Y points to <puzzle_logical_width> length character buffer (no prefix, no suffix)
|
||||||
|
+ST16 $FE
|
||||||
|
lda puzzle_word_count
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
ldy #0
|
||||||
|
- lda ($FE), y
|
||||||
|
sta puzzle_words, x
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
cpy puzzle_logical_width
|
||||||
|
bne -
|
||||||
|
inc puzzle_word_count
|
||||||
|
rts
|
||||||
|
|
||||||
|
CheckForTargetWord
|
||||||
|
; in: none
|
||||||
|
; out: C clear if a target word was found on row 4
|
||||||
|
; C set if no target word found
|
||||||
|
+LDADDR puzzle_words
|
||||||
|
+ST16 $FE
|
||||||
|
ldx #0 ; word index
|
||||||
|
@checkword
|
||||||
|
ldy #0 ; character index
|
||||||
|
- lda puzzle_data4, y
|
||||||
|
and #$7F ; letters within puzzle have high bit set if they've been used before
|
||||||
|
cmp ($FE), y ; (which is fine, and on later puzzles is guaranteed to happen eventually)
|
||||||
|
bne @nextword
|
||||||
|
iny
|
||||||
|
cpy puzzle_logical_width
|
||||||
|
bne -
|
||||||
|
; found matching word
|
||||||
|
; set high bit on all letters in row 4
|
||||||
|
ldy #0
|
||||||
|
- lda puzzle_data4, y
|
||||||
|
ora #$80
|
||||||
|
sta puzzle_data4, y
|
||||||
|
iny
|
||||||
|
cpy puzzle_logical_width
|
||||||
|
bne -
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
@nextword
|
||||||
|
lda $FE
|
||||||
|
clc
|
||||||
|
adc #8
|
||||||
|
sta $FE
|
||||||
|
bcc +
|
||||||
|
inc $FF
|
||||||
|
+ inx
|
||||||
|
cpx puzzle_word_count
|
||||||
|
bne @checkword
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
ScrollPuzzleDown
|
||||||
|
; in: Y = logical column to scroll
|
||||||
|
; out: C clear if puzzle was scrolled down
|
||||||
|
; C set if puzzle was already as far down as it can go
|
||||||
|
; preserves X/Y
|
||||||
|
lda puzzle_offsets, y
|
||||||
|
cmp #4
|
||||||
|
beq @fail
|
||||||
|
|
||||||
|
lda puzzle_data7, y
|
||||||
|
sta puzzle_data8, y
|
||||||
|
|
||||||
|
lda puzzle_data6, y
|
||||||
|
sta puzzle_data7, y
|
||||||
|
|
||||||
|
lda puzzle_data5, y
|
||||||
|
sta puzzle_data6, y
|
||||||
|
|
||||||
|
lda puzzle_data4, y
|
||||||
|
sta puzzle_data5, y
|
||||||
|
|
||||||
|
lda puzzle_data3, y
|
||||||
|
sta puzzle_data4, y
|
||||||
|
|
||||||
|
lda puzzle_data2, y
|
||||||
|
sta puzzle_data3, y
|
||||||
|
|
||||||
|
lda puzzle_data1, y
|
||||||
|
sta puzzle_data2, y
|
||||||
|
|
||||||
|
lda puzzle_data, y
|
||||||
|
sta puzzle_data1, y
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta puzzle_data, y
|
||||||
|
|
||||||
|
lda puzzle_offsets, y
|
||||||
|
clc
|
||||||
|
adc #1
|
||||||
|
sta puzzle_offsets, y
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
@fail sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
ScrollPuzzleUp
|
||||||
|
; in: Y = logical column to scroll
|
||||||
|
; out: C clear if puzzle was scrolled up
|
||||||
|
; C set if puzzle was already as far up as it can go
|
||||||
|
; preserves X/Y
|
||||||
|
lda puzzle_offsets, y
|
||||||
|
clc
|
||||||
|
adc puzzle_logical_height
|
||||||
|
cmp #5
|
||||||
|
beq @fail
|
||||||
|
|
||||||
|
lda puzzle_data1, y
|
||||||
|
sta puzzle_data, y
|
||||||
|
|
||||||
|
lda puzzle_data2, y
|
||||||
|
sta puzzle_data1, y
|
||||||
|
|
||||||
|
lda puzzle_data3, y
|
||||||
|
sta puzzle_data2, y
|
||||||
|
|
||||||
|
lda puzzle_data4, y
|
||||||
|
sta puzzle_data3, y
|
||||||
|
|
||||||
|
lda puzzle_data5, y
|
||||||
|
sta puzzle_data4, y
|
||||||
|
|
||||||
|
lda puzzle_data6, y
|
||||||
|
sta puzzle_data5, y
|
||||||
|
|
||||||
|
lda puzzle_data7, y
|
||||||
|
sta puzzle_data6, y
|
||||||
|
|
||||||
|
lda puzzle_data8, y
|
||||||
|
sta puzzle_data7, y
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta puzzle_data8, y
|
||||||
|
|
||||||
|
lda puzzle_offsets, y
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
sta puzzle_offsets, y
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
@fail sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
RedrawPuzzle
|
||||||
|
jsr Home
|
||||||
|
jsr DrawThinLines
|
||||||
|
+LDADDR puzzle_data
|
||||||
|
+ST16 $FE
|
||||||
|
ldx #0 ; logical row
|
||||||
|
-- ldy #0 ; logical column
|
||||||
|
- lda ($FE), y
|
||||||
|
jsr DrawCharacter
|
||||||
|
iny
|
||||||
|
cpy puzzle_logical_width
|
||||||
|
bne -
|
||||||
|
lda $FE
|
||||||
|
clc
|
||||||
|
adc #8
|
||||||
|
sta $FE
|
||||||
|
bcc +
|
||||||
|
inc $FF
|
||||||
|
+ inx
|
||||||
|
cpx puzzle_logical_height
|
||||||
|
bne --
|
||||||
|
|
||||||
|
bit GFXMODE
|
||||||
|
rts
|
||||||
|
|
||||||
|
AnimatePuzzleIntoPlace
|
||||||
|
ldy #0
|
||||||
|
-- ldx #4
|
||||||
|
- jsr ScrollPuzzleDown
|
||||||
|
jsr ScrollDown
|
||||||
|
dex
|
||||||
|
bne -
|
||||||
|
iny
|
||||||
|
cpy #7
|
||||||
|
bne --
|
||||||
|
rts
|
|
@ -0,0 +1,41 @@
|
||||||
|
;license:MIT
|
||||||
|
;(c) 2020 by qkumba
|
||||||
|
;
|
||||||
|
; Functions to enable and disable VBL polling on various Apple II models
|
||||||
|
|
||||||
|
WaitForVBL
|
||||||
|
jmp WaitForVBL_iie ; SMC to RTS on a II+
|
||||||
|
|
||||||
|
UnwaitForVBL
|
||||||
|
rts ; SMC to JMP on a IIc
|
||||||
|
!word iUnwaitForVBL
|
||||||
|
|
||||||
|
iWaitForVBL
|
||||||
|
sei ; IIc is special
|
||||||
|
sta $C07F ; enable access to VBL register
|
||||||
|
sta $C05B ; enable VBL polling
|
||||||
|
sta $C07E ; disable access to VBL register
|
||||||
|
WaitForVBL_iie ; IIe/IIgs have a relatively sane VBL
|
||||||
|
; but it's reversed between the two
|
||||||
|
; so we default to IIe, and patch in
|
||||||
|
; the reverse case if it's a IIGS.
|
||||||
|
- bit $C019
|
||||||
|
patch_VBL_iigs1
|
||||||
|
bpl -
|
||||||
|
patch_VBL_iic1
|
||||||
|
- lda $C019 ; $c019 bit 7 is sticky, reset it (SMC->#$70 for IIc)
|
||||||
|
patch_VBL_iic2
|
||||||
|
patch_VBL_iigs2
|
||||||
|
bmi -
|
||||||
|
WaitForVBL_nop ; II/II+ have no easy VBL
|
||||||
|
rts
|
||||||
|
|
||||||
|
iUnwaitForVBL
|
||||||
|
- bit $C019
|
||||||
|
bpl -
|
||||||
|
lda $C070 ; $c019 bit 7 is sticky, reset it
|
||||||
|
sta $C07F ; enable access to VBL register
|
||||||
|
sta $C05A ; disable VBL polling
|
||||||
|
sta $C07E ; disable access to VBL register
|
||||||
|
cli
|
||||||
|
rts
|
|
@ -0,0 +1,45 @@
|
||||||
|
;license:MIT
|
||||||
|
;(c) 2020 by qkumba
|
||||||
|
;
|
||||||
|
; Identify platform and construct appropriate VBL routine
|
||||||
|
|
||||||
|
romid = $FBB3
|
||||||
|
; $38=][, $EA=][+, $06=//e compatible
|
||||||
|
ROMID_IIECOMPAT = 6
|
||||||
|
romid_ec = $FBC0
|
||||||
|
; $EA=//e original, $E0=//e enhanced, $E1=//e EDM, $00=//c
|
||||||
|
|
||||||
|
; IIGS
|
||||||
|
idroutine = $FE1F ; SEC, JSR $FE1F, BCS notgs
|
||||||
|
|
||||||
|
InitVBL
|
||||||
|
ldx romid
|
||||||
|
cpx #ROMID_IIECOMPAT
|
||||||
|
bne @build_none ; not a //e
|
||||||
|
lda romid_ec
|
||||||
|
beq @build_iic ; //c family
|
||||||
|
sec
|
||||||
|
jsr idroutine ; check for IIgs
|
||||||
|
bcs @NotGS
|
||||||
|
lda #$30
|
||||||
|
sta patch_VBL_iigs1
|
||||||
|
lda #$10
|
||||||
|
sta patch_VBL_iigs2
|
||||||
|
@NotGS
|
||||||
|
rts
|
||||||
|
@build_iic
|
||||||
|
lda #$70
|
||||||
|
sta patch_VBL_iic1+1
|
||||||
|
lda #$60
|
||||||
|
sta patch_VBL_iic2
|
||||||
|
lda #<iWaitForVBL
|
||||||
|
sta WaitForVBL+1
|
||||||
|
lda #>iWaitForVBL
|
||||||
|
sta WaitForVBL+2
|
||||||
|
lda #$4C
|
||||||
|
sta UnwaitForVBL
|
||||||
|
rts
|
||||||
|
@build_none
|
||||||
|
lda #$60
|
||||||
|
sta WaitForVBL
|
||||||
|
rts
|
|
@ -0,0 +1,176 @@
|
||||||
|
;license:MIT
|
||||||
|
;(c) 2020 by 4am
|
||||||
|
;
|
||||||
|
; common assembler macros (6502 compatible)
|
||||||
|
;
|
||||||
|
|
||||||
|
; .hgrlo, .hgr1hi will each be filled with $C0 bytes
|
||||||
|
; based on routine by John Brooks
|
||||||
|
; posted on comp.sys.apple2 on 2018-07-11
|
||||||
|
; https://groups.google.com/d/msg/comp.sys.apple2/v2HOfHOmeNQ/zD76fJg_BAAJ
|
||||||
|
!macro BUILD_HGR_LOOKUP_TABLES .hgrlo, .hgr1hi {
|
||||||
|
ldx #0
|
||||||
|
- txa
|
||||||
|
and #$F8
|
||||||
|
bpl +
|
||||||
|
ora #5
|
||||||
|
+ asl
|
||||||
|
bpl +
|
||||||
|
ora #5
|
||||||
|
+ asl
|
||||||
|
asl
|
||||||
|
sta .hgrlo,x
|
||||||
|
txa
|
||||||
|
and #7
|
||||||
|
rol
|
||||||
|
asl .hgrlo,x
|
||||||
|
rol
|
||||||
|
ora #$20
|
||||||
|
sta .hgr1hi,x
|
||||||
|
inx
|
||||||
|
cpx #$C0
|
||||||
|
bne -
|
||||||
|
}
|
||||||
|
|
||||||
|
; for functions that take parameters on the stack
|
||||||
|
; set (PARAM) to point to the parameters and
|
||||||
|
; move the stack pointer to the first byte after the parameters
|
||||||
|
; clobbers A,X,Y
|
||||||
|
!macro PARAMS_ON_STACK .bytes {
|
||||||
|
pla
|
||||||
|
sta PARAM
|
||||||
|
clc
|
||||||
|
adc #.bytes
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
sta PARAM+1
|
||||||
|
adc #0
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
pha
|
||||||
|
}
|
||||||
|
|
||||||
|
; for functions that take parameters on the stack
|
||||||
|
; load a 16-bit value from the parameters on the stack into A (low) and Y (high)
|
||||||
|
; (assumes PARAMS_ON_STACK was used first)
|
||||||
|
!macro LDPARAM .offset {
|
||||||
|
ldy #.offset
|
||||||
|
lda (PARAM),y
|
||||||
|
pha
|
||||||
|
iny
|
||||||
|
lda (PARAM),y
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
}
|
||||||
|
|
||||||
|
; for functions that take parameters on the stack
|
||||||
|
; load a 16-bit value from the parameters on the stack into A (low) and Y (high)
|
||||||
|
; then store it as new source
|
||||||
|
; (assumes PARAMS_ON_STACK was used first)
|
||||||
|
!macro LDPARAMPTR .offset,.dest {
|
||||||
|
ldy #.offset
|
||||||
|
lda (PARAM),y
|
||||||
|
sta .dest
|
||||||
|
iny
|
||||||
|
lda (PARAM),y
|
||||||
|
sta .dest+1
|
||||||
|
}
|
||||||
|
|
||||||
|
; load the address of .ptr into A (low) and Y (high)
|
||||||
|
!macro LDADDR .ptr {
|
||||||
|
lda #<.ptr
|
||||||
|
ldy #>.ptr
|
||||||
|
}
|
||||||
|
|
||||||
|
; load a 16-bit value into A (low) and Y (high)
|
||||||
|
!macro LD16 .ptr {
|
||||||
|
lda .ptr
|
||||||
|
ldy .ptr+1
|
||||||
|
}
|
||||||
|
|
||||||
|
; store a 16-bit value from A (low) and Y (high)
|
||||||
|
!macro ST16 .ptr {
|
||||||
|
sta .ptr
|
||||||
|
sty .ptr+1
|
||||||
|
}
|
||||||
|
|
||||||
|
; decrement a 16-bit value in A (low) and Y (high)
|
||||||
|
!macro DEC16 {
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
bcs +
|
||||||
|
dey
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
; increment a 16-bit value in A (low) and Y (high)
|
||||||
|
!macro INC16 {
|
||||||
|
clc
|
||||||
|
adc #1
|
||||||
|
bne +
|
||||||
|
iny
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
; compare a 16-bit value in A (low) and Y (high) to an absolute address
|
||||||
|
!macro CMP16ADDR .addr {
|
||||||
|
cmp .addr
|
||||||
|
bne +
|
||||||
|
cpy .addr+1
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
; compare a 16-bit value in A (low) and Y (high) to an immediate value
|
||||||
|
!macro CMP16 .val {
|
||||||
|
cmp #<.val
|
||||||
|
bne +
|
||||||
|
cpy #>.val
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
!macro LBPL .target {
|
||||||
|
bmi +
|
||||||
|
jmp .target
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
!macro LBNE .target {
|
||||||
|
beq +
|
||||||
|
jmp .target
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
!macro LBCS .target {
|
||||||
|
bcc +
|
||||||
|
jmp .target
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
!macro READ_ROM_NO_WRITE {
|
||||||
|
bit $C082
|
||||||
|
}
|
||||||
|
|
||||||
|
; use BIT to swallow the following 1-byte opcode
|
||||||
|
!macro HIDE_NEXT_BYTE {
|
||||||
|
!byte $24
|
||||||
|
}
|
||||||
|
|
||||||
|
; use BIT to swallow the following 2-byte opcode
|
||||||
|
!macro HIDE_NEXT_2_BYTES {
|
||||||
|
!byte $2C
|
||||||
|
}
|
||||||
|
|
||||||
|
!macro RTS_IF_KEY {
|
||||||
|
bit $c000
|
||||||
|
bpl +
|
||||||
|
rts
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
; debugging
|
||||||
|
!macro DEBUGWAIT {
|
||||||
|
bit $c010
|
||||||
|
- bit $c000
|
||||||
|
bpl -
|
||||||
|
bit $c010
|
||||||
|
}
|
|
@ -0,0 +1,134 @@
|
||||||
|
;license:MIT
|
||||||
|
;(c) 2020 by 4am
|
||||||
|
;
|
||||||
|
!cpu 6502
|
||||||
|
!to "build/MILLION.SYSTEM",plain
|
||||||
|
*=$2000
|
||||||
|
|
||||||
|
column = $FC
|
||||||
|
row = $FD
|
||||||
|
|
||||||
|
!source "src/constants.a" ; no code
|
||||||
|
!source "src/macros.a" ; no code
|
||||||
|
!source "src/million.init.a" ; one-time initialization code
|
||||||
|
!source "src/hw.vbl.init.a"
|
||||||
|
|
||||||
|
FirstMover
|
||||||
|
!pseudopc $4000 {
|
||||||
|
Start
|
||||||
|
jsr TitlePage
|
||||||
|
lda #7
|
||||||
|
jsr InitPuzzle
|
||||||
|
|
||||||
|
+LDADDR puzzleline1
|
||||||
|
jsr AddLineToPuzzle
|
||||||
|
+LDADDR puzzleline2
|
||||||
|
jsr AddLineToPuzzle
|
||||||
|
+LDADDR puzzleline3
|
||||||
|
jsr AddLineToPuzzle
|
||||||
|
|
||||||
|
+LDADDR targetword1
|
||||||
|
jsr AddTargetWordToPuzzle
|
||||||
|
+LDADDR targetword2
|
||||||
|
jsr AddTargetWordToPuzzle
|
||||||
|
+LDADDR targetword3
|
||||||
|
jsr AddTargetWordToPuzzle
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta selected_logical_column
|
||||||
|
jsr RedrawPuzzle
|
||||||
|
jsr AnimatePuzzleIntoPlace
|
||||||
|
jsr DrawColumnSelectionIndicator
|
||||||
|
bit $c010
|
||||||
|
jmp PlayEventLoop
|
||||||
|
|
||||||
|
selected_logical_column
|
||||||
|
!byte 0
|
||||||
|
|
||||||
|
PlayEventLoop
|
||||||
|
- lda $c000
|
||||||
|
bpl -
|
||||||
|
bit $c010
|
||||||
|
cmp #$8B ; up arrow
|
||||||
|
beq EventUpArrow
|
||||||
|
cmp #$8A ; down arrow
|
||||||
|
beq EventDownArrow
|
||||||
|
cmp #$88 ; left arrow
|
||||||
|
beq EventLeftArrow
|
||||||
|
cmp #$95 ; right arrow
|
||||||
|
beq EventRightArrow
|
||||||
|
jmp PlayEventLoop
|
||||||
|
|
||||||
|
EventUpArrow
|
||||||
|
ldy selected_logical_column
|
||||||
|
jsr ScrollPuzzleUp
|
||||||
|
bcs @fail
|
||||||
|
jsr ScrollUp
|
||||||
|
jsr CheckForTargetWord
|
||||||
|
bcc FoundTargetWord
|
||||||
|
bcs @done
|
||||||
|
@fail jsr SoftBell
|
||||||
|
@done jmp PlayEventLoop
|
||||||
|
|
||||||
|
EventDownArrow
|
||||||
|
ldy selected_logical_column
|
||||||
|
jsr ScrollPuzzleDown
|
||||||
|
bcs @fail
|
||||||
|
jsr ScrollDown
|
||||||
|
jsr CheckForTargetWord
|
||||||
|
bcc FoundTargetWord
|
||||||
|
bcs @done
|
||||||
|
@fail jsr SoftBell
|
||||||
|
@done jmp PlayEventLoop
|
||||||
|
|
||||||
|
FoundTargetWord
|
||||||
|
ldx #4
|
||||||
|
ldy #0
|
||||||
|
- lda puzzle_data4, y
|
||||||
|
jsr DrawCharacter
|
||||||
|
iny
|
||||||
|
cpy puzzle_logical_width
|
||||||
|
bne -
|
||||||
|
jmp PlayEventLoop
|
||||||
|
|
||||||
|
EventLeftArrow
|
||||||
|
ldy selected_logical_column
|
||||||
|
jsr EraseColumnSelectionIndicator
|
||||||
|
bne +
|
||||||
|
ldy puzzle_logical_width
|
||||||
|
+ dey
|
||||||
|
sty selected_logical_column
|
||||||
|
jsr DrawColumnSelectionIndicator
|
||||||
|
jmp PlayEventLoop
|
||||||
|
|
||||||
|
EventRightArrow
|
||||||
|
ldy selected_logical_column
|
||||||
|
jsr EraseColumnSelectionIndicator
|
||||||
|
iny
|
||||||
|
cpy puzzle_logical_width
|
||||||
|
bcc +
|
||||||
|
ldy #0
|
||||||
|
+ sty selected_logical_column
|
||||||
|
jsr DrawColumnSelectionIndicator
|
||||||
|
jmp PlayEventLoop
|
||||||
|
|
||||||
|
puzzleline1
|
||||||
|
!raw "PRTFELE"
|
||||||
|
puzzleline2
|
||||||
|
!raw "MHERINS"
|
||||||
|
puzzleline3
|
||||||
|
!raw "SIOTBET"
|
||||||
|
targetword1
|
||||||
|
!raw "MITTENS"
|
||||||
|
targetword2
|
||||||
|
!raw "PROFILE"
|
||||||
|
targetword3
|
||||||
|
!raw "SHERBET"
|
||||||
|
|
||||||
|
!source "src/ds.puzzle.a"
|
||||||
|
!source "src/hw.vbl.a"
|
||||||
|
!source "src/ui.title.a"
|
||||||
|
!source "src/ui.common.a"
|
||||||
|
!source "src/ui.font.a"
|
||||||
|
!source "src/ui.font.data.a"
|
||||||
|
}
|
|
@ -0,0 +1,275 @@
|
||||||
|
;license:MIT
|
||||||
|
;(c) 2020 by 4am
|
||||||
|
;
|
||||||
|
; initialize program, generate lookup tables and dynamically generated code
|
||||||
|
;
|
||||||
|
|
||||||
|
+READ_ROM_NO_WRITE
|
||||||
|
sta PRIMARYCHARSET
|
||||||
|
sta CLR80VID
|
||||||
|
sta STOREOFF
|
||||||
|
sta READMAINMEM
|
||||||
|
sta WRITEMAINMEM
|
||||||
|
jsr ROM_TEXT
|
||||||
|
jsr ROM_HOME
|
||||||
|
jsr ROM_NORMAL
|
||||||
|
jsr ROM_IN0
|
||||||
|
jsr ROM_PR0
|
||||||
|
+BUILD_HGR_LOOKUP_TABLES HGRLO, HGRHI
|
||||||
|
jsr InitScrollUp
|
||||||
|
jsr InitScrollDown
|
||||||
|
|
||||||
|
ldx #$20
|
||||||
|
ldy #0
|
||||||
|
@a lda FirstMover,y
|
||||||
|
@b sta $4000,y
|
||||||
|
iny
|
||||||
|
bne @a
|
||||||
|
inc @a+2
|
||||||
|
inc @b+2
|
||||||
|
dex
|
||||||
|
bne @a
|
||||||
|
jmp Start
|
||||||
|
|
||||||
|
InitScrollUp
|
||||||
|
lda #<GENSCROLLUP
|
||||||
|
sta $FE
|
||||||
|
lda #>GENSCROLLUP
|
||||||
|
sta $FF
|
||||||
|
ldy #$00
|
||||||
|
ldx #$00
|
||||||
|
@loadleft
|
||||||
|
inx
|
||||||
|
cpx #$55
|
||||||
|
bne +
|
||||||
|
lda #$A5 ; LDA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FE
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @storeleft
|
||||||
|
+ cpx #$6B
|
||||||
|
bne +
|
||||||
|
lda #$A5 ; LDA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FC
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @storeleft
|
||||||
|
+ lda #$B9 ; LDA addr,Y
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRLO, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRHI, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
@storeleft
|
||||||
|
dex
|
||||||
|
cpx #$55
|
||||||
|
bne +
|
||||||
|
lda #$85 ; STA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FE
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @loadright
|
||||||
|
+ cpx #$6B
|
||||||
|
bne +
|
||||||
|
lda #$85 ; STA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FC
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @loadright
|
||||||
|
+ lda #$99 ; STA addr,Y
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRLO, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRHI, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
@loadright
|
||||||
|
inx
|
||||||
|
cpx #$55
|
||||||
|
bne +
|
||||||
|
lda #$A5 ; LDA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FF
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @storeright
|
||||||
|
+ cpx #$6B
|
||||||
|
bne +
|
||||||
|
lda #$A5 ; LDA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FD
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @storeright
|
||||||
|
+ lda #$B9 ; LDA addr,Y
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRLO, x
|
||||||
|
clc
|
||||||
|
adc #1
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRHI, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
@storeright
|
||||||
|
dex
|
||||||
|
cpx #$55
|
||||||
|
bne +
|
||||||
|
lda #$85 ; STA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FF
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @next
|
||||||
|
+ cpx #$6B
|
||||||
|
bne +
|
||||||
|
lda #$85 ; STA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FD
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @next
|
||||||
|
+ lda #$99 ; STA addr,Y
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRLO, x
|
||||||
|
clc
|
||||||
|
adc #1
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRHI, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
@next
|
||||||
|
inx
|
||||||
|
cpx #$BF
|
||||||
|
+LBNE @loadleft
|
||||||
|
|
||||||
|
lda #$CA ; DEX
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$F0 ; BEQ
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$03
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$4C ; JMP
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #<GENSCROLLUP
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #>GENSCROLLUP
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$60 ; RTS
|
||||||
|
; /!\ execution falls through here
|
||||||
|
StoreAndInc
|
||||||
|
sta ($FE), y
|
||||||
|
iny
|
||||||
|
bne +
|
||||||
|
inc $FF
|
||||||
|
+ rts
|
||||||
|
|
||||||
|
InitScrollDown
|
||||||
|
lda #<GENSCROLLDOWN
|
||||||
|
sta $FE
|
||||||
|
lda #>GENSCROLLDOWN
|
||||||
|
sta $FF
|
||||||
|
ldy #$00
|
||||||
|
ldx #$BF
|
||||||
|
@loadleft
|
||||||
|
dex
|
||||||
|
cpx #$55
|
||||||
|
bne +
|
||||||
|
lda #$A5 ; LDA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FE
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @storeleft
|
||||||
|
+ cpx #$6B
|
||||||
|
bne +
|
||||||
|
lda #$A5 ; LDA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FC
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @storeleft
|
||||||
|
+ lda #$B9 ; LDA addr,Y
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRLO, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRHI, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
@storeleft
|
||||||
|
inx
|
||||||
|
cpx #$55
|
||||||
|
bne +
|
||||||
|
lda #$85 ; STA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FE
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @loadright
|
||||||
|
+ cpx #$6B
|
||||||
|
bne +
|
||||||
|
lda #$85 ; STA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FC
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @loadright
|
||||||
|
+ lda #$99 ; STA addr,Y
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRLO, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRHI, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
@loadright
|
||||||
|
dex
|
||||||
|
cpx #$55
|
||||||
|
bne +
|
||||||
|
lda #$A5 ; LDA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FF
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @storeright
|
||||||
|
+ cpx #$6B
|
||||||
|
bne +
|
||||||
|
lda #$A5 ; LDA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FD
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @storeright
|
||||||
|
+ lda #$B9 ; LDA addr,Y
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRLO, x
|
||||||
|
clc
|
||||||
|
adc #1
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRHI, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
@storeright
|
||||||
|
inx
|
||||||
|
cpx #$55
|
||||||
|
bne +
|
||||||
|
lda #$85 ; STA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FF
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @next
|
||||||
|
+ cpx #$6B
|
||||||
|
bne +
|
||||||
|
lda #$85 ; STA/zp
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$FD
|
||||||
|
jsr StoreAndInc
|
||||||
|
jmp @next
|
||||||
|
+ lda #$99 ; STA addr,Y
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRLO, x
|
||||||
|
clc
|
||||||
|
adc #1
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda HGRHI, x
|
||||||
|
jsr StoreAndInc
|
||||||
|
@next
|
||||||
|
dex
|
||||||
|
+LBNE @loadleft
|
||||||
|
|
||||||
|
lda #$CA ; DEX
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$F0 ; BEQ
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$03
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$4C ; JMP
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #<GENSCROLLDOWN
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #>GENSCROLLDOWN
|
||||||
|
jsr StoreAndInc
|
||||||
|
lda #$60 ; RTS
|
||||||
|
jmp StoreAndInc
|
|
@ -0,0 +1,165 @@
|
||||||
|
;license:MIT
|
||||||
|
;(c) 2020 by 4am
|
||||||
|
;
|
||||||
|
; common graphics functions
|
||||||
|
;
|
||||||
|
|
||||||
|
GlobalLeftMargin
|
||||||
|
; TODO other values for smaller puzzles
|
||||||
|
; $0A for 7-letter puzzles
|
||||||
|
!byte $0A
|
||||||
|
|
||||||
|
Home
|
||||||
|
; in: none, but assumes text screen 1 is clear (this is done at program startup)
|
||||||
|
; out: hi-res page 1 cleared but text screen 1 still displayed
|
||||||
|
bit PAGE1
|
||||||
|
bit FULLGFX
|
||||||
|
bit HIRES
|
||||||
|
bit TEXTMODE
|
||||||
|
ldx #$20
|
||||||
|
stx @erase+2
|
||||||
|
ldy #$00
|
||||||
|
tya
|
||||||
|
@erase sta $2000,y
|
||||||
|
iny
|
||||||
|
bne @erase
|
||||||
|
inc @erase+2
|
||||||
|
dex
|
||||||
|
bne @erase
|
||||||
|
rts
|
||||||
|
|
||||||
|
DrawThinLines
|
||||||
|
ldx #$55
|
||||||
|
jsr DrawThinLine
|
||||||
|
ldx #$6B
|
||||||
|
; /!\ execution falls through here
|
||||||
|
DrawThinLine
|
||||||
|
; in: X = HGR row (0x00..0xBF)
|
||||||
|
lda #$AA
|
||||||
|
ldy HGRLO, x
|
||||||
|
sty $FE
|
||||||
|
ldy HGRHI, x
|
||||||
|
sty $FF
|
||||||
|
ldy GlobalLeftMargin
|
||||||
|
dey
|
||||||
|
- sta ($FE), y
|
||||||
|
eor #$7F
|
||||||
|
iny
|
||||||
|
cpy #$1F ; TODO
|
||||||
|
bcc -
|
||||||
|
rts
|
||||||
|
|
||||||
|
ScrollDown
|
||||||
|
; in: Y = logical column to scroll
|
||||||
|
; out: X/Y preserved
|
||||||
|
stx @x+1
|
||||||
|
sty @y+1
|
||||||
|
ldx #$16
|
||||||
|
jsr LogicalColumnToPhysicalColumn
|
||||||
|
jsr InitScrollStorage
|
||||||
|
jsr WaitForVBL
|
||||||
|
jsr GENSCROLLDOWN
|
||||||
|
jsr UnwaitForVBL
|
||||||
|
@x ldx #$FD ; SMC
|
||||||
|
@y ldy #$FD ; SMC
|
||||||
|
rts
|
||||||
|
|
||||||
|
ScrollUp
|
||||||
|
; in: Y = logical column to scroll
|
||||||
|
; out: X/Y preserved
|
||||||
|
stx @x+1
|
||||||
|
sty @y+1
|
||||||
|
ldx #$16
|
||||||
|
jsr LogicalColumnToPhysicalColumn
|
||||||
|
jsr InitScrollStorage
|
||||||
|
jsr WaitForVBL
|
||||||
|
jsr GENSCROLLUP
|
||||||
|
jsr UnwaitForVBL
|
||||||
|
@x ldx #$FD ; SMC
|
||||||
|
@y ldy #$FD ; SMC
|
||||||
|
rts
|
||||||
|
|
||||||
|
InitScrollStorage
|
||||||
|
lda #$00
|
||||||
|
sta $FC
|
||||||
|
sta $FD
|
||||||
|
sta $FE
|
||||||
|
sta $FF
|
||||||
|
rts
|
||||||
|
|
||||||
|
LogicalColumnToPhysicalColumn
|
||||||
|
; in: Y contains logical column number
|
||||||
|
; out: Y contains physical byte offset to use against an HGR base address
|
||||||
|
; A clobbered
|
||||||
|
; X preserved
|
||||||
|
lda GlobalLeftMargin
|
||||||
|
clc
|
||||||
|
bcc +
|
||||||
|
- adc #$03
|
||||||
|
+ dey
|
||||||
|
bpl -
|
||||||
|
tay
|
||||||
|
rts
|
||||||
|
|
||||||
|
EraseColumnSelectionIndicator
|
||||||
|
; out: preserves X/Y
|
||||||
|
stx @x+1
|
||||||
|
sty @y+1
|
||||||
|
jsr DrawThinLines
|
||||||
|
@x ldx #$FD ; SMC
|
||||||
|
@y ldy #$FD ; SMC
|
||||||
|
rts
|
||||||
|
|
||||||
|
DrawColumnSelectionIndicator
|
||||||
|
; out: preserves X/Y
|
||||||
|
stx @x+1
|
||||||
|
sty @y+1
|
||||||
|
ldx #$55
|
||||||
|
jsr DrawOneSelectionIndicator
|
||||||
|
ldx #$6B
|
||||||
|
jsr DrawOneSelectionIndicator
|
||||||
|
@x ldx #$FD ; SMC
|
||||||
|
@y ldy #$FD ; SMC
|
||||||
|
rts
|
||||||
|
|
||||||
|
DrawOneSelectionIndicator
|
||||||
|
lda HGRLO, x
|
||||||
|
sta $FE
|
||||||
|
lda HGRHI, x
|
||||||
|
sta $FF
|
||||||
|
ldy GlobalLeftMargin
|
||||||
|
dey
|
||||||
|
lda #$D5
|
||||||
|
ldx selected_logical_column
|
||||||
|
beq +
|
||||||
|
- iny
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
eor #$7F
|
||||||
|
dex
|
||||||
|
bne -
|
||||||
|
+ ldx #4
|
||||||
|
- sta ($FE), y
|
||||||
|
eor #$7F
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bne -
|
||||||
|
rts
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; SoftBell
|
||||||
|
;
|
||||||
|
; in: none
|
||||||
|
; out: all registers and flags clobbered
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
SoftBell
|
||||||
|
ldx #32
|
||||||
|
- lda #2
|
||||||
|
jsr ROM_WAIT
|
||||||
|
bit SPEAKER
|
||||||
|
lda #33
|
||||||
|
jsr ROM_WAIT
|
||||||
|
bit SPEAKER
|
||||||
|
dex
|
||||||
|
bne -
|
||||||
|
rts
|
|
@ -0,0 +1,201 @@
|
||||||
|
;license:MIT
|
||||||
|
;(c) 2020 by 4am
|
||||||
|
;
|
||||||
|
; font drawing routines
|
||||||
|
;
|
||||||
|
|
||||||
|
!macro COMPUTE_DRAW_ADDRESSES {
|
||||||
|
ldx charrow
|
||||||
|
lda HGRLO, x
|
||||||
|
sta $F0
|
||||||
|
sta $F2
|
||||||
|
inc $F2
|
||||||
|
lda HGRHI, x
|
||||||
|
sta $F1 ; ($F0) -> base address of top row to draw (used for upper-left block of each character)
|
||||||
|
sta $F3 ; ($F2) -> base address + 1 of top row to draw (used for upper-right block of each character)
|
||||||
|
ldx char ; X = 0-based index into LeftFontRow0 array for the character we're drawing
|
||||||
|
ldy HTAB
|
||||||
|
}
|
||||||
|
|
||||||
|
!macro INC_AND_RECOMPUTE_DRAW_ADDRESSES {
|
||||||
|
inc charrow
|
||||||
|
+COMPUTE_DRAW_ADDRESSES
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawCharacter
|
||||||
|
; A contains character (0x41..0x5A)
|
||||||
|
; X contains logical line number (0x00..0x08)
|
||||||
|
; Y contains logical column number (0x00..0x0C)
|
||||||
|
; HGR row is (0x16 * X)
|
||||||
|
; which needs to total no more than 0xB0
|
||||||
|
; character will be drawn on HGR row, byte offset (GlobalLeftMargin + (3 * Y))
|
||||||
|
; which needs to total no more than 0x26
|
||||||
|
; preserves X/Y
|
||||||
|
; clobbers A/all flags
|
||||||
|
; clobbers $ED..$F7
|
||||||
|
sta original_char
|
||||||
|
and #$7F
|
||||||
|
sec
|
||||||
|
sbc #$41
|
||||||
|
bpl +
|
||||||
|
rts
|
||||||
|
+ sta char
|
||||||
|
stx @x+1
|
||||||
|
sty @y+1
|
||||||
|
jsr LogicalColumnToPhysicalColumn
|
||||||
|
sty HTAB
|
||||||
|
lda #$00
|
||||||
|
clc
|
||||||
|
bcc +
|
||||||
|
- adc #$16
|
||||||
|
+ dex
|
||||||
|
bpl -
|
||||||
|
sta charrow
|
||||||
|
|
||||||
|
+COMPUTE_DRAW_ADDRESSES
|
||||||
|
lda LeftFontRow0, x ; draw row 0, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow0, x ; draw row 0, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
bit original_char
|
||||||
|
bmi +
|
||||||
|
lda LeftFontRow1, x ; draw row 1, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow1, x ; draw row 1, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
jmp ++
|
||||||
|
+ lda #0
|
||||||
|
sta ($F0), y
|
||||||
|
sta ($F2), y
|
||||||
|
++
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
lda LeftFontRow2, x ; draw row 2, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow2, x ; draw row 2, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
bit original_char
|
||||||
|
bmi +
|
||||||
|
lda LeftFontRow3, x ; draw row 3, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow3, x ; draw row 3, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
jmp ++
|
||||||
|
+ lda #0
|
||||||
|
sta ($F0), y
|
||||||
|
sta ($F2), y
|
||||||
|
++
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
lda LeftFontRow4, x ; draw row 4, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow4, x ; draw row 4, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
bit original_char
|
||||||
|
bmi +
|
||||||
|
lda LeftFontRow5, x ; draw row 5, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow5, x ; draw row 5, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
jmp ++
|
||||||
|
+ lda #0
|
||||||
|
sta ($F0), y
|
||||||
|
sta ($F2), y
|
||||||
|
++
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
lda LeftFontRow6, x ; draw row 6, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow6, x ; draw row 6, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
bit original_char
|
||||||
|
bmi +
|
||||||
|
lda LeftFontRow7, x ; draw row 7, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow7, x ; draw row 7, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
jmp ++
|
||||||
|
+ lda #0
|
||||||
|
sta ($F0), y
|
||||||
|
sta ($F2), y
|
||||||
|
++
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
lda LeftFontRow8, x ; draw row 8, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow8, x ; draw row 8, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
bit original_char
|
||||||
|
bmi +
|
||||||
|
lda LeftFontRow9, x ; draw row 9, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow9, x ; draw row 9, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
jmp ++
|
||||||
|
+ lda #0
|
||||||
|
sta ($F0), y
|
||||||
|
sta ($F2), y
|
||||||
|
++
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
lda LeftFontRow10, x ; draw row 10, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow10, x ; draw row 10, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
bit original_char
|
||||||
|
bmi +
|
||||||
|
lda LeftFontRow11, x ; draw row 11, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow11, x ; draw row 11, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
jmp ++
|
||||||
|
+ lda #0
|
||||||
|
sta ($F0), y
|
||||||
|
sta ($F2), y
|
||||||
|
++
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
lda LeftFontRow12, x ; draw row 12, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow12, x ; draw row 12, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
bit original_char
|
||||||
|
bmi +
|
||||||
|
lda LeftFontRow13, x ; draw row 13, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow13, x ; draw row 13, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
jmp ++
|
||||||
|
+ lda #0
|
||||||
|
sta ($F0), y
|
||||||
|
sta ($F2), y
|
||||||
|
++
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
lda LeftFontRow14, x ; draw row 14, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow14, x ; draw row 14, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
|
||||||
|
+INC_AND_RECOMPUTE_DRAW_ADDRESSES
|
||||||
|
bit original_char
|
||||||
|
bmi +
|
||||||
|
lda LeftFontRow15, x ; draw row 15, byte 0
|
||||||
|
sta ($F0), y
|
||||||
|
lda RightFontRow15, x ; draw row 15, byte 1
|
||||||
|
sta ($F2), y
|
||||||
|
jmp ++
|
||||||
|
+ lda #0
|
||||||
|
sta ($F0), y
|
||||||
|
sta ($F2), y
|
||||||
|
++
|
||||||
|
@x ldx #$FD ; SMC
|
||||||
|
@y ldy #$FD ; SMC
|
||||||
|
rts
|
|
@ -0,0 +1,865 @@
|
||||||
|
; This file is automatically generated
|
||||||
|
LeftFontRow0
|
||||||
|
!byte $80 ; A
|
||||||
|
!byte $80 ; B
|
||||||
|
!byte $80 ; C
|
||||||
|
!byte $80 ; D
|
||||||
|
!byte $80 ; E
|
||||||
|
!byte $80 ; F
|
||||||
|
!byte $80 ; G
|
||||||
|
!byte $80 ; H
|
||||||
|
!byte $80 ; I
|
||||||
|
!byte $80 ; J
|
||||||
|
!byte $80 ; K
|
||||||
|
!byte $80 ; L
|
||||||
|
!byte $80 ; M
|
||||||
|
!byte $80 ; N
|
||||||
|
!byte $80 ; O
|
||||||
|
!byte $80 ; P
|
||||||
|
!byte $F0 ; Q
|
||||||
|
!byte $80 ; R
|
||||||
|
!byte $80 ; S
|
||||||
|
!byte $80 ; T
|
||||||
|
!byte $80 ; U
|
||||||
|
!byte $80 ; V
|
||||||
|
!byte $80 ; W
|
||||||
|
!byte $80 ; X
|
||||||
|
!byte $80 ; Y
|
||||||
|
!byte $80 ; Z
|
||||||
|
LeftFontRow1
|
||||||
|
!byte $FC ; A
|
||||||
|
!byte $FE ; B
|
||||||
|
!byte $E0 ; C
|
||||||
|
!byte $FE ; D
|
||||||
|
!byte $FE ; E
|
||||||
|
!byte $FE ; F
|
||||||
|
!byte $E0 ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $FC ; I
|
||||||
|
!byte $F0 ; J
|
||||||
|
!byte $FE ; K
|
||||||
|
!byte $FE ; L
|
||||||
|
!byte $9E ; M
|
||||||
|
!byte $9E ; N
|
||||||
|
!byte $E0 ; O
|
||||||
|
!byte $FE ; P
|
||||||
|
!byte $F8 ; Q
|
||||||
|
!byte $FE ; R
|
||||||
|
!byte $F0 ; S
|
||||||
|
!byte $FE ; T
|
||||||
|
!byte $BE ; U
|
||||||
|
!byte $BF ; V
|
||||||
|
!byte $BF ; W
|
||||||
|
!byte $FE ; X
|
||||||
|
!byte $BF ; Y
|
||||||
|
!byte $FC ; Z
|
||||||
|
LeftFontRow2
|
||||||
|
!byte $FC ; A
|
||||||
|
!byte $FE ; B
|
||||||
|
!byte $F8 ; C
|
||||||
|
!byte $FE ; D
|
||||||
|
!byte $FE ; E
|
||||||
|
!byte $FE ; F
|
||||||
|
!byte $F8 ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $FE ; I
|
||||||
|
!byte $F0 ; J
|
||||||
|
!byte $FE ; K
|
||||||
|
!byte $FE ; L
|
||||||
|
!byte $BE ; M
|
||||||
|
!byte $BE ; N
|
||||||
|
!byte $F8 ; O
|
||||||
|
!byte $FE ; P
|
||||||
|
!byte $FC ; Q
|
||||||
|
!byte $FE ; R
|
||||||
|
!byte $F8 ; S
|
||||||
|
!byte $FE ; T
|
||||||
|
!byte $BE ; U
|
||||||
|
!byte $BF ; V
|
||||||
|
!byte $BF ; W
|
||||||
|
!byte $FE ; X
|
||||||
|
!byte $BF ; Y
|
||||||
|
!byte $FC ; Z
|
||||||
|
LeftFontRow3
|
||||||
|
!byte $FC ; A
|
||||||
|
!byte $FE ; B
|
||||||
|
!byte $FC ; C
|
||||||
|
!byte $FE ; D
|
||||||
|
!byte $FE ; E
|
||||||
|
!byte $FE ; F
|
||||||
|
!byte $FC ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $FC ; I
|
||||||
|
!byte $F0 ; J
|
||||||
|
!byte $FE ; K
|
||||||
|
!byte $FE ; L
|
||||||
|
!byte $BE ; M
|
||||||
|
!byte $FC ; N
|
||||||
|
!byte $FC ; O
|
||||||
|
!byte $FE ; P
|
||||||
|
!byte $9C ; Q
|
||||||
|
!byte $FE ; R
|
||||||
|
!byte $FC ; S
|
||||||
|
!byte $FE ; T
|
||||||
|
!byte $BE ; U
|
||||||
|
!byte $BF ; V
|
||||||
|
!byte $BF ; W
|
||||||
|
!byte $FE ; X
|
||||||
|
!byte $BF ; Y
|
||||||
|
!byte $FC ; Z
|
||||||
|
LeftFontRow4
|
||||||
|
!byte $F0 ; A
|
||||||
|
!byte $B8 ; B
|
||||||
|
!byte $BC ; C
|
||||||
|
!byte $B8 ; D
|
||||||
|
!byte $B8 ; E
|
||||||
|
!byte $B8 ; F
|
||||||
|
!byte $BC ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $E0 ; I
|
||||||
|
!byte $80 ; J
|
||||||
|
!byte $B8 ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $FC ; M
|
||||||
|
!byte $FC ; N
|
||||||
|
!byte $BC ; O
|
||||||
|
!byte $B8 ; P
|
||||||
|
!byte $8E ; Q
|
||||||
|
!byte $B8 ; R
|
||||||
|
!byte $9C ; S
|
||||||
|
!byte $CE ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $9C ; V
|
||||||
|
!byte $8E ; W
|
||||||
|
!byte $B8 ; X
|
||||||
|
!byte $9C ; Y
|
||||||
|
!byte $9C ; Z
|
||||||
|
LeftFontRow5
|
||||||
|
!byte $F0 ; A
|
||||||
|
!byte $B8 ; B
|
||||||
|
!byte $9E ; C
|
||||||
|
!byte $B8 ; D
|
||||||
|
!byte $B8 ; E
|
||||||
|
!byte $B8 ; F
|
||||||
|
!byte $9E ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $E0 ; I
|
||||||
|
!byte $80 ; J
|
||||||
|
!byte $B8 ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $FC ; M
|
||||||
|
!byte $FC ; N
|
||||||
|
!byte $9E ; O
|
||||||
|
!byte $B8 ; P
|
||||||
|
!byte $8E ; Q
|
||||||
|
!byte $B8 ; R
|
||||||
|
!byte $9C ; S
|
||||||
|
!byte $CE ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $9C ; V
|
||||||
|
!byte $8C ; W
|
||||||
|
!byte $F0 ; X
|
||||||
|
!byte $B8 ; Y
|
||||||
|
!byte $9C ; Z
|
||||||
|
LeftFontRow6
|
||||||
|
!byte $B0 ; A
|
||||||
|
!byte $F8 ; B
|
||||||
|
!byte $8E ; C
|
||||||
|
!byte $B8 ; D
|
||||||
|
!byte $F8 ; E
|
||||||
|
!byte $B8 ; F
|
||||||
|
!byte $8E ; G
|
||||||
|
!byte $FC ; H
|
||||||
|
!byte $E0 ; I
|
||||||
|
!byte $80 ; J
|
||||||
|
!byte $B8 ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $FC ; M
|
||||||
|
!byte $DC ; N
|
||||||
|
!byte $8E ; O
|
||||||
|
!byte $B8 ; P
|
||||||
|
!byte $8E ; Q
|
||||||
|
!byte $B8 ; R
|
||||||
|
!byte $BC ; S
|
||||||
|
!byte $CE ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $B8 ; V
|
||||||
|
!byte $CC ; W
|
||||||
|
!byte $F0 ; X
|
||||||
|
!byte $F0 ; Y
|
||||||
|
!byte $9C ; Z
|
||||||
|
LeftFontRow7
|
||||||
|
!byte $B8 ; A
|
||||||
|
!byte $F8 ; B
|
||||||
|
!byte $8E ; C
|
||||||
|
!byte $B8 ; D
|
||||||
|
!byte $F8 ; E
|
||||||
|
!byte $F8 ; F
|
||||||
|
!byte $8E ; G
|
||||||
|
!byte $FC ; H
|
||||||
|
!byte $E0 ; I
|
||||||
|
!byte $80 ; J
|
||||||
|
!byte $F8 ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $DC ; M
|
||||||
|
!byte $DC ; N
|
||||||
|
!byte $8E ; O
|
||||||
|
!byte $B8 ; P
|
||||||
|
!byte $8E ; Q
|
||||||
|
!byte $F8 ; R
|
||||||
|
!byte $F8 ; S
|
||||||
|
!byte $CE ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $B8 ; V
|
||||||
|
!byte $CC ; W
|
||||||
|
!byte $E0 ; X
|
||||||
|
!byte $F0 ; Y
|
||||||
|
!byte $C0 ; Z
|
||||||
|
LeftFontRow8
|
||||||
|
!byte $F8 ; A
|
||||||
|
!byte $F8 ; B
|
||||||
|
!byte $8E ; C
|
||||||
|
!byte $B8 ; D
|
||||||
|
!byte $F8 ; E
|
||||||
|
!byte $F8 ; F
|
||||||
|
!byte $8E ; G
|
||||||
|
!byte $FC ; H
|
||||||
|
!byte $E0 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $F8 ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $DC ; M
|
||||||
|
!byte $9C ; N
|
||||||
|
!byte $8E ; O
|
||||||
|
!byte $F8 ; P
|
||||||
|
!byte $9C ; Q
|
||||||
|
!byte $F8 ; R
|
||||||
|
!byte $E0 ; S
|
||||||
|
!byte $C0 ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $B8 ; V
|
||||||
|
!byte $EC ; W
|
||||||
|
!byte $E0 ; X
|
||||||
|
!byte $E0 ; Y
|
||||||
|
!byte $E0 ; Z
|
||||||
|
LeftFontRow9
|
||||||
|
!byte $F8 ; A
|
||||||
|
!byte $B8 ; B
|
||||||
|
!byte $8E ; C
|
||||||
|
!byte $B8 ; D
|
||||||
|
!byte $B8 ; E
|
||||||
|
!byte $F8 ; F
|
||||||
|
!byte $8E ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $E0 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $F8 ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $DC ; M
|
||||||
|
!byte $9C ; N
|
||||||
|
!byte $8E ; O
|
||||||
|
!byte $F8 ; P
|
||||||
|
!byte $FC ; Q
|
||||||
|
!byte $F8 ; R
|
||||||
|
!byte $80 ; S
|
||||||
|
!byte $C0 ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $F0 ; V
|
||||||
|
!byte $EC ; W
|
||||||
|
!byte $F0 ; X
|
||||||
|
!byte $C0 ; Y
|
||||||
|
!byte $E0 ; Z
|
||||||
|
LeftFontRow10
|
||||||
|
!byte $FC ; A
|
||||||
|
!byte $B8 ; B
|
||||||
|
!byte $9E ; C
|
||||||
|
!byte $B8 ; D
|
||||||
|
!byte $B8 ; E
|
||||||
|
!byte $B8 ; F
|
||||||
|
!byte $9E ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $E0 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $B8 ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $9C ; M
|
||||||
|
!byte $9C ; N
|
||||||
|
!byte $9E ; O
|
||||||
|
!byte $F8 ; P
|
||||||
|
!byte $F8 ; Q
|
||||||
|
!byte $B8 ; R
|
||||||
|
!byte $8C ; S
|
||||||
|
!byte $C0 ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $F0 ; V
|
||||||
|
!byte $FC ; W
|
||||||
|
!byte $B8 ; X
|
||||||
|
!byte $C0 ; Y
|
||||||
|
!byte $B0 ; Z
|
||||||
|
LeftFontRow11
|
||||||
|
!byte $9C ; A
|
||||||
|
!byte $B8 ; B
|
||||||
|
!byte $BC ; C
|
||||||
|
!byte $B8 ; D
|
||||||
|
!byte $B8 ; E
|
||||||
|
!byte $B8 ; F
|
||||||
|
!byte $BC ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $E0 ; I
|
||||||
|
!byte $9E ; J
|
||||||
|
!byte $B8 ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $9C ; M
|
||||||
|
!byte $9C ; N
|
||||||
|
!byte $9C ; O
|
||||||
|
!byte $B8 ; P
|
||||||
|
!byte $E0 ; Q
|
||||||
|
!byte $B8 ; R
|
||||||
|
!byte $9C ; S
|
||||||
|
!byte $C0 ; T
|
||||||
|
!byte $BC ; U
|
||||||
|
!byte $E0 ; V
|
||||||
|
!byte $BC ; W
|
||||||
|
!byte $9C ; X
|
||||||
|
!byte $C0 ; Y
|
||||||
|
!byte $98 ; Z
|
||||||
|
LeftFontRow12
|
||||||
|
!byte $BF ; A
|
||||||
|
!byte $FE ; B
|
||||||
|
!byte $FC ; C
|
||||||
|
!byte $FE ; D
|
||||||
|
!byte $FE ; E
|
||||||
|
!byte $FE ; F
|
||||||
|
!byte $FC ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $FE ; I
|
||||||
|
!byte $FE ; J
|
||||||
|
!byte $FE ; K
|
||||||
|
!byte $FE ; L
|
||||||
|
!byte $FE ; M
|
||||||
|
!byte $BE ; N
|
||||||
|
!byte $FC ; O
|
||||||
|
!byte $FE ; P
|
||||||
|
!byte $B0 ; Q
|
||||||
|
!byte $FE ; R
|
||||||
|
!byte $FC ; S
|
||||||
|
!byte $F8 ; T
|
||||||
|
!byte $FC ; U
|
||||||
|
!byte $E0 ; V
|
||||||
|
!byte $BC ; W
|
||||||
|
!byte $BF ; X
|
||||||
|
!byte $F8 ; Y
|
||||||
|
!byte $FC ; Z
|
||||||
|
LeftFontRow13
|
||||||
|
!byte $BF ; A
|
||||||
|
!byte $FE ; B
|
||||||
|
!byte $F8 ; C
|
||||||
|
!byte $FE ; D
|
||||||
|
!byte $FE ; E
|
||||||
|
!byte $FE ; F
|
||||||
|
!byte $F8 ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $FE ; I
|
||||||
|
!byte $FC ; J
|
||||||
|
!byte $FE ; K
|
||||||
|
!byte $FE ; L
|
||||||
|
!byte $FE ; M
|
||||||
|
!byte $BE ; N
|
||||||
|
!byte $F8 ; O
|
||||||
|
!byte $FE ; P
|
||||||
|
!byte $F8 ; Q
|
||||||
|
!byte $FE ; R
|
||||||
|
!byte $FC ; S
|
||||||
|
!byte $F8 ; T
|
||||||
|
!byte $F8 ; U
|
||||||
|
!byte $E0 ; V
|
||||||
|
!byte $BC ; W
|
||||||
|
!byte $BF ; X
|
||||||
|
!byte $F8 ; Y
|
||||||
|
!byte $FC ; Z
|
||||||
|
LeftFontRow14
|
||||||
|
!byte $BF ; A
|
||||||
|
!byte $FE ; B
|
||||||
|
!byte $E0 ; C
|
||||||
|
!byte $FE ; D
|
||||||
|
!byte $FE ; E
|
||||||
|
!byte $FE ; F
|
||||||
|
!byte $E0 ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $FE ; I
|
||||||
|
!byte $F8 ; J
|
||||||
|
!byte $FE ; K
|
||||||
|
!byte $FE ; L
|
||||||
|
!byte $FE ; M
|
||||||
|
!byte $BE ; N
|
||||||
|
!byte $E0 ; O
|
||||||
|
!byte $FE ; P
|
||||||
|
!byte $FC ; Q
|
||||||
|
!byte $FE ; R
|
||||||
|
!byte $DC ; S
|
||||||
|
!byte $F8 ; T
|
||||||
|
!byte $F0 ; U
|
||||||
|
!byte $C0 ; V
|
||||||
|
!byte $98 ; W
|
||||||
|
!byte $BF ; X
|
||||||
|
!byte $F8 ; Y
|
||||||
|
!byte $FC ; Z
|
||||||
|
LeftFontRow15
|
||||||
|
!byte $80 ; A
|
||||||
|
!byte $80 ; B
|
||||||
|
!byte $80 ; C
|
||||||
|
!byte $80 ; D
|
||||||
|
!byte $80 ; E
|
||||||
|
!byte $80 ; F
|
||||||
|
!byte $80 ; G
|
||||||
|
!byte $80 ; H
|
||||||
|
!byte $80 ; I
|
||||||
|
!byte $80 ; J
|
||||||
|
!byte $80 ; K
|
||||||
|
!byte $80 ; L
|
||||||
|
!byte $80 ; M
|
||||||
|
!byte $80 ; N
|
||||||
|
!byte $80 ; O
|
||||||
|
!byte $80 ; P
|
||||||
|
!byte $FC ; Q
|
||||||
|
!byte $80 ; R
|
||||||
|
!byte $80 ; S
|
||||||
|
!byte $80 ; T
|
||||||
|
!byte $80 ; U
|
||||||
|
!byte $80 ; V
|
||||||
|
!byte $80 ; W
|
||||||
|
!byte $80 ; X
|
||||||
|
!byte $80 ; Y
|
||||||
|
!byte $80 ; Z
|
||||||
|
RightFontRow0
|
||||||
|
!byte $80 ; A
|
||||||
|
!byte $80 ; B
|
||||||
|
!byte $80 ; C
|
||||||
|
!byte $80 ; D
|
||||||
|
!byte $80 ; E
|
||||||
|
!byte $80 ; F
|
||||||
|
!byte $80 ; G
|
||||||
|
!byte $80 ; H
|
||||||
|
!byte $80 ; I
|
||||||
|
!byte $80 ; J
|
||||||
|
!byte $80 ; K
|
||||||
|
!byte $80 ; L
|
||||||
|
!byte $80 ; M
|
||||||
|
!byte $80 ; N
|
||||||
|
!byte $80 ; O
|
||||||
|
!byte $80 ; P
|
||||||
|
!byte $87 ; Q
|
||||||
|
!byte $80 ; R
|
||||||
|
!byte $80 ; S
|
||||||
|
!byte $80 ; T
|
||||||
|
!byte $80 ; U
|
||||||
|
!byte $80 ; V
|
||||||
|
!byte $80 ; W
|
||||||
|
!byte $80 ; X
|
||||||
|
!byte $80 ; Y
|
||||||
|
!byte $80 ; Z
|
||||||
|
RightFontRow1
|
||||||
|
!byte $83 ; A
|
||||||
|
!byte $87 ; B
|
||||||
|
!byte $BB ; C
|
||||||
|
!byte $87 ; D
|
||||||
|
!byte $BF ; E
|
||||||
|
!byte $BF ; F
|
||||||
|
!byte $BB ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $8F ; I
|
||||||
|
!byte $FF ; J
|
||||||
|
!byte $BE ; K
|
||||||
|
!byte $83 ; L
|
||||||
|
!byte $F8 ; M
|
||||||
|
!byte $BE ; N
|
||||||
|
!byte $87 ; O
|
||||||
|
!byte $87 ; P
|
||||||
|
!byte $8F ; Q
|
||||||
|
!byte $8F ; R
|
||||||
|
!byte $8D ; S
|
||||||
|
!byte $BF ; T
|
||||||
|
!byte $BE ; U
|
||||||
|
!byte $FE ; V
|
||||||
|
!byte $FC ; W
|
||||||
|
!byte $FE ; X
|
||||||
|
!byte $FE ; Y
|
||||||
|
!byte $9F ; Z
|
||||||
|
RightFontRow2
|
||||||
|
!byte $87 ; A
|
||||||
|
!byte $8F ; B
|
||||||
|
!byte $BF ; C
|
||||||
|
!byte $9F ; D
|
||||||
|
!byte $BF ; E
|
||||||
|
!byte $BF ; F
|
||||||
|
!byte $BF ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $9F ; I
|
||||||
|
!byte $FF ; J
|
||||||
|
!byte $FE ; K
|
||||||
|
!byte $83 ; L
|
||||||
|
!byte $FC ; M
|
||||||
|
!byte $BE ; N
|
||||||
|
!byte $9F ; O
|
||||||
|
!byte $9F ; P
|
||||||
|
!byte $9F ; Q
|
||||||
|
!byte $9F ; R
|
||||||
|
!byte $8F ; S
|
||||||
|
!byte $BF ; T
|
||||||
|
!byte $BE ; U
|
||||||
|
!byte $FE ; V
|
||||||
|
!byte $FC ; W
|
||||||
|
!byte $FE ; X
|
||||||
|
!byte $FE ; Y
|
||||||
|
!byte $9F ; Z
|
||||||
|
RightFontRow3
|
||||||
|
!byte $87 ; A
|
||||||
|
!byte $9F ; B
|
||||||
|
!byte $BF ; C
|
||||||
|
!byte $BF ; D
|
||||||
|
!byte $BF ; E
|
||||||
|
!byte $BF ; F
|
||||||
|
!byte $BF ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $8F ; I
|
||||||
|
!byte $FF ; J
|
||||||
|
!byte $FE ; K
|
||||||
|
!byte $83 ; L
|
||||||
|
!byte $FC ; M
|
||||||
|
!byte $9C ; N
|
||||||
|
!byte $BF ; O
|
||||||
|
!byte $9F ; P
|
||||||
|
!byte $9C ; Q
|
||||||
|
!byte $BF ; R
|
||||||
|
!byte $8F ; S
|
||||||
|
!byte $BF ; T
|
||||||
|
!byte $BE ; U
|
||||||
|
!byte $FE ; V
|
||||||
|
!byte $FC ; W
|
||||||
|
!byte $FE ; X
|
||||||
|
!byte $FE ; Y
|
||||||
|
!byte $8F ; Z
|
||||||
|
RightFontRow4
|
||||||
|
!byte $87 ; A
|
||||||
|
!byte $9C ; B
|
||||||
|
!byte $BC ; C
|
||||||
|
!byte $BC ; D
|
||||||
|
!byte $B8 ; E
|
||||||
|
!byte $B8 ; F
|
||||||
|
!byte $BC ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $81 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $9C ; K
|
||||||
|
!byte $80 ; L
|
||||||
|
!byte $BE ; M
|
||||||
|
!byte $9C ; N
|
||||||
|
!byte $BC ; O
|
||||||
|
!byte $BC ; P
|
||||||
|
!byte $B8 ; Q
|
||||||
|
!byte $BC ; R
|
||||||
|
!byte $8C ; S
|
||||||
|
!byte $BB ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $B8 ; V
|
||||||
|
!byte $F0 ; W
|
||||||
|
!byte $9C ; X
|
||||||
|
!byte $9C ; Y
|
||||||
|
!byte $8E ; Z
|
||||||
|
RightFontRow5
|
||||||
|
!byte $8E ; A
|
||||||
|
!byte $9C ; B
|
||||||
|
!byte $B8 ; C
|
||||||
|
!byte $F8 ; D
|
||||||
|
!byte $80 ; E
|
||||||
|
!byte $80 ; F
|
||||||
|
!byte $B8 ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $81 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $8E ; K
|
||||||
|
!byte $80 ; L
|
||||||
|
!byte $BE ; M
|
||||||
|
!byte $9C ; N
|
||||||
|
!byte $F8 ; O
|
||||||
|
!byte $B8 ; P
|
||||||
|
!byte $B8 ; Q
|
||||||
|
!byte $B8 ; R
|
||||||
|
!byte $80 ; S
|
||||||
|
!byte $BB ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $9C ; V
|
||||||
|
!byte $B1 ; W
|
||||||
|
!byte $8E ; X
|
||||||
|
!byte $9E ; Y
|
||||||
|
!byte $86 ; Z
|
||||||
|
RightFontRow6
|
||||||
|
!byte $8E ; A
|
||||||
|
!byte $8F ; B
|
||||||
|
!byte $B8 ; C
|
||||||
|
!byte $F0 ; D
|
||||||
|
!byte $83 ; E
|
||||||
|
!byte $80 ; F
|
||||||
|
!byte $B8 ; G
|
||||||
|
!byte $9F ; H
|
||||||
|
!byte $81 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $87 ; K
|
||||||
|
!byte $80 ; L
|
||||||
|
!byte $BE ; M
|
||||||
|
!byte $9D ; N
|
||||||
|
!byte $F0 ; O
|
||||||
|
!byte $B8 ; P
|
||||||
|
!byte $B8 ; Q
|
||||||
|
!byte $B8 ; R
|
||||||
|
!byte $80 ; S
|
||||||
|
!byte $BB ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $9C ; V
|
||||||
|
!byte $B3 ; W
|
||||||
|
!byte $87 ; X
|
||||||
|
!byte $8F ; Y
|
||||||
|
!byte $83 ; Z
|
||||||
|
RightFontRow7
|
||||||
|
!byte $8E ; A
|
||||||
|
!byte $8F ; B
|
||||||
|
!byte $80 ; C
|
||||||
|
!byte $F0 ; D
|
||||||
|
!byte $87 ; E
|
||||||
|
!byte $87 ; F
|
||||||
|
!byte $80 ; G
|
||||||
|
!byte $9F ; H
|
||||||
|
!byte $81 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $83 ; K
|
||||||
|
!byte $90 ; L
|
||||||
|
!byte $BB ; M
|
||||||
|
!byte $9D ; N
|
||||||
|
!byte $F0 ; O
|
||||||
|
!byte $BC ; P
|
||||||
|
!byte $B8 ; Q
|
||||||
|
!byte $9F ; R
|
||||||
|
!byte $87 ; S
|
||||||
|
!byte $BB ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $9E ; V
|
||||||
|
!byte $B3 ; W
|
||||||
|
!byte $83 ; X
|
||||||
|
!byte $87 ; Y
|
||||||
|
!byte $81 ; Z
|
||||||
|
RightFontRow8
|
||||||
|
!byte $9F ; A
|
||||||
|
!byte $9F ; B
|
||||||
|
!byte $80 ; C
|
||||||
|
!byte $F0 ; D
|
||||||
|
!byte $83 ; E
|
||||||
|
!byte $87 ; F
|
||||||
|
!byte $FF ; G
|
||||||
|
!byte $9F ; H
|
||||||
|
!byte $81 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $8F ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $BB ; M
|
||||||
|
!byte $9F ; N
|
||||||
|
!byte $F0 ; O
|
||||||
|
!byte $BF ; P
|
||||||
|
!byte $9C ; Q
|
||||||
|
!byte $8F ; R
|
||||||
|
!byte $8F ; S
|
||||||
|
!byte $83 ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $8E ; V
|
||||||
|
!byte $B7 ; W
|
||||||
|
!byte $87 ; X
|
||||||
|
!byte $87 ; Y
|
||||||
|
!byte $80 ; Z
|
||||||
|
RightFontRow9
|
||||||
|
!byte $9F ; A
|
||||||
|
!byte $B8 ; B
|
||||||
|
!byte $80 ; C
|
||||||
|
!byte $F0 ; D
|
||||||
|
!byte $B8 ; E
|
||||||
|
!byte $87 ; F
|
||||||
|
!byte $FF ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $81 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $8F ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $BB ; M
|
||||||
|
!byte $9F ; N
|
||||||
|
!byte $F0 ; O
|
||||||
|
!byte $9F ; P
|
||||||
|
!byte $9F ; Q
|
||||||
|
!byte $8F ; R
|
||||||
|
!byte $9E ; S
|
||||||
|
!byte $83 ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $8E ; V
|
||||||
|
!byte $B6 ; W
|
||||||
|
!byte $87 ; X
|
||||||
|
!byte $83 ; Y
|
||||||
|
!byte $9C ; Z
|
||||||
|
RightFontRow10
|
||||||
|
!byte $9F ; A
|
||||||
|
!byte $B8 ; B
|
||||||
|
!byte $80 ; C
|
||||||
|
!byte $F8 ; D
|
||||||
|
!byte $B8 ; E
|
||||||
|
!byte $80 ; F
|
||||||
|
!byte $FF ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $81 ; I
|
||||||
|
!byte $8E ; J
|
||||||
|
!byte $9C ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $B9 ; M
|
||||||
|
!byte $9E ; N
|
||||||
|
!byte $F8 ; O
|
||||||
|
!byte $87 ; P
|
||||||
|
!byte $8F ; Q
|
||||||
|
!byte $9E ; R
|
||||||
|
!byte $9C ; S
|
||||||
|
!byte $83 ; T
|
||||||
|
!byte $9C ; U
|
||||||
|
!byte $87 ; V
|
||||||
|
!byte $BE ; W
|
||||||
|
!byte $8E ; X
|
||||||
|
!byte $83 ; Y
|
||||||
|
!byte $9C ; Z
|
||||||
|
RightFontRow11
|
||||||
|
!byte $B8 ; A
|
||||||
|
!byte $B8 ; B
|
||||||
|
!byte $B8 ; C
|
||||||
|
!byte $BC ; D
|
||||||
|
!byte $B8 ; E
|
||||||
|
!byte $80 ; F
|
||||||
|
!byte $B8 ; G
|
||||||
|
!byte $9C ; H
|
||||||
|
!byte $81 ; I
|
||||||
|
!byte $8F ; J
|
||||||
|
!byte $9C ; K
|
||||||
|
!byte $B8 ; L
|
||||||
|
!byte $B8 ; M
|
||||||
|
!byte $9E ; N
|
||||||
|
!byte $BC ; O
|
||||||
|
!byte $80 ; P
|
||||||
|
!byte $87 ; Q
|
||||||
|
!byte $BC ; R
|
||||||
|
!byte $9C ; S
|
||||||
|
!byte $83 ; T
|
||||||
|
!byte $9E ; U
|
||||||
|
!byte $87 ; V
|
||||||
|
!byte $BE ; W
|
||||||
|
!byte $9C ; X
|
||||||
|
!byte $83 ; Y
|
||||||
|
!byte $9C ; Z
|
||||||
|
RightFontRow12
|
||||||
|
!byte $FE ; A
|
||||||
|
!byte $BF ; B
|
||||||
|
!byte $BF ; C
|
||||||
|
!byte $BF ; D
|
||||||
|
!byte $BF ; E
|
||||||
|
!byte $83 ; F
|
||||||
|
!byte $BF ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $9F ; I
|
||||||
|
!byte $8F ; J
|
||||||
|
!byte $F9 ; K
|
||||||
|
!byte $BF ; L
|
||||||
|
!byte $FE ; M
|
||||||
|
!byte $9C ; N
|
||||||
|
!byte $BF ; O
|
||||||
|
!byte $83 ; P
|
||||||
|
!byte $90 ; Q
|
||||||
|
!byte $FD ; R
|
||||||
|
!byte $9F ; S
|
||||||
|
!byte $9F ; T
|
||||||
|
!byte $9F ; U
|
||||||
|
!byte $83 ; V
|
||||||
|
!byte $BC ; W
|
||||||
|
!byte $FE ; X
|
||||||
|
!byte $9F ; Y
|
||||||
|
!byte $9F ; Z
|
||||||
|
RightFontRow13
|
||||||
|
!byte $FE ; A
|
||||||
|
!byte $9F ; B
|
||||||
|
!byte $BF ; C
|
||||||
|
!byte $9F ; D
|
||||||
|
!byte $BF ; E
|
||||||
|
!byte $83 ; F
|
||||||
|
!byte $BF ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $9F ; I
|
||||||
|
!byte $87 ; J
|
||||||
|
!byte $F9 ; K
|
||||||
|
!byte $BF ; L
|
||||||
|
!byte $FE ; M
|
||||||
|
!byte $9C ; N
|
||||||
|
!byte $9F ; O
|
||||||
|
!byte $83 ; P
|
||||||
|
!byte $BF ; Q
|
||||||
|
!byte $F9 ; R
|
||||||
|
!byte $8F ; S
|
||||||
|
!byte $9F ; T
|
||||||
|
!byte $8F ; U
|
||||||
|
!byte $83 ; V
|
||||||
|
!byte $9C ; W
|
||||||
|
!byte $FE ; X
|
||||||
|
!byte $9F ; Y
|
||||||
|
!byte $9F ; Z
|
||||||
|
RightFontRow14
|
||||||
|
!byte $FE ; A
|
||||||
|
!byte $8F ; B
|
||||||
|
!byte $8F ; C
|
||||||
|
!byte $87 ; D
|
||||||
|
!byte $BF ; E
|
||||||
|
!byte $83 ; F
|
||||||
|
!byte $8F ; G
|
||||||
|
!byte $BE ; H
|
||||||
|
!byte $9F ; I
|
||||||
|
!byte $83 ; J
|
||||||
|
!byte $F1 ; K
|
||||||
|
!byte $BF ; L
|
||||||
|
!byte $FE ; M
|
||||||
|
!byte $98 ; N
|
||||||
|
!byte $87 ; O
|
||||||
|
!byte $83 ; P
|
||||||
|
!byte $BF ; Q
|
||||||
|
!byte $F1 ; R
|
||||||
|
!byte $87 ; S
|
||||||
|
!byte $9F ; T
|
||||||
|
!byte $87 ; U
|
||||||
|
!byte $83 ; V
|
||||||
|
!byte $9C ; W
|
||||||
|
!byte $FE ; X
|
||||||
|
!byte $9F ; Y
|
||||||
|
!byte $9F ; Z
|
||||||
|
RightFontRow15
|
||||||
|
!byte $80 ; A
|
||||||
|
!byte $80 ; B
|
||||||
|
!byte $80 ; C
|
||||||
|
!byte $80 ; D
|
||||||
|
!byte $80 ; E
|
||||||
|
!byte $80 ; F
|
||||||
|
!byte $80 ; G
|
||||||
|
!byte $80 ; H
|
||||||
|
!byte $80 ; I
|
||||||
|
!byte $80 ; J
|
||||||
|
!byte $80 ; K
|
||||||
|
!byte $80 ; L
|
||||||
|
!byte $80 ; M
|
||||||
|
!byte $80 ; N
|
||||||
|
!byte $80 ; O
|
||||||
|
!byte $80 ; P
|
||||||
|
!byte $9F ; Q
|
||||||
|
!byte $80 ; R
|
||||||
|
!byte $80 ; S
|
||||||
|
!byte $80 ; T
|
||||||
|
!byte $80 ; U
|
||||||
|
!byte $80 ; V
|
||||||
|
!byte $80 ; W
|
||||||
|
!byte $80 ; X
|
||||||
|
!byte $80 ; Y
|
||||||
|
!byte $80 ; Z
|
|
@ -0,0 +1,130 @@
|
||||||
|
TitlePage
|
||||||
|
jsr Home
|
||||||
|
;TODO add logical-width parameter
|
||||||
|
jsr DrawThinLines
|
||||||
|
|
||||||
|
lda #3
|
||||||
|
sta row
|
||||||
|
+LDADDR title
|
||||||
|
+ST16 $FE
|
||||||
|
-- lda #6
|
||||||
|
sta column
|
||||||
|
- ldy column
|
||||||
|
lda ($FE), y
|
||||||
|
ldx row
|
||||||
|
jsr DrawCharacter
|
||||||
|
dec column
|
||||||
|
bpl -
|
||||||
|
lda $FE
|
||||||
|
clc
|
||||||
|
adc #7
|
||||||
|
sta $FE
|
||||||
|
bcc +
|
||||||
|
inc $FF
|
||||||
|
+ inc row
|
||||||
|
lda row
|
||||||
|
cmp #6
|
||||||
|
bne --
|
||||||
|
|
||||||
|
bit GFXMODE
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
|
||||||
|
ldy #$00
|
||||||
|
jsr ScrollUp
|
||||||
|
ldy #$02
|
||||||
|
jsr ScrollDown
|
||||||
|
iny
|
||||||
|
jsr ScrollUp
|
||||||
|
ldy #$05
|
||||||
|
jsr ScrollDown
|
||||||
|
iny
|
||||||
|
jsr ScrollUp
|
||||||
|
|
||||||
|
@loop
|
||||||
|
+RTS_IF_KEY
|
||||||
|
lda #$00
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
|
||||||
|
ldy #$00
|
||||||
|
jsr ScrollDown
|
||||||
|
jsr ScrollDown
|
||||||
|
iny
|
||||||
|
jsr ScrollDown
|
||||||
|
iny
|
||||||
|
jsr ScrollUp
|
||||||
|
iny
|
||||||
|
jsr ScrollDown
|
||||||
|
iny
|
||||||
|
jsr ScrollDown
|
||||||
|
iny
|
||||||
|
jsr ScrollUp
|
||||||
|
iny
|
||||||
|
jsr ScrollDown
|
||||||
|
jsr ScrollDown
|
||||||
|
|
||||||
|
+RTS_IF_KEY
|
||||||
|
lda #$00
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
|
||||||
|
ldy #$00
|
||||||
|
jsr ScrollUp
|
||||||
|
ldy #$02
|
||||||
|
jsr ScrollUp
|
||||||
|
iny
|
||||||
|
jsr ScrollDown
|
||||||
|
ldy #$05
|
||||||
|
jsr ScrollUp
|
||||||
|
iny
|
||||||
|
jsr ScrollUp
|
||||||
|
|
||||||
|
+RTS_IF_KEY
|
||||||
|
lda #$00
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
jsr ROM_WAIT
|
||||||
|
+RTS_IF_KEY
|
||||||
|
rts
|
||||||
|
!if 0 {
|
||||||
|
ldy #$00
|
||||||
|
jsr ScrollUp
|
||||||
|
iny
|
||||||
|
jsr ScrollUp
|
||||||
|
iny
|
||||||
|
jsr ScrollDown
|
||||||
|
jsr ScrollDown
|
||||||
|
iny
|
||||||
|
jsr ScrollUp
|
||||||
|
jsr ScrollUp
|
||||||
|
iny
|
||||||
|
jsr ScrollUp
|
||||||
|
iny
|
||||||
|
jsr ScrollDown
|
||||||
|
jsr ScrollDown
|
||||||
|
iny
|
||||||
|
jsr ScrollUp
|
||||||
|
|
||||||
|
jmp @loop
|
||||||
|
}
|
||||||
|
title
|
||||||
|
!raw "PELTEOT"
|
||||||
|
!raw "LIRFICS"
|
||||||
|
!raw "M TL RN"
|
Loading…
Reference in New Issue