По поводу PC110

ZXNet echo conference «zx.spectrum»

From Igor Maznitsa To All 23 February 1998

St.Petersburg codepage 866
Понедельник Февpаль 23 1998
20:39

Здpавствуй товаpищь All!

Тут мене люди усе пишут, что гденто накрылся мой транслятор, все,
так сказать, понюхали , а никто не попробовал,- окромя первой секции с
описанием никто ничего более не увидел, а посему я решился на крайние меры,-
то бишь , решив по крайнему своему разумению, что все сие произошло из-за
размеров файлов, то я попробовал разбить на 7 секций по 5 кбт.Так что
ищите файлы с названиями PC110(1/7) по PC110(7/7).

Искpенне ваш Igor

>> Вместе Мы покончим со всякой буpжуазной нечистью!!!!!
E-Mail : ray...@itm.spb.su


From Vova Hex To All 25 February 1998


Hi!
On 23 Feb 98 (20:38) you wrote something I decided to answer..

IM> Тут мене люди усе пишут, что гденто накрылся мой транслятор, все,
IM> так сказать, понюхали , а никто не попробовал,- окромя первой секции с
IM> описанием никто ничего более не увидел, а посему я решился на крайние
IM> меры,- то бишь , решив по крайнему своему разумению, что все сие произошло
IM> из-за размеров файлов, то я попробовал разбить на 7 секций по 5 кбт.Так
IM> что ищите файлы с названиями PC110(1/7) по PC110(7/7).

Или он до меня опять битый дошёл или он работает как-то.. Hу, для начала, когда
я его просто запустил по экрану замелькали надписи "Open input failer", пока я
ему не ^C. Потом указав ему файл (прилагавшийся в комплекте) оказалось что его
надо перенаправить (pc110 file.c > file.a80). Hу а потом, когда дошло до
ассемблирования, выяснилось что там полно вот таких вот команд:

=== Cut ===
LD BC,(c)
INC BC
LD (c),BC === Cut ===

И ассемблер их, естественно, не переваривает.. Он ведь думает что это регистр
C. Потом всякие строки типа

=== Cut ===
1 errors in compilation. -- а указать её нельзя?
5632 instructions generated.
824 source lines.
=== Cut ===

и "Open output failer"... Hеплохо было бы их комментировать. Hеплохо было бы
использовать а код 09h -- и смотреться будет лучше, и занимать меньше..
'Исходник' на ассемблере получился 115 килобайт, почти половина состоит из
повотряющихся кусков (не удивительно что самма программа занимает 40000 байт)...
Файл laser.a80 отсутствует... В общем попробовать это чудо (сабж) не
получилось..

Yours truly, Hexman/BYTEX.
[Team ZX ASM] [Team Metallica] [Team Art Works]


From Igor Maznitsa To All 25 February 1998

St.Petersburg codepage 866
Сpеда Февpаль 25 1998
20:54

Здpавствуй товаpищь Vova!

Похоже, кто-то всетаки умудрился получить транслятор.Я не надеялся на сие,
а потому не вставил никакого описания.
Транслировать надо так:
pc110 file.c file.a80

по командам,- это вылитый микроСИ (вернее это и есть микроСи)
я туда добавил команду
goto метка
сами метки вставляются
:метка
а так же добавил команды препроцессора
#label имя - данная команда имена меток вставляемых в
ассемблерный файл

#list - данная команда включает в ассемблерный файл
строки из проги на Си

массивы там допускаются только одномерные.
из типов данных, там есть только int и char, также допускаются указатели
есть if,while , а вот for, switch нет
есть -,+,--,++,>>,<< ,а *,/,% нет

транслятор нифига не оптимизирует, но это можно и руками сделать

Дабы вы не гундели по поводу того, что он ни на что не годен, я кинул демку
её размер кб 40, но это потому, что там дофига лишнего и я нифига не
оптимизировал

библиотека laser.a80, это библиотека для связи PC110 с ядром LaserBasic'a,
а так же там некоторые другие функции типа PRSTR и INTFUN

что бы не было недоумения , сразу скажу, что закрывая блок надо ставить
точку с запятой например:

#list
main()
{
:kkk
int a,b;
a=3;
b=4;
a=a+b;
goto kkk;
}; ^^^если не будет этой точки с запятой, то будет сообщение об ошибке

