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.



Другие статьи номера:

ASM4KOFF - Запуск откомпилированных мелодий. Загрузчик на асме. Использование экранных файлов ArtStudio (вывод на экран). Максимальная скорость по выводу спрайтов. Максимально быстрый вывод точки. Самое быстрое копирование стеком.

CCLFSTM - All disk copier 128/512К.

CCLFSTM - Альбом "Backstreet Boys"

CCLFSTM - Новости от Spark group

CCLFSTM - Описание системных программ: Power Code Decrusher v6.2

Demo Design - Об истории демомейкинга.

Demo Design - Полезные алгоритмы и интересные решения (реализация фонга).

Flash - О расширении цветовой палитры ZX-Spectrum'а.

GFK Fraktiuit - Тайны графического стандарта GX1.

LZW and GIF - Описание графических форматов .LZW и .GIF.

MUSICNEWS1 - Музыкальный калейдоскоп попсы...

MUSICNEWS2 - METALL NEWS.

NEWS of Picon - Проект будущего ПЗУ. Подпрограммы BASIC 48.

OPERATEXT - Из истории создания демо Oper'ы.

PRICE - Прайс лист на продукцию фирмы Скорпион.

RUSH - О тусовке в городе Чернигове в апреле 1998 года.

SPECCY A.F. - Бессмертный Speccy.

А знаете ли вы - Пароли, вечное время и бомбы в игре Last Courier. Пароли к игре: X-Reversy; и музыкалкам: Branch of Mind demo, Diesirae demo. Скрытые части в Faultless 2, 3, 4, 5, 8 (пароли)...

Введение - О достоинствах и недостатках номера.

Медем - История создания Запорожского модема.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Лабиринт - вторая часть фантастического рассказа.
Screen Editor - пакет программ Screen Editor для создания экранов к играм.
Учебник - Стратегия и тактика половой борьбы: Параллельная жизнь.

В этот день...   8 июля