|
Faultless
#09
24 мая 1998 |
|
NEWS of Picon - Проект будущего ПЗУ. Подпрограммы BASIC 48.

----------------------------------------
Темы:Очередная точка зрения о компьюте-
рах,проект будущего ПЗУ , подпрограммы
BASIC 48.
Автор:Власенко Юрий (PI con.)
----------------------------------------
Вот и настал тот час , когда мне предо-
ставили слово.В кругах программистов я
не очень известен, так же обстоит дело
в хакерских и других популярных назва-
ниях компютерной программатики.Но это
не дает право на то, чтобы мнение наших
асов превозобладало над здравым смыс-
лом.
Вы сразу же спросите,что же он хочет
сказать этим выражением и какой смысл
вложен в эти , нестоль льстивые слова, в
адрес видных програмистов.
Дело в том , что многие программисты и
схемотехники сетуют на то,что дескать
зачем делать доработки к спектрумовским
машинам,если они скоро уйдут с рынка.
Многие говорят и так:что зачем Спекруму
своя видеокарта и другая доработка в
плане усовершенствования данной машины
если уже существуют такие монстры как
IBM или AMIGA, не проще ли будет взять
ту же материнку из IBM, выкусить проц,
допаять к Спектруму, и все в порядке,у
вас появится своя полу-IBM,да, да именно
это у вас и получится , а проще сказать
уродливая машина, не напоминающая ни IBM
ни Спектрум даже, если она у вас и будет
работать, то ни одного програмного обес-
печения вы не найдете к ней.А что-же
говорить о массовых обладателях Спект-
румов,которые не в состоянии купить себе
IBM или AMIGу , но в состоянии купить
Спектрум и со временем сделать доработку
к своему детищу.
Мне конечно известен саркастический
ответ по этому поводу всех схемотех-
ников и программистов,потому, что им уже
лень что-нибудь делать для Спектрума,
так-как уже существуют более мощные и
совершенные компьютеры и поэтому гораздо
легче разломать один компьютер , чтобы
присобачить к другому , нежели сделать
что нибудь новое.
В таком случае ни лучше сразу взять
IBM или AMIGу и не ломать их, чтобы
удовлетворить всех Синклеристов.
Но пока существует Синклер и пока суще-
ствуют запросы на доработку к нему, то
схемотехникам и программистам не дадут
покоя.
В этом я, и многие другие пользователи
Синклера согласятся со мной,и,наверное
поддержат мою точку зрения.
К тому же мног. программисты не считают
48к машину за что-нибудь стоящее и раз-
рабатывают свои программы в основном на
128к , а что будет лет через пять:может
тогда и 128к машина станет нечто смешным
по отношению к более мощным.Я конечно не
против развития Синклера и увеличен. его
памяти (я сам владею PENTAGONOM с памят.
512к,турборежимом и кеш-памятью 32к),так
что же теперь,всех у кого компютер по-
хуже, заставлять все это делать со своей
машиной для того,чтобы увидеть демки
или насладится игрушкой на 512к.
Да, расширять свои возможности должен
каждый если у него есть деньги и желан.,
но программистам стоит создавать свои
шедевры и для более слабых машин, скажем
1 или 2 уровня игры , а остальные уровни
для 128к, при этом предупредив пользова-
теля.Я не думаю что это так сложно.А с
системами еще гораздо проще,ведь они
по сути занимают память 2-4 килобайта,а
некоторые и того меньше.
Поэтому я думаю,что стоит задуматся над
этими проблемами, и не спешить по скорее
переходить на более мощные компютеры,не
обеспечив при этом основных пользовате-
лей.Потому,что на мой взгляд дело обсто-
ит именно так,как в свое время говорили
революционеры "Мы наш,мы новый мир пос-
роим",не стоит повторять ошибки,которые
потом никакими усилиями не исправишь.
Ведь все, кто перешел на 128к ...,IBM,
AMIGA, и т.д. в сое время начинали с 48К
в редком случае 128к машины,а теперь
ставят себя на уровень зарубеж. програ-
ммистов работающих в основном на фирму,
которая в свою очередь имеет в своем сос
таве большой арсен. программистов,схемо-
техников,художников и музыкантов.
Ну а Синклер в основном,жив за счет
народного творчества и энтузиазма програ
ммистов самоуч.,или программистов котор.
в начале восхищались этой машиной, а
потом продали ее за "30 серебрянников"
тем,кому эта машина стоит поперек горла.
Так давайте не будем идти на поводу у
знаменитых фирм,будущее которых,пока еще
не определено, хотя в данный период они
и занимают приоритетные места на рынке.
Вы правы в том,что я много говорю о
тех или иных проблемах,а конкретно не
даю никаких ответов на них.И это пра-
вильно,ведь я не призываю всех кто уже
имеет в своем арсенале IBM ... и т.д.
вновь возвращатся к Спектруму, я лишь
призываю отдать должное этой машине,
которая в свою очередь дала им возмож-
ность стать программистами как таковыми.
Я не сомневаюсь,что немного найдется
программистов котор. с уверенност. могут
сказать,что они что-то смогли сделать на
IBM, за исключением того,что они руси-
фицируют зарубежные программы , при этом
извращая саму программу и вставляя в
нее свое имя и радуясь очередной хак-
керской работой.Это тоже нужно,но оно
не делает нам чести.Наша компютерная
технология на самом низком уровне,но
способности програмистов и хаккеров
довольно высокие , с чем и поздравляю
всех IBM-щиков и AMIG-ников,которые
не хотят нас понять , ведь мы для них
нечто,напоминающее динозавра,существо
которое вот,вот должно умереть.Но ведь
динозавры не вымерли за один день,и
люди не стали людьми мгновенно,а
начинали свою жизнь из палки и камня.
Так давайте же задумаемся над тем,
что стоит ли изобретать атомную бомбу
если мы еще не научились пользоватся
палкой.
Все эти слова я говорю в адрес всех
журналов ,которые не раз в своих номерах
обсуждают эту проблему.В одних они
пишут о IBM и AMIGA клубах,в других они
же осуждают их.Моя точка зрения по
этому вопроссу такова; "Не стоит при
покупке пылесоса , выбрасывать веник из
своего дома.Наверняка он вам будет
гораздо чаще нужен , нежели новенький
пылесос,ведь не весь муссор является
мусором и не все можно убрать с помо-
щью пылесоса."
Поэтому я , в заключении хочу сказать
всем пользователям , что IBM-это хорошо
если она у вас есть , но Синклер гораздо
лучше,потому что он есть у всех.
Эти слова,я считаю должны стать как бы
девизом,для дальнейшей работы над прог -
раммами для Синклера,так и для поддержки
самого Синклера, как компьютера,ставшего
для многих по истине компютером номер 1.
На этом я с вами прощаюсь до следующего
выпуска журнала,и если кто-то захочет
продолжить спор на эту тему,прошу писать
в мой адрес в любой выпускаемый журнал
или по адресу:
310055 Украина
г.Харьков,ул.2-й пятилетки,44
Власенко Юрию (PIcon).
(PIcon) означает PI constant в
сокращенном виде.
С вами снова я PIcon ,прошу не путать
со словом Бикон или ему подобными.И вот
снова я хочу поговорить о Синклере и
его проблемах.Ведь никому не секрет,
что ПЗУ у Синклера не идеальное и имеет
немало ошибок , к тому же работает не
понятно как.Но это не единственная и
не самая страшная ошибка тех,кто делал
прошивку ПЗУ.Самое страшное в том,что
версий Синклера столько , сколько самих
ошибок и недоработок в самом Синклере.
Простыми словами сказать можно так,
еще ни одному программисту в мире не
удалось сделать программу,работающей
на всех версиях без сбоев и глюков,
или вообще работающей.
Это невольно наталкивает на мысль,что
Синклер является каким то полигоном для
испытания программного обеспечения и
проверки квалификации программиста в
знании всех имеющихся версий и способ-
ностью последнего знать о всех недора-
ботках каждой из этих машин.
Я не думаю что,кто-то из программистов
может с уверенностью заявить о том,что
он знает как работает та или иная версия
Синклера,и в чем состоят ее недоработки,
которые зачастую выдают за оригинальное
схемотехническое решение какой-то
проблемы,имеющийся в других версиях.
Эта проблема порождает много других
проблем , являющихся состыковкой всех
програм с разными версиями Синклера.
Многие программисты борятся с ней тем,
что пишут программы заведомо выбранного
типа машин и предупреждают об этом своих
пользователей, другие же пишут подпрог-
раммы,определяющие тип машины и подстра-
иваются под него.
Но это далеко не идеальное решение сло-
жившейся ситуации, так-как она требует
дополнительной памяти для определения
версии и типа компютера, так,и знание
всех его недоработок.
Самым лучшим образом можно было бы
сделать прошивку ПЗУ, которая сама опре
деляла бы,может ли данный компютер рабо-
тать с этой программой или нет.
При этом достаточно выделить часть
системных переменных для занесения в
нее типа компьютера и размер в килобай-
тах,на который расчитанна та или иная
программа.
Тогда любой программист,даже начинающ.,
сможет сам внести переменные и спокойно
писать программу не задумываясь о том,
что надо еще писать програмку для опре-
деления версии.Ведь это занимает много
времени и памяти компьют. ,а иногда явля
ется одной из причин головной боли,приво
дящей к осложнениям здоровья.
К тому же,версий самих Синклеров сто-
лько много , а ПЗУ используется во всех
одна и та старой разработки,
версии 5.03-5.04 редко 5.01, хотя уже
есть и версии типа 6.04.
Я имел честь познакомится с ней ,но к
моему сожалению ничего нового в ней
нет,разве что вставлена музыка,необнуля
емые банки памяти при сбросе и вмонти-
рована старая на данный момент версия
STS это то,что касается BASIC 128!.
Не считая того что исключ. расширенный
вариант BASIC 128 и заменен на обычный
BASIC 48 в режиме 128 килобайт который
исключает возможность пользоваться опера
тором PLAY,RAM-диском и другими возмож-
ностями для программированния из BASICа.
А изменения в TR-DOS были внесены насто
лько смешные и никому не нужные что,об
этом нехочется даже говорить.Во первых
было сказанно что MAGIC исправлен и
теперь он выгружает все банки памяти,не
зависимо от того,были они включены или
нет,но на самом деле этого нет и в
помине,разве что адрес обработки MAGICа
перенесен в другое место.Кроме этого
говорится о том, что вставлены программы
для быстрого чтения и записи секторов.
Я незнаю,может они и быстрее чем обычн.
подпрограммы,находящиеся по адресу 15635
но я этого не заметил,кроме того можно
было бы сделать одну подпрограмму для
чтения и записи,а переписывать одно и
тоже два раза,изменив при этом ряд пере-
ходов и вовсе не нужно.
Кроме того какой #$% пишет подпрограмку
для работы в ПЗУ и использует при этом
команды типа
ld ix,#3EF5:push ix:jp #3D2F
Ведь ты и так находишься в ПЗУ и все
обращения можно делать напрямую к ВГ93
или в крайнем случае так:
jp #3EF5
если хочешь использовать стандартную про
шивку.Видимо подпрограммы были разрабо-
танны и испробованы в ОЗУ,а потом безо
всяких изменений перенесены в ПЗУ.Тогда
мне не понятно,а зачем писались команды
в ПЗУ для обращения напрямую к портам
ВГ93. Кроме этого-зачем плодить в ПЗУ
кучу таких команд как,
in a,(#1F):ret
out (#1F),a:ret
in a,(#3f):ret
out (#3f),a:ret
...
...
in a,(#FF):ret
out (#FF),a:ret
не легче было бы сделать так,
in a,(c):ret
out (c),a:ret
хотя в последней команде нет надобности,
так как она уже существует в стандартном
ПЗУ.Кроме этого хочу сказать о том,что
многие пишут и говорят в своих журналах
якобы прямой команды для чтен. порта #1F
в ПЗУ нет.Это неправда ,посмотрите адрес
#3C30 и вы наверняка ее там увидите.
Не могу сказать кто и когда ее туда вста-
вил,но она есть в вер. ПЗУ 5.03 и 5.04.
Поговаривают, якобы это сделали для
совместимости компьютера Профи , но это
не столь важно,главное что обращение к
порту #1F там уже существует.
В заключении хочу привести в примере
небольшую програмку для быстрого чтения
-записи , которая занимает немного
памяти,и к тому же довольно скоростная,
1.5-2 секунды загрузки (выгрузки) 160
секторов или в переводе 40 килобайт
памяти в столь короткое время и при
этом не глючит от типа дисковода,
если он считается тормозным.
Кроме того,она универсальная как для
чтения,так и для записи.
Первая часть служит для демонстрации
ее работы,вторая часть основная.
HL=адрес,куда или откуда грузить.
DE=начальный трек,сектор.
D-трек 0...159.
E-сектор 0...15.
B=количество считываемых секторов
C=четное число-чтение,нечетное-запись.
A=дисковод (0,1,2,3)
org #4000
LOAD ld hl,24500:ld de,#0000:ld a,0
ld c,0:ld b,160:call quit
ret
SAVE ld hl,24500:ld de,#0000:ld a,1
ld c,1:ld b,160:call quit
ret
----------------------------------------
quit ld (#5cde),a:dec b:rr c
ld ix,#3fe5:ld a,#80:jp nc,load
save ld ix,#3fca:ld a,#a0
load ld (#5cdd),a:ld a,#08:call pos
disk ld a,(#5cde):add a,#3c
ld c,d:srl c:jr nc,l1:sub #10
l1 push bc:ld c,#ff:call dos1
pop bc:ld a,c:ld c,#7f
call dos1:ld a,#18:call pos
loop push hl:call dos:pop hl:inc h
inc e:ld a,e:cp #10
jr z,st:djnz loop:ret
st ld e,0:inc d:jp disk
dos push de:ld a,e:inc a:ld c,#5f
call dos1:ld d,#14
di:ld c,#1f:ld a,(#5cdd)
call dos1:ld c,#7f
call dos2:pop de:ei:ret
pos ld c,#1f:ld iy,#2a53
dos1 push iy:jp #3d2f
dos2 push ix:jp #3d2f
Программу можно еще ускор. но при этом
нет гарантии, что она будет работать на
тормозных дисководах.
Здесь используется регистры ix и iy
одновременно ,потому в одном хранится
адрес подпрограммы , а в другом адрес
для обращения к порту.
На этом я с вами прощаюсь и надеюсь
на то,что мои предложения когда-либо
воплотятся в ПЗУ TR-DOS.
Подпрограммы BASIC 48
#03B5 949 Подпрограмма BEEP
HL=частота DE=длительность
#03F8 1016 Подпрограмма BEEP
L=частора E=длительность
#04C2 1218 Подпрограмма SAVE
запись на ленту без заголовка
#04C6 1222 Подпрограмма SAVE
тоже,с блокировкой BREAK
#0556 1366 Подпрограмма LOAD
чтение с ленты без заголовка
IX=адрес DE=длина
A=#00-LOAD A=#FF-VERIFY
#0C0A 3082 Печать сообщений
DE=адрес сообщения
A=номер по порядку
#0D4D 3405 Восстановление постоянных
атрибутов экрана
#0D6B 3435 Подпрограмма CLS
Очистка экрана
#0D6E 3438 Очистка служебного
экрана
#0DAF 3503 Подпрограмма CLS
Очистка экрана
#0DFE 3582 Подпрограмма SCROLL
Скролл служебного экрана
на 1 знакоместо
#0E44 3652 Очистка служебного экрана
B=(x-1) число строк
#0E9E 3742 Адрес строки знакогене-
ратора HL=адрес
A=номер строки
#15DE 5598 Подпрограмма INKEY$
A=символ CY=1-установлен
#1601 5633 Определение потока
A=номер потока
#1728 5928 Очистка стека
Очищает установленный стек
#1835 6197 Подпрогамма LIST
HL=адрес бейсик строки
#1A1B 6683 Печать числа на экран
BC=(0...#270F)-число (0.9999)
печатает в 10-тиричном исчислении
#1CAD 7341 Перевод временных
атрибутов в постоянные
#1F3D 7997 Подпрограмма PAUSE
BC=время паузы как в бейсике
#1F54 8020 Подпрограмма BREAK
CY=1-установлен при нажатии
#203C 8252 Подпрограмма PRINT
DE=адрес BC=длина
Задаются также PAPER,INK,BORDER
AT,TAB,OVER,BRIGHT,FLASH и
другие управляющие символы
DB 22,0,0,16,1,17,2,"O.К."-пример
#229B 8859 Подпрограмма BORDER
A=цвет бордюра как и в бейсике
#22B0 8880 Вычисление адреса экрана
A=позиция по X
C=позиция по Y
Выходные данные
HL=адрес экрана
A=смещение (бит)
#22E5 8933 Подпрограмма PLOT
B=позиция по X
C=позиция по Y
#2314 8980 Вывод числа из стека
A=целое число
#232D 9005 Подпрограмма CIRCLE
Стек=радиус <-вершина стека
Стек=позиция по X
Стек=позиция по Y
#2394 9108 Подпрограмма LINE
Стек=длина <-вершина стека
Стек=позиция по X
Стек=позиция по Y
#23BA 9146 Подпрограмма LINE
B=позиция по X
C=позиция по Y
DE=смещение (#00=1 или #FF=-1)
#24B7 9399 Подпрограмма LINE
Стек=длина <-вершина стека
Стек=позиция по X
Стек=позиция по Y
#24BA 9402 Подпрограмма LINE
B=позиция по X
C=позиция по Y
DE=смещение (#00=1 или #FF=-1)
#2AB6 10934 Ввод числа на стек
A,E,D,C,B=>стек
#2BF1 11249 Вывод числа из стека
A,E,D,C,B=>стек
#2CB8 11448 Ввод числа на стек из строки
PRINT "......"=бейсик строка
A=длина строки
#2D28 11560 Ввод числа на стек
A=число
#2D2B 11563 Ввод числа на стек
BC=число
#2D2E 11566 Ввод числа на стек
BC=число
#2DA2 11682 Вывод числа из стека
BC=целое число
#2DE3 11747 Печать числа из стека
На стеке должно быть число,после
печати числа,оно исчезает со стека
#30A9 12457 Умножение двух чисел
DE*HL=HL
#33A9 13225 Проверка на свободную память
в стеке
RST #08
DB (0...N)-обработка ошибок
RST #10
A=символ-печать символа и
кодов управления
RST #18
CH_ADD=(#5C5D)-адрес символа
для печати
RST #20
CH_ADD=(#5C5D)-адрес строки
для вывода на экран
RST #28
DB 5,3,15....-выполняемые действия
DB 56-конец работы калькулятора
Работает с числами находящимися
в данный момент на стеке
RST #30
BC=длина-освобождает место в
рабочей области
RST #38-опрос клавиатуры
Вот неполный перечень системных подпр.
BASIC 48,которые можно использовать для
написания своих программ,хотя можно
создать и свои собственные,если нужна
скорость,точность и простота.
В следующий раз будут даны подпрограмы
которые можно использовать при работе
с дисководом в системе TR-DOS.
Другие статьи номера:
Похожие статьи:
В этот день... 15 ноября