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.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября