PDA

Просмотр полной версии : Где скачать ассемблер для эмулятора 800win



Atari1974
31.10.2013, 19:42
Игры то есть а вот прог найти не могу. Нужен собственно образ картриджа ассемблера для 800-XE версий.

Tronix
31.10.2013, 20:18
А это не оно? http://www.atarimania.com/pgedump.awp?id=19777
PS: Вторая строчка гугла....

Atari1974
31.10.2013, 20:26
Спасибо. Наверное запрос не правильно делал. Не находил реально. Вот бы еще кроме самого файла его описание, что за картридж типа версия и т.д.

Tronix
31.10.2013, 20:29
http://www.atarimania.com/utility-atari-400-800-xl-xe-assembler-editor_19777.html
Внизу страницы сканы мануала к картриджу в JPG'ах.

Atari1974
31.10.2013, 20:31
Ах ты блин, тут то я бывал как раз действительно в самом начале поиска но иногда вот ссылки Download в упор не вижу:)

Tronix
31.10.2013, 20:37
Ах ты блин, тут то я бывал как раз действительно в самом начале поиска но иногда вот ссылки Download в упор не вижу:)

Ну скачать разом все JPG с описанием я тоже хз как, либо по одной открывать и сохранять, либо с wget'ом заморочится и какими-нибудь регулярками. А download на сам ROM файл на странице есть. Там так и написано: Download.

Atari1974
31.10.2013, 20:55
На самом деле на счет того что найти это я мастер (хе хе кроме этого случая где просто не заметил)
У меня скачаны уже все архивы с торента всех всех книг в PDF + полностью выкачен ресурс для локального пользования: http://www.atariarchives.org/
Выкачал весь ресурс как он есть на сервере с образами игр http://www.mushca.com/f/atari/index.php?idx=2 Очень удобно. Там есть в папке все эти файлы + текстовый файлик со всеми играми и их номерами файлов. Я просто в редакторе поиск по названию делаю и смотрю на каком картридже:)
Книги в сканах качественных PDF
101 Atari Computer Tips & Tricks
ABCs of Atari Computers
Atari 130XE Machine Language for the Absolute Beginner
Assembly Language Programming for the Atari Computers
Advanced Programming Techniques for you Atari
Adventures with the Atari
An Atari 8-bit Extra
Atari Assembly Language Programmers Guide
Atari BASIC
Atari BASIC (2)
Atari BASIC Faster and Better
Atari BASIC Learning by Using
Atari BASIC Tutorial
Atari BASIC XL Edition
Atari for Kids from 8 to 80
Atari for the Beginning Beginner
Atari Fun and Games
Atari Games & Recreations
Atari Graphics and Arcade Game Design
Atari in Wonderland
Atari Player-Missile Graphics
Atari Programming with 55 Programs
Atari Roots
Atari Software Protection Techniques
Atari Sound and Graphics
Awesome Games for your Atari Computer
Basic Atari BASIC
BASIC Exercises for the Atari
Best of SoftSide Atari Version
Computer Art and Animation Atari Logo
Computer Playground
Computers for Kids Atari Edition
Computers for People
Computes Atari Collection Vol 1
Computes Atari Collection Vol 2
Computes First Book of Atari
Computes First Book of Atari Games
Computes First Book of Atari Graphics
Computes Second Book of Atari
Computes Second Book of Atari Graphics
Computes Third Book of Atari
De Re Atari
Designs from your Mind with Atari Graphics
Dr C. Wacko Presents Atari BASIC
Dr Wackos Guide to Creating Arcade Games
Disk Guide Atari 400 and 800
FORTH on the Atari Learning bu Using
Free Software for you ATARI
Games Ataris Play
Games for the Atari
Games for your Atari Computer
Hackerbook for your Atari Computer
Home Applications and Games for the Atari
How to program Your Atari in 6502 Machine Language
How to use Atari Computers
I Speak BASIC to my Atari
Inside Atari BASIC
Inside Atari BASIC (2)
Itty Bitty Bytes of Space
Kids and the Atari
Machine Language for Beginners
Mapping the Atari
Master Memory Map
Mostly BASIC Applications for your Atari Book 1
Mostly BASIC Applications for your Atari Book 2
Programming your Atari Computer
Rainy Days Activities for the Atari
SpeedScript
Stimulating Simulations
The Analog Compendium
That Atari 800XL: A Practical Guide
The Atari Assembler
The Atari BASIC Sourcebook
The Atari Experience
The Atari Playground
The Atari User's Encyclopedia
The Best Atari Software
The Best of Antic Anthology
The Book of Atari Software 1983
The Creative Atari
The Elementary Atari
The Master Memory Map
The Musical Atari
The Second Book of Machine Language
The User's Guide to Atari 400 800 Computers
The User's Guide to Atari
The Visicalc Book Atari Edition
Things to do with your Atari Computer
Time Lost - A Computer Adventure
Tricky Tutorials 1-6
Tricky Tutorials #7 Disk Utilities
Understanding Atari Graphics
User's Handbook to the Atari 400/800 Computers
Your Atari Computer Comes Alive
Your Atari Computer
Your Atari Computer XL Edition






