Commodore VIC-20 / C64 / 128 и TheC64Mini, 101 токенизированный бейсик байтов
Вот запутанный список с использованием сокращений ключевых слов Commodore BASIC:
0dEfnb(x)=sG(xaNb):inputa$:fOi=1tolen(a$):b=64:c$=mI(a$,i,1):fOj=0to6
1?rI(str$(fnb(aS(c$))),1);:b=b/2:nEj:?" ";:nE
Здесь в целях пояснения приведен незапутанный символический листинг:
0 def fn b(x)=sgn(x and b)
1 input a$
2 for i=1 to len(a$)
3 let b=64
4 let c$=mid$(a$,i,1)
5 for j=0 to 6
6 print right$(str$(fn b(asc(c$))),1);
7 let b=b/2
8 next j
9 print " ";
10 next i
Функция, fn b
объявленная в нулевой строке, принимает числовой параметр, x
который AND
редактируется со значением b
; SGN затем используется для преобразования x and b
в 1
или0
.
Первая строка принимает строковый ввод в переменную a$
, и цикл начинается (обозначается i
) до длины этого ввода. b
представляет каждый бит от 6-го до 0-го бита. c$
занимает каждый символ строки в позиции i
.
строка 5 запускает цикл для проверки каждой битовой позиции; right$
используется в строке 6 для устранения проблемы автоформатирования, когда Commodore BASIC отображает число, преобразуя выходные данные fn b
в строку; asc(c$)
преобразует текущий символ в его код ascii как десятичное значение.
Строка 7 представляет следующее битовое значение. Цикл j
заканчивается перед печатью пробела, затем последний цикл i
заканчивается.