nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 15:05



Reply to topic  [ 84 posts ]  Go to page 1, 2, 3, 4, 5, 6  Next
Старье от Шаоса 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Решил опубликовать несколько своих первых программ для спектрума,
которые я написал МНОГО лет назад (в 1992-1993) и оцифровал в 2001 году:

http://www.nedopc.org/nedopc/zx/soft-zx/zx-shaos.zip (24K)

Тогда у меня был спектрум-совместимый компьютер Урал-48 и все
тогдашние мои программы были ленточными. Одна из первых программ,
которые я набрал и потом слегка модифицировал - это бейсик-программа
для ввода машинных кодов из мини-книжки от Солона под незатейливым
названием "Ассемблер для ПК ZX SPECTRUM" (которую я кстати взял с
собой в США). Прогрмма находится в архиве под названием _hexloa2.tap:

Image

Затем все кодовые вставки я писал именно на ней. В ноябре 1992 года
я закончил программу LIFE-2 - в составе файла _life_2.tap можно найти
бейсиковскую часть, кодовую часть, а также музыкальное сопровождение,
созданное мною в музыкальном редакторе WHAM! Программа реализует
клеточную игру ЖИЗНЬ - управлять цифрами (движение "пера" - 5,6,7,8;
поставить точку - 9; стереть - 0; запустить жизнь - 1):

Image

В апреле 1993 после нескольких экспериментов я создал программу ZVUK-2,
которую можно найти в файле _zvuk2.tap. Программа позволяла записывать
в память компьютера звук и музыку с магнитофонного входа, воспроизводить
ее там же, а также совершать над сохраненным звуком некоторые действия,
как например блочное копирование и т.д. В программе использовался
русский шрифт, сделанный по рецепту из какой-то спектрумистской книжки
того времени, названия которой я уже не помню:

Image

В файле _z_demo1.tap содержится кодовый блок, записанный этой
программой в те далекие времена, который показывает что можно
было cделать со звуком путем блочных перемещений. Отличительной
особенностью программы ZVUK-2 является то, что кодовый блок ответственный
за запись и воспроизведение звука (кстати набранный с помощью всё
того же hexloadera) был встроен непосредственно в бейсик-код.

_________________
:dj: https://mastodon.social/@Shaos


Last edited by Shaos on 18 Jun 2013 18:12, edited 2 times in total.



27 Jan 2006 23:25
Profile WWW
Doomed

Joined: 16 Mar 2002 17:00
Posts: 490
Reply with quote
Post 
Забавно - одним из первых моих шагов в программировании на низком уровне тоже была запись/воспроизведение звука на Спеке. Причём книжки по ассму Z80 у меня не было, а была книжка по РК86 (МРБ-шная), там было описание ВМ80. По Спеку была только Va-Print'овская книжка по бейсику (10 ошибок на каждой странице). И я в таких условиях разбирался, писал коды команд в бейсике POKE'ами. Даже заработало, хоть и не сразу. Только вот не сохранилось, вообще почти ничего с кассетных времён не сохранилось (как и самих кассет)...

Это было лет 10 назад, где-то 96 год. Офигеть, сколько времени прошло.


28 Jan 2006 01:47
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Хехе... я тоже и на Спеке и на Орионе прикалывался с однобитной записью звука.... Потом на Орионе я поставил 8бит ЦАП (на сопрушках лесенкой R-2R) и АЦП (на ЦАП R-2R и ИР17). Но это уже другая история...


28 Jan 2006 02:33
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Shiru Otaku wrote:
Причём книжки по ассму Z80 у меня не было, а была книжка по РК86 (МРБ-шная), там было описание ВМ80.


Вообще-то я в те времена тоже знал только 8080 коды :) Потому как в 1991 я долго и упорно разбирался с "ПК-01 Львов" (жаль что ничего из этого не сохранилось) - поэтому все что я набирал в кодах на спектруме через hexload было до этого аккуратно написано в тетрадочке мнемоникой i8080 и вручную сассемблировано ;)

Image

Из чисто зилоговских команд я пробовал только LDIR - на большее меня не хватило...

_________________
:dj: https://mastodon.social/@Shaos


Last edited by Shaos on 29 Jan 2006 09:19, edited 2 times in total.



28 Jan 2006 07:51
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Shaos wrote:
музыкальное сопровождение, созданное мною в музыкальном редакторе WHAM!