ABCs of Atari Computers
Atari 130XE Machine Language for the Absolute Beginner
Atari Assembly Language Programmers Guide
Atari BASIC Faster and Better
Atari BASIC Tutorial
Atari for Kids from 8 to 80
Atari for the Beginning Beginner
Atari Player-Missile Graphics
Atari Software Protection Techniques
Basic Atari BASIC
Best of SoftSide Atari Version
Computers for Kids Atari Edition
Computes Atari Collection Vol 1
Computes Atari Collection Vol 2
Computes First Book of Atari Games
De Re Atari
Designs from your Mind with Atari Graphics
Dr C. Wacko Presents Atari BASIC
Games for your Atari Computer
Hackerbook for your Atari Computer
Home Applications and Games for the Atari
Kids and the Atari
Master Memory Map
Mostly BASIC Applications for your Atari Book 1
Mostly BASIC Applications for your Atari Book 2
SpeedScript
Stimulating Simulations
The Atari Playground
The Best of Antic Anthology
The Book of Atari Software 1983
The Master Memory Map
The User's Guide to Atari 400 800 Computers
The Musical Atari
The Visicalc Book Atari Edition
Things to do with your Atari Computer
Time Lost - A Computer Adventure
Tricky Tutorials #7 Disk Utilities
Your Atari Computer Comes Alive
Your Atari Computer XL Edition


А вот текстовый файлик с играми на картриджах http://files.mail.ru (http://files.mail.ru/FB547A92A18C4EF0B046883CF312379F)

Tronix
31.10.2013, 21:33
То, что выкачал - это хорошо. Сайты имеют неприятное свойство рано или поздно уходить в /dev/null, особенно связанные со всякой рухлядью -) Я вот сам недавно еле зеркало Ретроград Стейшн нашел, с образами PC Booter disk. Я если честно в атарях не шарю, даже не видел никогда, я сюда случайно зашел -)

klaxer
08.11.2013, 00:16
http://atarionline.pl/archives/archiwumuzytkow-atarionlinepl-2012-07-01.7z

Atari1974
12.11.2013, 17:26
http://atarionline.pl/archives/archiwumuzytkow-atarionlinepl-2012-07-01.7z

Ух спасибо. Нужный архивчик. Не просто нужный а вообще помоему все что надо:)

atariki
08.01.2014, 20:58
А кто умеет программировать на ассемблере под ATARI, с детства мечтал научиться.

dosikus
14.01.2014, 11:03
А кто умеет программировать на ассемблере под ATARI, с детства мечтал научиться.

Не умею под atari, решил занятся. Накачал кучу книг .
Установил WUDSN IDE . Скомпилил первый примерчик с радугой и уже запустил на реале.
Весьма интересно... :biggrin:
Извиняюсь за качество фото, камера на планшете г. полное

http://i056.radikal.ru/1401/8d/3f268667614b.png

http://s43.radikal.ru/i101/1401/15/5a15b1e6b98a.jpg

atariki
14.01.2014, 18:51
попробовал, занимательно. Ещё бы знать что к чему....

dosikus
14.01.2014, 19:10
попробовал, занимательно. Ещё бы знать что к чему....
Дык книг то как грязи . Или у тебя с языком проблемы?