вобщем, этот продукт ни на что не претендует, но он может заткнуть рот тем, у
кого руки из задницы растут и им CASE систему подавай.
PC110 предназначен для тех, кому надо быстро склеить большой проект из
многих ассемблерных подпрограмм. Вобщем умные люди оценят, а мнение дураков
мне пофиг.

Искpенне ваш Igor

P.S. Кстати, транслятор посмотрел Андрей Савичев и ему понравилось.

From Vova Hex To All 26 February 1998


Hi!
On 25 Feb 98 (20:53) you wrote something I decided to answer..

IM> Похоже, кто-то всетаки умудрился получить транслятор. Я не надеялся
IM> на сие, а потому не вставил никакого описания. Транслировать надо
IM> так: pc110 file.c file.a80

Так уже легче.. Hо всё равно странно он себя ведёт без указания выходного файла
или при встрече '/?'..

IM> Дабы вы не гундели по поводу того, что он ни на что не годен, я кинул
IM> демку её размер кб 40, но это потому, что там дофига лишнего и я нифига не
IM> оптимизировал

Этакая демонстрация возможностей....

IM> библиотека laser.a80, это библиотека для связи PC110 с ядром
IM> LaserBasic'a, а так же там некоторые другие функции типа PRSTR и
IM> INTFUN

То есть как, в программе ещё и Laser Basic учавствует? К тому же раз уж есть
основной исходник, нужны и библиотеки, чтоб можно было попробовать поиграться с
программой.. Сейчас же чтоб его опробовать необходимо самому писать программу с
нуля...

IM> что бы не было недоумения , сразу скажу, что закрывая блок надо
IM> ставить точку с запятой например:

IM> #list
IM> main()
IM> {
IM> :kkk
IM> int a,b;
IM> a=3;
IM> b=4;
IM> a=a+b;
IM> goto kkk;
IM> }; ^^^если не будет этой точки с запятой, то будет сообщение об ошибке

Hу это мы ещё вытерпим..

IM> вобщем, этот продукт ни на что не претендует, но он может заткнуть
IM> рот тем, у кого руки из задницы растут и им CASE систему подавай.

Какой тонкий намёк...

IM> PC110 предназначен для тех, кому надо быстро склеить большой проект
IM> из многих ассемблерных подпрограмм. Вобщем умные люди оценят, а
IM> мнение дураков мне пофиг.

Hу спасибо на добром слове..

IM> P.S. Кстати, транслятор посмотрел Андрей Савичев и ему понравилось.

Особенно, наверное, "CASE система"?

From Vyacheslav Mednonogov To All 27 February 1998


Get Msg, Vova!

25 Feb 98 07:42, Vova Hex cooбщил Igor Maznitsa про {По поводу PC110}:

VH> комплекте) оказалось что его надо перенаправить (pc110 file.c > file.a80).
VH> 1 errors in compilation. -- а указать её нельзя?
VH> и "Open output failer"...

Это, видимо, всё завязано. Я догадался, что вроде надо так:

pcc110 входной_файл выходной_файл

,тогда в примере ошибок не будет (и процесс _очень_ быстро пойдёт).

VH> Hеплохо было бы их комментировать.

И неплохо бы (как опция) вставлять куски исходной программы в виде
коментариев, чтобы видеть - как что транслировалось.

VH> Файл laser.a80 отсутствует...

Судя по названиям функций, должен прилинковываться набор п/п laser бейсика.
Кста, встречный вопрос автору, куда и как передаются параметры (те, что в
скобках)

VH> В общем попробовать это чудо (сабж) не получилось..

Доку бы ещё - какие команды можно использовать, какие нет; какие
ограничения. Hо скорость трансляции - достойна уважения.


C горячим приветом, Слава!


From Vyacheslav Mednonogov To All 27 February 1998


Get Msg, Igor!

25 Feb 98 20:53, Igor Maznitsa cooбщил Vova Hex про {Re: По поводу PC110}:

IM> по командам,- это вылитый микроСИ (вернее это и есть микроСи)

Где про него пишут? (лучше, чтобы здесь :))

IM> #list - данная команда включает в ассемблерный файл
IM> строки из проги на Си

О!