Эта музычка из LIFE-2 была одним из первых моих экспериментов с WHAM! Music Box в конце 1992. От нее остался только скомпилированный бинaрник для встраивания в программное обеспечение. Вот как это звучит в MP3: wham-life.mp3 (357K).

Из моего WHAM-творчества в формате музыки для WHAM! Music Box удалось восстановить 3 музычки, написанные летом 1993 года - вот они: wham-shaos.zip (589 bytes). Если кому хочется послушать как оно звучит, но лень качать и разбираться с WHAM - вот MP3 варианты этих моих ранних музыкальных творений ;)
- wham-m0.mp3 (385K)
- wham-m1.mp3 (519K)
- wham-m2.mp3 (711K)

Примечательна судьба мелодии под кодовым названием M2 - я ее восстановил с кассеты весной 1997 года и перенабрал в музыкальном редкаторе Scream Tracker на PC. Вот MP3 того что из этого получилось: shaos-m2.mp3 (718K). Той же весной 1997 года я обработал эту мелодию и получил вот эту композицию: shaos-m2s.mp3 (2.7M). На мой дилетантский вкус - вполне удобоваримо получилось (если у кого-то из читающих вдруг случайно окажется музыкальное образование - большая просьба сильно не пинать, так как у меня такого образования нету)
:dj:

_________________
:dj: https://mastodon.social/@Shaos


Last edited by Shaos on 28 Jan 2006 17:55, edited 9 times in total.



28 Jan 2006 15:40
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Shaos wrote:
В файле _z_demo1.tap содержится кодовый блок, записанный этой
программой в те далекие времена, который показывает что можно
было cделать со звуком путем блочных перемещений.


Эти 36 секунд однобитного звука влезли в 36 Кбайтный кодовый блок (т.е. это было равносильно скорости 8 килобит в секудну - неплохо ; ).

Если возникли трудности с воспроизведением, а послушать как записывал и воспроизводил ZVUK-2 хочется - вот MP3 (спасибо glukalka и mp3lame):
http://www.nedopc.org/nedopc/zx/soft-zx/zvuk-demo1.mp3 (155K).

_________________
:dj: https://mastodon.social/@Shaos


28 Jan 2006 15:51
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Еще в продолжении темы - вот простейшая бейсик программа, которую я написал за 15 минут чтобы обеспечить цветовое сопровождение студенческой вечеринки в 1993 году: 1993show.zip (476 bytes):

Image

_________________
:dj: https://mastodon.social/@Shaos


29 Jan 2006 08:04
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Вторая волна моего увлечения спектрумом пришлась на 1996-1997 годы - когда у меня дома еще не было PC, а чего-то программировать сильно хотелось. Вот небольшой плод моего творчества того времени - говорящая программа для изучения английского языка: 1996engl.zip (3.6K):

Image

Программа написана на бейсике c русификатором (таким же как и в ZVUK-2) и в ней использовался кодовый блок - говорилка размером меньше килобайта, выдранная мной еще в 1993 году из какой-то восточно-европейской говорящей программы. Английские слова в исполнении этой говорилки звучали вот так: english.mp3 (135K).

_________________
:dj: https://mastodon.social/@Shaos


29 Jan 2006 08:10
Profile WWW
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Shaos wrote:
Shaos wrote:
В файле _z_demo1.tap содержится кодовый блок, записанный этой
программой в те далекие времена, который показывает что можно
было cделать со звуком путем блочных перемещений.


Эти 36 секунд однобитного звука влезли в 36 Кбайтный кодовый блок (т.е. это было равносильно скорости 8 килобит в секудну - неплохо ; ).

Если возникли трудности с воспроизведением, а послушать как записывал и воспроизводил ZVUK-2 хочется - вот MP3 (спасибо glukalka и mp3lame):
http://www.nedopc.org/nedopc/zx/soft-zx/zvuk-demo1.mp3 (155K).


Я тоже прикалывался над такой техникой "упаковки" - выявлял похожие блоки мелодии. Потом из них восстанавливал мелодию.

PS А куда мой пост с книжкой делся? :-?


Last edited by HardWareMan on 29 Jan 2006 09:21, edited 1 time in total.



29 Jan 2006 09:17
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
HardWareMan wrote:
Я тоже прикалывался над такой техникой "упаковки" - выявлял похожие блоки мелодии. Потом из них восстанавливал мелодию.