atariki
14.01.2014, 19:31
Дык книг то как грязи . Или у тебя с языком проблемы?
Да, с языком проблемы. Книги все есть у меня.

dosikus
14.01.2014, 19:41
Да, с языком проблемы. Книги все есть у меня.

Давай попробуем вместе изучать. Может кто еще подтянется ...

atariki
14.01.2014, 20:00
Давай, давно хотел. В личку отписал тебе.

denpopov
12.02.2014, 06:57
А кто умеет программировать на ассемблере под ATARI, с детства мечтал научиться.

Я умею, потому что в школе были Атари и была компания, которая изучала по русскому переводу Mapping the Atari вдоль и поперек - от графики до прерываний и операций с устройствами.

из ассемблеров мне понравился atasm, который сразу гонит .XEX'ы, их удобно запускать в эмуляторе.

недавно мне посоветовали ACTION!, он хоть и неудобный, но покруче TurboBasic'a.

ezswift
11.03.2014, 17:01
Всем привет!

Предлагаю попробовать компилятор PL65.
Это штука будет посильнее, чем Фауст Гёте.
Я в нём уже разобрался маленько.
Он плавно обходит проблемы ACTION (а у того их немерянно).

Если интерес есть, то могу познакомить. :)
Кстати, в нём есть встроенный полноценный ассемблер и свой (не атарьский) программный стэк. К тому же он компилирует в Досовские *.com файлы и не требует наличия рантайма на диске.

denpopov
13.03.2014, 14:06
привет!

Он плавно обходит проблемы ACTION (а у того их немерянно)
а какие? я не заметил..

ezswift
13.03.2014, 16:26
Ну может я не совсем удачно выразился...

Изначально Экшн проектировался как картридж. и все коды языка были в прошивке картриджа, то есть без картриджа откомпилированная программа не запускалась.

Потом, сначала сами OSS, а потом и другие продвинутые люди напридумывали рантайм библиотек для Экшн и вроде бы проблема решилась... Но осталось огромное неудобство в работе.

Трудности с параметрами, трудности с функциями, в общем язык странный. Его все любят за чистый код компиляции и за скорость, но фанатеть здесь не над чем.

А PL65 обладает всеми возможностями Экшн, зато весьма удобен и читаем. Есть двоичные, десятичные и шестнадцатиричные числа, указатели и пр.

Очень подробная документация Аж, страшно!

Вот как задать плейера для PM-графики:
DEFSHAPE(0,
%00111000,
%01011100,
%00111110,
%00101010,
%00111110,
%01011100,
%01100010,
%11111110,
%11010111,
%10111101,
%10110101,
%00111100,
%00111100,
%00011100,
%00111100,
%01111000)

denpopov
13.03.2014, 17:42
ezswift, а не пробовал Action! с диска, а не с образа картриджа?Вроде как у меня программы компилировались..
и дай, пожалуйста ссылку на PL65, не могу найти (

ezswift
14.03.2014, 09:30
Я подготовлю atr с языком и сделаю как вложение с pdf мануалом.
Сейчас у меня нет, просто подожди...

---------- Post added at 09:53 ---------- Previous post was at 09:05 ----------

Вот кстати Атарьская радуга на PL65 с комментариями
Разумеется, перед компиляцией русские комментарии надо удалить.




! Rainbow !
! ------------------------------------ !
PROC Rainbow()
BYTE vcount=$D40B,wsync=$D40A
BYTE rtclok=$14,color=$D018,u=$7
BYTE ch=764
BEGIN
ch=$FF
REPEAT
wsync=u
color=rtclok+vcount
UNTIL ch<>$FF
END
! ------------------------------------ !
! Main program !
MAIN()
BEGIN
Rainbow()
END
! ------------------------------------ !



! Очистили клавиатурный буфер

! Повторяем, следующий блок, пока не изменится буфер, т.е., пока не нажата клавиша

! Запись в регистр wsync любого числа (Wait for Syncronization)
! ставит процессор в режим ожидания и поэтому изменение цвета происходит только
! с началом новой линии, а не посередине. Очевидно с этим можно поиграться.

! содержимое регистра реального времени прибавляем к содержимому счётчика строк ТВ растра
! сумму засовываем в регистр цвета фона.
! так получаем с изменением времени изменение цвета строк растра, то бишь радугу.

---------- Post added at 10:30 ---------- Previous post was at 09:53 ----------

Привет denpopov,
Подготовил файлик и готов выслать.

На какую почту прислать 6 мег зипованого файла?
Здесь ограничение по размеру

denpopov
14.03.2014, 09:48
На какую почту прислать 6 мег зипованого файла?
кинь в личку.

ezswift
14.03.2014, 09:59
Как это сделать? Никогда не посылал.
Там нету кнопки вложения.

Ограничения на размер вложения в форуме - 640кб

denpopov
14.03.2014, 11:14
ezswift,
есть rghost.ru и sderni.ru
пожалуйста,загрузи туда файлик и кинь в личку ссылку

ezswift
14.03.2014, 11:55
Сделано! :)