IM> есть -,+,--,++,>>,<< ,а *,/,% нет

Все выражения не более чем с двумя операндами, без скобок (судя по
исходнику игры)?

IM> транслятор нифига не оптимизирует, но это можно и руками сделать

Фигня, в след. версии сделаешь :)

IM> LaserBasic'a, а так же там некоторые другие функции типа PRSTR и INTFUN

Как транслятор развязывается с типами параметров - откуда знает, когда
char, когда int, а когда *сhar? Ссылочные параметры допустимы (типа
&переменная)? И куда он эти параметры передаёт?
Кста, обращение к ф-ции, похоже может быть и до её описания (без
предобъявления)?

IM> что бы не было недоумения , сразу скажу, что закрывая блок надо ставить
IM> точку с запятой например:

From Vyacheslav Mednonogov To All 27 February 1998

VH> Hу а потом, когда дошло до ассемблирования, выяснилось что там полно вот
VH> таких вот команд:

VH> === Cut ===
VH> LD BC,(c)
VH> INC BC
VH> LD (c),BC === Cut ===

VH> И ассемблер их, естественно, не переваривает.. Он ведь думает что это
VH> регистр C. Потом всякие строки типа

Ха, Вова, вот ты и допрыгался (с модификацией ассемблера :). Регистр
С-большое, а это с-маленькое! Всё по стандарту gens4 (или вообще не используй
переменных с названиями по именам регистров)

C горячим приветом, Слава!


From Igor Maznitsa To All 27 February 1998

IM>> INTFUN
VH> То есть как, в программе ещё и Laser Basic учавствует? К тому же раз
VH> уж есть основной исходник, нужны и библиотеки, чтоб можно было
VH> попробовать поиграться с программой.. Сейчас же чтоб его опробовать
VH> необходимо самому писать программу с нуля...
Ядро лазербейсика продукт не мой, а HOME VIDEO GAMES Ent. и все вопросы по
приобретению к ним (когдато я писал про этот продукт и мне заявили, что мол
каким годом я живу)

Искpенне ваш Igor

From Igor Maznitsa To All 27 February 1998

VM> Как транслятор развязывается с типами параметров - откуда знает,
VM> когда char, когда int, а когда *сhar? Ссылочные параметры допустимы
VM> (типа &переменная)? И куда он эти параметры передаёт?
VM> Кста, обращение к ф-ции, похоже может быть и до её описания (без
VM> предобъявления)?
со ссылками работает (см генерируемый файл), параметры передаются через
стек со смещением, а возврат осуществляется в регистре BC
вот пример из все той же библиотеки laser.lib:

=== Cut ===
AT (x,y)
int x,y;
{
#asm
LD A,(IY+6)
CALL 3742
LD A,(IY+8)
ADD A,L
LD L,A
LD (23684),HL
#endasm
}
PKEY()
{
#asm
LD BC,#F7FE
LD A,#FF
IN D,(C)
AND D
LD B,#FB
IN D,(C)
AND D
LD B,#FD
IN D,(C)
AND D
LD B,#FE
IN D,(C)
AND D
LD B,#EF
IN D,(C)
AND D
LD B,#DF
IN D,(C)
AND D
LD B,#BF
IN D,(C)
AND D
LD B,#7F
IN D,(C)
AND D
LD B,0
CPL
LD C,A
#endasm
}
=== Cut ===

From Vova Hex To All 27 February 1998

VH>> И ассемблер их, естественно, не переваривает.. Он ведь думает что это
VH>> регистр C..

VM> Ха, Вова, вот ты и допрыгался (с модификацией ассемблера :).

Ага, и всё зря -- теперь на C писать будем.. :))

VM> Регистр С-большое, а это с-маленькое! Всё по стандарту gens4 (или
VM> вообще не используй переменных с названиями по именам регистров)

Кстати, единственную строку "main(){int c;c++;}" он откомпилировал как

=== Cut ===
_main
PUSH HL
PUSH IY
LD HL,00
ADD HL,SP
LD IY,00
ADD IY,SP
EXX
LD HL,0
ADD HL,SP
LD BC,2
OR A
SBC HL,BC
LD SP,HL
EXX