А мои эксперименты со сравнением кусков звука, а также надо попыткой вычислять частоту основной ноты (все на спектруме естественно) ни к чему не привели...

HardWareMan wrote:
А куда мой пост с книжкой делся? :-?


Ушел в соседний топик ;)

http://www.nedopc.org/forum/viewtopic.php?t=8235

P.S. По поводу книжек - туда давайте писать

_________________
:dj: https://mastodon.social/@Shaos


Last edited by Shaos on 29 Jan 2006 09:24, edited 1 time in total.



29 Jan 2006 09:20
Profile WWW
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Shaos wrote:
HardWareMan wrote:
Я тоже прикалывался над такой техникой "упаковки" - выявлял похожие блоки мелодии. Потом из них восстанавливал мелодию.


А мои эксперименты со сравнением кусков звука, а также надо попыткой вычислять частоту основной ноты (все на спектруме естественно) ни к чему не привели...


Да ты че? Какой анализ аналогового сигнала на Z80 (у меня на ВМ80)? Все в ручную: слушалось, отмечалось. Кусками записывалось, компилилось и все. За день реально было создать музу. Иногда удавалось до 4х минут впихнуть в 40кБ. При этом так сильно сжималась в основном только попса. =))) Ну, и иногда компьютерные/инструментальные мелодии.
+++ Для тех, кто соскучился по однобитовому звуку +++
Вот, пример 1 битной записи звука:
http://vis-image.narod.ru/lbitsnd/1bit.mp3 (470Кб)
Добавляем всего один бит, и уже лучше:
http://vis-image.narod.ru/lbitsnd/2bit.mp3 (470Кб)
Три бита звучан совсем неплохо:
http://vis-image.narod.ru/lbitsnd/3bit.mp3 (470Кб)
Ну а четыре бита - уже роскошь, но не для 8ми битных компов:
http://vis-image.narod.ru/lbitsnd/4bit.mp3 (470Кб)
Хотя, в наших АОНах "Русь" все на 4х битах... =)


02 Feb 2006 13:09
Profile
Doomed

Joined: 16 Mar 2002 17:00
Posts: 490
Reply with quote
Post 
HardWareMan wrote:
Ну а четыре бита - уже роскошь, но не для 8ми битных компов

Это ещё с чего-бы?;) Все оцифровки в оригинальных играх для 128к спека были именно в 4-х битах. И Digital Studio с 4-битными сэмплами работает. Про остальные трекеры, работающие с 8-ми битными сэмплами я и вообще молчу:)

Про 16-цветное почти полноэкранное видео одновременно с 8-битным звуком на ~16кгц (на ATM2, Z80@7mhz) здесь наверное лучше и не упоминать:)


02 Feb 2006 13:39
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Shiru Otaku wrote:
Про 16-цветное почти полноэкранное видео одновременно с 8-битным звуком на ~16кгц (на ATM2, Z80@7mhz) здесь наверное лучше и не упоминать:)


Маньяки :no:

_________________
:dj: https://mastodon.social/@Shaos


02 Feb 2006 14:03
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Решил восстановить тексты программ из TAP-файлов с помощью утилиты listbasic из fuse-utils

Shaos wrote:
Одна из первых программ,
которые я набрал и потом слегка модифицировал - это бейсик-программа
для ввода машинных кодов из мини-книжки от Солона под незатейливым
названием "Ассемблер для ПК ZX SPECTRUM" (которую я кстати взял с
собой в США). Прогрмма находится в архиве под названием _hexloa2.tap:

Image