Лежит на _http://rghost.ru/53046944

Будет там месяц, без пароля.

denpopov
14.03.2014, 12:26
спасибо, попробую осилить.

---------- Post added at 13:26 ---------- Previous post was at 13:15 ----------

вот еще одно руководство, нужно будет почитать:
http://web.archive.org/web/20080705201213/http://linux.cis.monroeccc.edu/~paulrsm/6502/PL65MAN.TXT

ezswift
14.03.2014, 12:39
Это не наш PL/65, Наш называется PL65

Вот мой сайтик с примерами.
_http://8-bitnature.blogspot.ru/2013/03/pl65-noahsoftc1987.html
Я правда давно им не занимался, пардон.

denpopov
14.03.2014, 13:08
Вот мой сайтик с примерами.
мне здесь (http://8-bitnature.blogspot.ru/2013/03/i-love-very-much-this-blog.html) не совсем понятно:


B=PEEK(RANDOM)
IF B>127 THEN B=1 ELSE B=0 ENDIF

мне думается попроще:
lda RANDOM
and #$01
adc#$06

ну и саму процедурку можно развить. А заодно интересно - как устанавливать прерывания? я имею в виду как определить адрес вектора прерывания.?

ezswift
14.03.2014, 14:06
Я тогда не знал точно как будет себя вести встроенный ассемблер. Сейчас уже проникся, а писал, ведь год назад.

У меня, намного больше примеров, конечно.
В частности библиотека прямого доступа к видеопамяти.
Только всё это надо обсуждать, я же не программист вовсе.

Кстати, вот пример очарования PL65:
Выравнивание начала памяти PM графики по 2 килобайтам:

BYTE PMDUMMY[$800-(@ AND $7FF)]

То есть начиная от текущего программного указателя обозначен как @ строится массив, выравненный по 2кб, после этого @ указывает уже на начало PM памяти и адрес можно взять оператором точкой. То есть PM=.PMDUMMY.
Соответственно, если надо выровнять модифицированный шрифт по 1кб границе,
будет так:

BYTE CHRDUMMY[$400-(@ AND $3FF)]

Вкусно!

Вот работа с прерываниями:




! ------------------------------------ !
INTERRUPT DLINT()
BYTE ColReg=$D018
BEGIN ColReg=0 END
! ------------------------------------ !
PROC int_enable()
POINTER Ptr
INT Addr BASED Ptr
BYTE Data BASED Ptr
BYTE NMIEN=$D40E ! Interrupt register
INT SDL=$230 ! Display list address
BEGIN
Ptr=$200 Addr=.DLINT !Store address of interrupt subroutine into vector
Ptr=SDL+15 Data=$82 ! interrupt at line fifteen
NMIEN=$C0 ! Enable interrupt
END
! ------------------------------------ !
MAIN()
BEGIN int_enable() END



Здесь по DLI прерыванию, наступающему по достижении 15-й строки,
цвет фона меняется на чёрный.

DLINT() - меняет фон
int_enable() - Инициализация DLI

При работе с указателями
сначала определяется сам указатель (2 байта на нулевой странице)
После этого к нему привязываются переменные, которые BASED на нём.

denpopov
14.03.2014, 14:38
еще не прочитал всё руководство, а к чему постоянные конструкции BEGIN-END?

---------- Post added at 15:38 ---------- Previous post was at 15:36 ----------


Только всё это надо обсуждать, я же не программист вовсе.
я думаю, что для графики будет нужно, потому что у меня есть только процедура включения графического режима и быстрое построение точки только для GR.8
Заодно можно найти и рисование окружностей.

ezswift
14.03.2014, 15:08
Это как фигурныескобки в си. Наверное калька с Алгола.
Там ещё встречаются GOTO Label и GOSUB Label и ON var GOTO/GOSUB L1,L2,L3 ...
Так что язык вполне архаичный. Но ведь когда его создавали, не было даже Си.

Я как-то не конкретизировал, что в объявлении фиктивного массива
BYTE PMDUMMY[$800-(@ AND $7FF)]
часть в квадратных скобках - это его размерность, вычисляемая во время компиляции и во время исполнения просто автоматически будет известен адрес этого массива, то есть начала PMG в памяти.

Также не сказал, что процедура типа INTERRUPT сама достраивает необходимые например для связки Бейсика с ассемблером PLA и PHA при входе и при выходе из самой процедуры.

Есть специальный тип - Абсолютная переменная
То есть если переменная инициализируется при её описании, то она считается абсолютной и равной присваиваемой величине, то есть вот здесь присваивается Адрес, а память под байт не выделяется.

BYTE NMIEN=$D40E
...
NMIEN= <что-то> тут пойдёт занесение этого <что-то> по адресу NMIEN.

А ещё у меня есть файл, описывающий цвета для колоризации кода PL65 в Notepad++.

Он во вложении, но его нужно переименовать в pl65.udl перед импортом в Notepad++.

ezswift
14.03.2014, 18:02
Добавлю:
BEGIN и END нужны для структуризации программы.

<здесь глобальные определения>
(Видны с этого места вниз везде, так как расположены выше процедур и функций)
PROC/FUNC(<здесь определяется тип и задаются имена параметров>)
<здесь локальные переменные>
BEGIN
<здесь пакет операторов>
...
END <здесь возвращаемое функцией значение>

denpopov
14.03.2014, 21:48
Что-то пока не очень понятно(
А хватит ли мне этой функции, чтобы получить адрес экранной области?


FUNC PEEK(PO1NTER address)
BYTE byte BQSED address
BEG IN
END byte

ezswift
15.03.2014, 10:24
denpopov,
В PL65 уже есть стандартная библиотека PEEKPOKE.LIB
Там уже есть функции PEEK,POKE,DEEK,DOKE
(То есть пользоваться названием PEEK нехорошо.)
Там они задаются через указатель общего назначения gppointer и ассемблерные функции

Я всегда поступаю иначе.
Для избежания умножений в циклах прорисовки я доступ к экрану предоставляю через Абсолютную переменную
INT SAVMSC=$58
и массив адресов начал строк текстового режима.
INT LinAdr[24]
Произвольный доступ к экрану идёт через указатель
POINTER ScrAdr
и вносимую в экран величину загружаемую по адресу куда настроен указатель
BYTE ScrVal BASED ScrAdr

При работе программ массив адресов начал строк
всегда должен быть инициализирован! процедурой
InitVid()

Вот моя библиотека панельных функций экрана в режиме BASIC GR0

Она не оптимальна, но знакомит с PL65



!====================================!
! PANELS.LIB
! PL65 Screen Panels operations.
!------------------------------------!
! InitVid(),
! SaveBlk(INT X0,Y0,X1,Y1 POINTER BP),
! SaveBlk(INT X0,Y0,X1,Y1 POINTER BP),
! Inverse(BYTE byte),
! InvLin(INT X0,Y0,X1)
! InvBlk(INT X0,Y0,X1,Y1),
! PutShp(INT X0,Y0 BYTE Shp,Mod),
! PlotHor(INT X0,Y0,L BYTE Shp,Mod),
! PlotVer(INT X0,Y0,L BYTE Shp,Mod)
!------------------------------------!
! Copyright (C) 2014 EZsoft
!====================================!
CONST MINCOL=0,MAXCOL=39,MINROW=0,MAXROW=23
INT SAVMSC=$58,LinAdr[24]
POINTER ScrAdr BYTE ScrVal BASED ScrAdr
!------------------------------------!
! Initialize Line-based Access
! to screen
PROC InitVid()
INT Y
BEGIN
FOR Y=0 TO 23 DO
LinAdr[Y]=Y*40+SAVMSC
NEXT
END
!------------------------------------!
! Save rectangular screen block
! to buffer defined in MAIN()
!------------------------------------!
! INT PW,PH BYTE PBuf[PW*PH]
! POINTER BP
PROC SaveBlk(INT X0,Y0,X1,Y1 POINTER BP)
INT X,Y BYTE BV BASED BP
BEGIN
FOR Y=Y0 TO Y1 DO
FOR X=X0 TO X1 DO
ScrAdr=LinAdr[Y]+X
BV=ScrVal ScrVal=0
BP=BP+1
NEXT
NEXT
END
!------------------------------------!
! Restore rectangular screen block
! from buffer defined in MAIN()
PROC RestBlk(INT X0,Y0,X1,Y1 POINTER BP)
INT X,Y BYTE BV BASED BP
BEGIN
FOR Y=Y0 TO Y1 DO
FOR X=X0 TO X1 DO
ScrAdr=LinAdr[Y]+X
ScrVal=BV
BP=BP+1
NEXT
NEXT
END
! ----------------------------
! Inverse Screen Byte !
FUNC Inverse(BYTE byte)
CONST mask=%10000000
BEGIN
byte=byte XOR mask
END byte
! ----------------------------
! Inverse Line on Screen
PROC InvLin(INT X0,Y0,X1)
INT X,Y
BEGIN
Y=Y0
FOR X=X0 TO X1 DO
ScrAdr=LinAdr[Y]+X
ScrVal=Inverse(ScrVal)
NEXT
END
! ----------------------------
! Invert rectangular screen block
PROC InvBlk(INT X0,Y0,X1,Y1)
INT X,Y
BEGIN
FOR Y=Y0 TO Y1 DO
FOR X=X0 TO X1 DO
ScrAdr=LinAdr[Y]+X
ScrVal=Inverse(ScrVal)
NEXT
NEXT
END
! ----------------------------
! Put Char/Byte to Screen
! 0=Screen Byte, 1=ATASCII Char
PROC PutShp(INT X0,Y0 BYTE Shp,Mod)
INT X,Y
BEGIN
IF Mod=1 THEN Shp=Asc2Scr(Shp) ENDIF
X=X0 Y=Y0
ScrAdr=LinAdr[Y]+X
ScrVal=Shp
END
! ----------------------------
! Put Horizontal line of Chars/Bytes
! 0=Screen Byte, 1=ATASCII Char
PROC PlotHor(INT X0,Y0,L BYTE Shp,Mod)
INT X,X1,Y
BEGIN
IF Mod=1 THEN Shp=Asc2Scr(Shp) ENDIF
X1=X0+L Y=Y0
FOR X=X0 TO X1 DO
ScrAdr=LinAdr[Y]+X
ScrVal=Shp
NEXT
END
! ----------------------------
! Put Vertical line of Chars/Bytes
! 0=Screen Byte, 1=ATASCII Char
PROC PlotVer(INT X0,Y0,L BYTE Shp,Mod)
INT X,Y,Y1
BEGIN
IF Mod=1 THEN Shp=Asc2Scr(Shp) ENDIF
X=X0 Y1=Y0+L
FOR Y=Y0 TO Y1 DO
ScrAdr=LinAdr[Y]+X
ScrVal=Shp
NEXT
END
! ----------------------------
! Draw Frame around Panel
PROC DrawFrm(INT X0,Y0,X1,Y1,PW,PH)
CONST TLC=$51,HOR=$52,TRC=$45,VER=$7C,BLC=$5A,BRC=$43
BEGIN
PutShp(X0,Y0,TLC,0) PlotHor(X0+1,Y0,PW,HOR,0) PutShp(X1,Y0,TRC,0)
PlotVer(X0,Y0+1,PH,VER,0) PlotVer(X1,Y0+1,PH,VER,0)
PutShp(X0,Y1,BLC,0) PlotHor(X0+1,Y1,PW,HOR,0) PutShp(X1,Y1,BRC,0)
END
! ----------------------------
PROC DrawPnl(INT X0,Y0,PW,PH,PAdr)
POINTER ChrPtr
BYTE ChrShp BASED ChrPtr
INT X,Y
BEGIN
ChrPtr=PAdr
FOR Y=Y0+1 TO Y0+PH DO
FOR X=X0+1 TO X0+PW DO
ScrAdr=LinAdr[Y]+X
ChrShp=Asc2Scr(ChrShp) ScrVal=ChrShp
ChrPtr=ChrPtr+1
NEXT
NEXT
END
! ----------------------------
ENDFILE

denpopov
15.03.2014, 10:31
и массив адресов начал строк текстового режима.
INT LinAdr[24]
по идее можно обращаться ко всей памяти.

ezswift
15.03.2014, 10:42
Да, забыл сказать, что эта библиотека использует функции другой моей библиотеки
SCREEN.LIB, выполняющей рутинные экранные функции, такие как
Asc2Scr(BYTE Byte)
или
Scr2Asc(BYTE Byte)

---------- Post added at 11:37 ---------- Previous post was at 11:33 ----------

На самом деле я хотел написать DUP.SYS для DOS 2.5 выполненый как система выпадающих меню. В перспективе от мыши, но можно от клавы или джойстика.
Я, правда недостаточно знаю сам Дос, но тут в помощь идут расширители бейсика, которые добавляют ему DOS функции. Просто слизать что там пишут и влепить в PL65

---------- Post added at 11:42 ---------- Previous post was at 11:37 ----------

Правда там честнее доступ к экрану делать через SIO для совместимости с S: и E:

denpopov
15.03.2014, 10:50
Правда там честнее доступ к экрану делать через SIO для совместимости с S: и E:
все же мне думается, что быстрее будет через ($88)

ezswift
15.03.2014, 11:11
На самом деле быстро и через SIO, это же компилятор.
Всего смешнее то, что имея ассемблерные коды DUP.SYS
можно просто слизать нужные части напрямую в ассемблер PL65
У меня есть пример примитивного меню через SIO.

Это простой атарьский com файл!!! Его надо переименоватью
(Просто в форуме не любят com файлы.)

ezswift
16.03.2014, 14:48
Добавлю... Enter Esc Anykey Arrows работают.

ezswift
25.03.2014, 09:11
Вот вопрос denpopov оказался СУЩЕСТВЕННЫМ!
... к чему постоянные конструкции BEGIN-END?

Я долго искал и нашел. :)
Это оказалась сложная конструкция, исполняющая разные функции при компиляции для разных задач.

Например для процедуры MAIN() BEGIN производит подсчёт адреса начала скомпилированных машинных кодов, а END определяет их конец, то есть это адреса для создания полноценного атарьского *.COM файла.

Для обычных вызываемых процедур BEGIN производит все необходимые PLA для передачи параметров (только для своего программного, а не для аппаратного атарьского стека), а END производит все необходимые PHA, RTS для правильного выхода из программы.

Для процедур INTERRUPT, BEGIN делает то же, что и для обычных процедур, а END к тому же возвращает RTI.

В случае, если процедура должна возвращать данные, то есть является функцией, её END также кладёт возвращаемое на программный стек.

И наконец, в случае применения ПРИМАТИВНЫХ процедур, (От слова ПРИМАТЫ) то есть процедур, являющимися только исполняемыми машинными кодами, BEGIN и END являются только адресами входа и выхода.

Вот например как устанавливается VBI в PL65:



PROC SetVBI*()
BEGIN
STX XSAVE
LDA #$06
LDX #VBI/256
LDY #VBI AND $FF
JSR SETVBV
LDX XSAVE
END

:v2_dizzy_tired2:

denpopov
25.03.2014, 11:15
странный пример, конечно.
по идее в прерывании должны X и Y сохраняться, если задействованы.

ezswift
26.03.2014, 08:20
На самом деле, это делает сам язык при BEGIN, однако он не сохраняет регистр X !

В PL65 регистр X используется только при работе с программным стеком языка, поэтому если он нужен в коде, сначала его сохраняют в XSAVE - (байт на нулевой странице), а потом восстанавливают.

Не во всяком языке ассемблер встроен, а где встроен, так там та ещё морока. :)