PUSH HL
PUSH DE
LD DE,0
OR A
SBC HL,DE
PUSH HL
POP BC
POP DE
POP HL
PUSH BC
PUSH HL
PUSH BC
POP HL
LD C,(HL)
INC HL
LD B,(HL)
POP HL
INC BC
POP DE
LD A,C
LD (DE),A
INC DE
LD A,B
LD (DE),A
DEC DE
DEC BC
LD SP,IY
POP IY
POP HL
RET
=== Cut ===

:-? Hо это не страшно. Интересно как он поведёт себя с метками длиной более
шести символов.. Ещё интересна реакция на команду c-- вне блока.. В общем
интересный компилятор. :))

From Dmitry Grigoryev To All 1 March 1998


Привет, Igor!

Пятница 27 Февpаля 1998 21:03, Igor Maznitsa wrote to Vova Hex:

[пропущено...]

IM> Ядро лазербейсика продукт не мой, а HOME VIDEO GAMES Ent. и все
IM> вопросы по приобретению к ним (когдато я писал про этот продукт и мне

Фривара давно, скорее всего.

IM> заявили, что мол каким годом я живу)

И что, с того времени, это ядро стало более быстрым? Ты его оптимизировал, что
ль? Что-то я не заметил, судя по тому, что выдает твой компилятор... Хорошая
программа, но очень уж "грязный" код на выходе. Чем это лучше, чем обычное
применение уже известных и поросших мхом компиляторов бейсика, си, паскаля?
Hеужели, из под hi-soft C код хуже получается или он меньше операторов
поддерживает?

IM> Искpенне ваш Igor

С уважением, Дмитрий (OLDMAN).
ZXNet: 095/100.1
old...@i-connect.ru


From Vyacheslav Mednonogov To All 2 March 1998

IM> чтоб оптимизировать было проще, да и библиотеки создавать можно

Если многократно придётся модифицировать исходник, то столь же многократно
придётся руками оптимизировать оттранслированый файл (фактически, выполнять одну
и ту же работу)

C горячим приветом, Слава!


From Vyacheslav Mednonogov To All 2 March 1998


Get Msg, Vova!

27 Feb 98 19:37, Vova Hex cooбщил Vyacheslav Mednonogov про {По поводу PC110}:

VH> Кстати, единственную строку "main(){int c;c++;}" он откомпилировал как
VH> === Cut ===
VH> _main
VH> PUSH HL
VH> PUSH IY

/скип/

Да, странно, что main транслируется как обычная функция. Имхо, для спека
можно было бы ограничится: _main ENT $. Видимо это сделано с прицелом на
нормальную ОС (типа isDOS)...
Кста, тут и вторая недоработка видна, что даже при отсутствии передаваемых
параметров внутри ф-ции всё равно делается вид, что они есть. Hо Игорь и
предупреждал, что транслятор не оптимизирующий.

C горячим приветом, Слава!


From Roman Petrov To All 7 March 1998

Отоптимизиpуй-ка килобайт 70 ассемблеpного текста. Мало не покажется :(

IM> Дабы вы не гундели по поводу того, что он ни на что не годен, я кинул
IM> демку её размер кб 40, но это потому, что там дофига лишнего и я
IM> нифига не оптимизировал
Ага, мне особенно понpавился пpоцесс пpисвоения текста в main() - класс!
(имеется в виду то, как это оттpанслиpовалось)

IM> P.S. Кстати, транслятор посмотрел Андрей Савичев и ему понравилось.
Мне, кстати, тоже понpавилось, но если бы еще его доделать, то было бы
пpосто здоpово. Собеpу воедино все свои пожелания:
- сделать циклы for
- заточить тpанслятоp к улучшенному asm80 (чтоб можно было пеpеменные типа
c, b, a использовать).
- постаpаться сделать * и /.
- сделать хоть какой-нибудь оптимизатоp.

C уважeниeм, Роман aka Megus of Brain Wave corp.

[Team ZX-Spectrum] [Team Агата Кpисти] [Team Metallica] [Team Iron Maiden]

... Or are you unforgiven too?

From Rick Murray To All 16 March 1998

зашибись! :):)

IM> подпрограмм. Вобщем умные люди оценят, а мнение дураков мне пофиг.

да уж...


Пока!
Rick Murray
mur...@geocities.com http://letit.home.ml.org ICQ:6653886