Code:
  100 REM MONITOR PROGRAM
  110 DIM z(4): LET z(1)=4096: LET z(2)=256: LET z(3)=16: LET z(4)=1
  120 LET ze=0: LET on=1: LET tw=2
  121 LET qk=256: LET mr=140
  122 LET wl=340
  123 LET l$="6C00"
  125 LET n$=l$: GO SUB 3000: LET lm=d
  130 GO SUB 2000
  140 CLS : PAPER 3: INK 7: PRINT "HEXLOAD-2 1982,1992  Shabarshin "
  145 PAPER 7: INK 0: PRINT "Start of,machin code area=";l$
  150 PRINT "MENU": PRINT : PRINT "     Write machin code.........1"
  160 PRINT : PRINT "     Save  machin code.........2"
  170 PRINT : PRINT "     Load  machin code.........3"
  180 PRINT : PRINT "     List  machin code.........4"
  190 PRINT : PRINT "     Move  machin code.........5"
  195 PRINT : PRINT "     Work  of  program.........6"
  200 PRINT : PRINT "Please press appropriate key. "
  210 LET g$=INKEY$
  220 IF g$=" " THEN STOP
  230 IF g$="" OR g$<"1" OR g$>"6" THEN GO TO 210
  240 CLS : PRINT "Start of machin code area=";l$
  250 GO TO 300*VAL g$
  300 REM ***WRITE***
  310 INPUT "WRITE to address:";n$: GO SUB 3000
  320 IF d>mm OR d<lm THEN BEEP 1,10: GO TO 310
  325 PRINT : PRINT "to RETURN to!MENU ENTER""m"""
  330 INK 2: PRINT "WRITE address:";n$
  331 PAPER 6: PRINT "0 1 2 3 4 5 6 7 8 9 A B C D E F ": PAPER 7: INK 0
  335 LET c=32*(d/16-INT (d/16)): PRINT AT 5,c;
  340 LET a$=""
  350 IF a$="" THEN INPUT "ENTER hex. CODE: ";a$
  360 IF a$(on)=" " OR a$(on)="m" THEN GO TO mr
  370 IF LEN a$/tw<>INT (LEN a$/tw) THEN BEEP 1,10: GO TO wl
  380 LET c=ze
  390 FOR f=16 TO on STEP -15
  400 LET a=CODE a$((f=16)+tw*(f=on))
  410 IF a<48 OR a>102 OR (a>57 AND a<65) OR (a>70 AND a<97) THEN BEEP 1,10: GO TO wl
  420 LET c=c+f*((a<58)*(a-48)+(a>64 AND a<71)*(a-55)+(a>96)*(a-87))
  430 NEXT f: POKE d,c: LET d=d+on
  440 PAPER 7-2*(d/2-INT (d/2)): PRINT a$;: PAPER 7
  450 LET a$=a$(3 TO )
  460 IF d=UDG THEN PRINT "WARNING:YOU ARE NOW IN the USER GRAPHICS AREA!": BEEP 1,0: GO TO wl
  470 IF d=UDG-20 THEN PRINT "WARNING:YOU ARE NOW IN ROUTINES MEMORY AREA!": BEEP 1,0: GO TO wl
  480 GO TO wl+on
  600 REM ***SAVE***
  610 INPUT "SAVE m/C. FROM ADDRESS: ",n$: GO SUB 3000: LET a=d
  620 INPUT "NUMBER OF BYTES to be SAVED: ",n
  630 INPUT "NAME OF the ROUTINE: ";a$
  640 SAVE a$CODE a,n
  650 PRINT "DO YOU WISH to VERITY?"
  660 INPUT v$
  670 IF v$<>"y" THEN GO TO mr
  680 PRINT "REWIND tape AND PRESS""PLAY""."
  690 VERIFY a$CODE a,n
  700 PRINT "O.K. ": PAUSE 50
  710 GO TO mr
  900 REM ***LOAD***
  910 INPUT "LOAD m.C. TO ADDRESS STARTING: ";n$: GO SUB 3000: LET a=d
  920 IF a>mm OR a<lm THEN GO TO 910
  930 INPUT "Program NAME: ";a$
  940 PRINT "Press ""PLAY"" ON tape. "
  950 LOAD a$CODE : GO TO mr
 1200 REM ***LIST***
 1210 LET a$="0123456789ABCDEF"
 1220 INPUT "LIST ADDRESS: ";n$: GO SUB 3000
 1230 PRINT "Press ""m"" to RETURN to MENU. "
 1240 LET c=PEEK d: LET a=INT (c/16): LET b=c-16*a
 1241 LET a1=INT (d/4096): LET a2=INT ((d-a1*4096)/356)
 1242 LET a3=INT ((d-a1*4096-a2*256)/16): LET a4=d-a1*4096-a2*256-a3*16
 1245 LET q$="": LET co=PEEK d: IF co>31 AND co<165 THEN LET q$=CHR$ co
 1250 PRINT a$(a1+on);a$(a2+on);a$(a3+on);a$(a4+on);"  ";a$(a+on);a$(b+on);"   ";q$
 1260 LET d=d+on
 1270 IF INKEY$="m" THEN GO TO mr
 1280 GO TO 1240
 1500 REM ***MOVE***
 1510 INPUT "MOVE from memory: ";n$: GO SUB 3000: LET fm=d
 1520 INPUT "MOVE until memory: ";n$: GO SUB 3000: LET um=d
 1530 INPUT "MOVE to memory: ";n$: GO SUB 3000: LET tm=d
 1540 IF tm>fm THEN GO TO 1610
 1550 LET mo=tm
 1560 FOR i=fm TO um
 1570 POKE mp,PEEK i
 1580 LET mp=mp+on
 1590 NEXT i
 1600 GO TO mr
 1610 LET mp=um+tm-fm
 1620 FOR i=um TO fm STEP -on
 1630 POKE mp,PEEK i
 1640 LET mp=mp-on
 1650 NEXT i
 1660 GO TO mr
 1800 REM ***WORK***
 1810 INPUT "Address of start: ";n$: GO SUB 3000: CLS
 1820 RANDOMIZE USR d: GO TO mr
 2000 LET rt=PEEK 23732+qk*PEEK 23733
 2010 IF rt=65535 THEN LET mm=65347: LET UDG=65367
 2020 IF rt=32777 THEN LET mm=32579: LET UDG=32599
 2030 LET n1=INT (UDG/qk)
 2040 POKE 23675,UDG-n1*qk: POKE 23676,n1
 2050 RETURN
 3000 REM sub***TRANS***
 3005 IF LEN n$<>4 THEN GO TO mr
 3010 LET d=ze: FOR i=1 TO 4: LET a=CODE n$(i)
 3020 IF a<48 OR a>102 OR (a>57 AND a<65) OR (a>70 AND a<97) THEN GO TO mr
 3030 LET d=d+z(i)*((a<58)*(a-48)+(a>64 AND a<71)*(a-55)+(a>96)*(a-87))
 3040 NEXT i: RETURN