Кстати, я на PL65 перегнал руссификатор, который изначально на Си.
Мучался недельку методом тыка, потом прочитал мануал и вуаля!

denpopov
26.03.2014, 09:24
На самом деле, это делает сам язык при BEGIN, однако он не сохраняет регистр X !
а регистр Y?


Мучался недельку методом тыка, потом прочитал мануал и вуаля!
было бы интересно взглянуть.

ezswift
26.03.2014, 15:53
Регистры A и Y сохраняются при вызове BEGIN и восстанавливаются при вызове END автоматически.

Вот сорц программульки:


INCLUDE TERMINAL.LIB

CONST EN=$E0 BYTE RU,OLDCONS
BYTE CONSOL=$D01F,COLBAK=$02C8,CHBAS=$02F4
CONST BLUE=$80,RED=$32,SELECTED=$05
CONST SETVBV=$E45C,SYSVBV=$E45F,XITVBV=$E462
STRING FName$[20]

BYTE BumpUp[$400-(@ AND $3FF)],NewCSet[$400]

PROC VBI*()
BEGIN
LDA CONSOL
CMP OLDCONS BEQ Exit
CMP #SELECTED BNE Exit
!
LDA COLBAK
CMP #RED BNE ToRED
!
LDA #BLUE STA COLBAK
LDA #EN STA CHBAS
GOTO Exit
:ToRED
LDA #RED STA COLBAK
LDA RU STA CHBAS
:Exit
LDA CONSOL STA OLDCONS
JMP SYSVBV
END