P.S. Как я уже писал выше, я взял эту бейсик-программу (и слегка модифицировал) из мини-книжки от Солона под незатейливым названием "Ассемблер для ПК ZX SPECTRUM":

Image

_________________
:dj: https://mastodon.social/@Shaos


17 Dec 2011 09:03
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Shaos wrote:
Затем все кодовые вставки я писал именно на ней. В ноябре 1992 года
я закончил программу LIFE-2 - в составе файла _life_2.tap можно найти
бейсиковскую часть, кодовую часть, а также музыкальное сопровождение,
созданное мною в музыкальном редакторе WHAM! Программа реализует
клеточную игру ЖИЗНЬ - управлять цифрами (движение "пера" - 5,6,7,8;
поставить точку - 9; стереть - 0; запустить жизнь - 1):

Image

Code:
   10 LOAD "life"CODE 27648,256: LOAD "LIFE"CODE 50000
   15 BORDER 1: PAPER 1: INK 7: POKE 50026,1: POKE 50035,235
   20 LET n=0: DIM p(5)
   25 CLS : PRINT INK 2;"  LIFE-2 15.11.1992";: RANDOMIZE USR 50000
   30 LET x=1: LET y=166: LET x1=x: LET y1=y
   40 FOR i=1 TO 5: LET p(i)=POINT (x,y+i): PLOT x,y+i: NEXT i
   50 LET a$=INKEY$: IF a$="" THEN GO TO 50
   55 IF a$="q" THEN GO TO 25
   60 IF a$="0" THEN PLOT INVERSE 1;x,y: GO TO 50
   70 IF a$="9" THEN PLOT x,y: GO TO 50
   80 IF a$="8" THEN IF x<>254 THEN LET x1=x+1
   90 IF a$="7" THEN IF y<>166 THEN LET y1=y+1
  100 IF a$="6" THEN IF y<>0 THEN LET y1=y-1
  110 IF a$="5" THEN IF x<>1 THEN LET x1=x-1
  120 IF a$="1" THEN GO TO 150
  130 GO SUB 500: LET x=x1: LET y=y1: GO TO 40
  150 GO SUB 500: RANDOMIZE USR 27873
  160 LET n=n+1: PRINT AT 0,23;n;
  170 LET a$=INKEY$: IF a$="q" THEN GO TO 30
  180 RANDOMIZE USR 27728: GO TO 160
  500 FOR i=1 TO 5: IF p(i)=0 THEN PLOT INVERSE 1;x,y+i
  510 NEXT i: RETURN

_________________
:dj: https://mastodon.social/@Shaos


17 Dec 2011 09:04
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 84 posts ]  Go to page 1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.