PROC SetVBI*()
BEGIN
STX XSAVE
LDA #$06
LDX #VBI/256
LDY #VBI AND $FF
JSR SETVBV
LDX XSAVE
END

MAIN()
BEGIN
FName$="D1:RUS.FNT"
COLBAK=BLUE CHBAS=EN
RU=.NewCSet/256
OPEN(1,4,0,FName$)
GCHAR(1,.NewCSet,$400)
CLOSE(1)
SetVBI*()
END


А во вложении atr
Я только заменил расширение на zip, и надо переименовать в atr.

Сейчас пытаюсь сделать программу управления языком резидентной, чтобы по ресету не сбрасывалась.
Теорию ещё не знаю, пока читаю чужие коды.
:v2_dizzy_vodka:

denpopov
26.03.2014, 16:33
запустил fld.com, а русских букв не видать. я что-то неправильно сделал?

все же мне думается, что тот вариант, который я сделал, проще. Это ребята из кооператива "Формат" написали, мы немного модифицировали потом русификатор, по Reset подпрограмма рестартует, но я не помню как делали..

ezswift
27.03.2014, 12:00
Надо набрать FLD.
Когда рамка станет синей для переключения шрифта надо нажать Select. А потом писать русские буквы.

Мне не подходит рестарт программы по Reset, так как она читает шрифт с диска.
Нехорошо каждый раз загружать шрифт.

denpopov
27.03.2014, 18:07
Нехорошо каждый раз загружать шрифт.
поэтому я и сделал autorun.sys

ezswift
27.03.2014, 19:56
Я думаю, я добью эту программку...

Она будет ЛЮБОЙ шрифт подгружать, даже, переключаемый по Caps. :)
(Типа по звучанию, как KOI-8 Z=З и пр.)

На самом деле, мне эта программа вообще не интересна.
Я - учу PL65.

Там столько неведомого, что ВАЩЕ!
Я очень люблю Си, но Это - сухая выжимка из компьютерного опыта.

А PL65 = САМ компьютерный опыт!

denpopov
27.03.2014, 21:05
А PL65 = САМ компьютерный опыт!
все же мне ACTION! и 6502 понятнее..

ezswift
05.04.2014, 07:24
А вот вполне пригодный TSR Font Loader.

Его можно переименовать в autorun.sys и он не будет выгружаться по SYSTEM RESET.
Я так и думал, что смогу его "Добить" ...

Как всегда его надо переименовать из Zip в Atr.