расовый загрузчик демо.

Ответить
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

расовый загрузчик демо.

Сообщение shiny »

Оставлю тут заготовку(ужясм).

Код: Выделить всё

;-----------------------------------------------------------
 macro    sectors datab,datae

 IF low (datae-datab)=0
   db 1,5,high (datae-datab)
 ELSE
   db 1,5,(1+high (datae-datab))
 ENDIF

    endm

 MODULE boot
Basic:
 db #00,#01;номер строки
 DW EndLine1 - Line1
Line1:
 db #EA;REM
 ld sp,#5FFE

    res 4,(iy+1)
    xor a:out ($FE),a
    ld hl,$5AFF,de,$5AFe,bc,$1B00-1,(hl),0:lddr

;demo
 di
 ld de,(#5CF4)
 ld hl, #6000
 ld a,#10,bc,#7FFD:out (c),a
 sectors begin,end
 call #3d13

 di
 ld de,(#5CF4)
 ld hl, #C000
 sectors page0b,page0e
 call #3d13

 di
 ld de,(#5CF4)
 ld hl, #C000
 ld a,#11,bc,#7FFD:out (c),a
 sectors page1b,page1e
 call #3d13

 di
 ld de,(#5CF4)
 ld hl, #C000
 ld a,#13,bc,#7FFD:out (c),a
 sectors page3b,page3e
 call #3d13

 di
 ld de,(#5CF4)
 ld hl, #C000
 ld a,#14,bc,#7FFD:out (c),a
 sectors page4b,page4e
 call #3d13

 jp #6000


 db "yo,lamer!"
 db #0D
EndLine1:
 db #00,#02
 DW EndLine2 - Line2
Line2:
 db #20,#FD,#B0
 db #22,#32,#34,#35,#37,#35,#22;clear val "24575"
 db #3A; :
 db #F9,#C0,#28,#35;randomize usr (5+256*peek val "23635"+peek val "23636"
 db #0E,#00,#00,#05,#00,#00,#2B
 db #32,#35,#36
 db #0E,#00,#00,#00,#01,#00,#2A,#BE

 db #B0
 db #22,#32,#33,#36,#33,#36,#22;"23635"
 db #2B;???
 db #BE
 db #B0
 db #22,#32,#33,#36,#33,#35,#22;"23636"
 db #29,#0D;)
 db #80
 db #AA,1,0;;;;;;;;;;;;;autorun line,change program length to -4, e.g. 83-4=79
EndLine2:
EndBasic:
 ENDMODULE

    display /d,end-begin

    EMPTYTRD "dust.trd" ;create empty TRD image
  SAVETRD "dust.trd", "boot.B", boot.Basic, boot.EndBasic - boot.Basic
    SAVETRD "dust.trd","demo.C",begin,end-begin

    PAGE 0
    SAVETRD "dust.trd","pg0.C",page0b,page0e-page0b
    PAGE 1
    SAVETRD "dust.trd","pg1.C",page1b,page1e-page1b
    PAGE 3
    SAVETRD "dust.trd","pg3.C",page3b,page3e-page3b
    PAGE 4
    SAVETRD "dust.trd","pg4.C",page4b,page4e-page4b

;-----------------------------------------------------------
Код демо расположен по адресу $6000 между метками begin и end.
Данные в страничках раскиданы так:

PAGE 0
org $C000
page0b:
[тут все нужное]
page0e:


Единственное, что написано некорректно - макрос Sectors. Пущай krt17 поправит.
Ненависть- это подарок
Аватара пользователя
grach
Сообщения: 330
Зарегистрирован: 24 фев 2018, 12:50
Откуда: Новосибирск
Контактная информация:

Сообщение grach »

до сих пор плаваю в трдосе - делаю через опу. кассетное детство даёт о себе знать :)
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

ога. я глянул на твои кусочки из памяти и офигел слегка. Тут гораздо проще, главное не заблудиться в страницах.
Ненависть- это подарок
Аватара пользователя
krt17
Сообщения: 377
Зарегистрирован: 17 апр 2018, 23:45

Сообщение krt17 »

Шыншыл писал(а):Пущай krt17 поправит
Я уж заебся поправлять, хозяин барин, делай как завещал интроспек. Я тут зачем то сделал загрузчик через стек, типо компактно, только грузить нечего :) Очень меня забавляли потуги с уютного на энцати страницах, чем там закончился этот пиздец?
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

нинай о чом ты.
Ненависть- это подарок
Аватара пользователя
Random Great
Сообщения: 271
Зарегистрирован: 14 фев 2017, 00:00
Контактная информация:

Сообщение Random Great »

grach 55110 писал(а):до сих пор плаваю в трдосе - делаю через опу. кассетное детство даёт о себе знать :)
а как через tap расово грузить в разные области памяти 128к?
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

мляяя

32 out 32765,16:poke 23388,16:pause 1

конфигурацию порта 7FFD знаешь?
Ненависть- это подарок
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

krt17 55131 писал(а):
Шыншыл писал(а):Пущай krt17 поправит
Я уж заебся поправлять, хозяин барин, делай как завещал интроспек. Я тут зачем то сделал загрузчик через стек, типо компактно, только грузить нечего :) Очень меня забавляли потуги с уютного на энцати страницах, чем там закончился этот пиздец?
нашел скриншотик
Изображение
Ненависть- это подарок
Аватара пользователя
Random Great
Сообщения: 271
Зарегистрирован: 14 фев 2017, 00:00
Контактная информация:

Сообщение Random Great »

Шыншыл 75377 писал(а):мляяя
32 out 32765,16:poke 23388,16:pause 1
конфигурацию порта 7FFD знаешь?
Ага, cтраницы понятно как переключать. Вопрос как через код без использования интерпретатора BASIC загрузить несколько файлов с ленты в разные банки памяти. Аналогично trd-загрузчику...
Последний раз редактировалось Random Great 28 окт 2019, 20:34, всего редактировалось 1 раз.
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

https://zxpress.ru/book_articles.php?id=2184

читай процедуру 1366.

Хотя, можно и в Бейсике.
http://g0blinish.ucoz.ru/index/zx_games/0-23
исходники Fillomino
Ненависть- это подарок
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

Random Great 75373 писал(а):
grach 55110 писал(а):до сих пор плаваю в трдосе - делаю через опу. кассетное детство даёт о себе знать :)
а как через tap расово грузить в разные области памяти 128к?
Ты имеешь ввиду один файл и чтоб на ходу переключал страницы и грузил сразу в разные страницы?
Или отдельными файлами в разные страницы?
Аватара пользователя
Random Great
Сообщения: 271
Зарегистрирован: 14 фев 2017, 00:00
Контактная информация:

Сообщение Random Great »

kalantaj 75383 писал(а):Ты имеешь ввиду один файл и чтоб на ходу переключал страницы и грузил сразу в разные страницы?
Или отдельными файлами в разные страницы?
Как в trd, там отдельные файлы в разные страницы.
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

Ну так а в чём проблема?
Я думал чтоб был бейсик и один файл после него и чтоб во время загрузки этого непрерывного файла странички клацали и грузилось туда куда надо.
Отличий жеж нет считай - просто процедура загрузки не трдшная а таповская.
Аватара пользователя
GoodBoy
Сообщения: 662
Зарегистрирован: 09 июл 2016, 00:00

Сообщение GoodBoy »

Random Great 75373 писал(а):а как через tap расово грузить в разные области памяти 128к?
как вариант - грузить в нижнюю память (хоть 32768,16384), а после пересылать на нужную страницу.
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

Та вы объясните в чем проблема то? Клацнул страницу - загрузил файл. Клацнул другую - ещё загрузил. Зачем секс с перекидками с нижней памяти?
Аватара пользователя
Random Great
Сообщения: 271
Зарегистрирован: 14 фев 2017, 00:00
Контактная информация:

Сообщение Random Great »

Например загрузить сжатый zx7 файл в #8000 а потом переключить #C000 в нужную страницу и распаковать его туда.

К моему удивлению некоторые пользователи спектрум-совместимых компьютеров до сих пор грузят через tap ("хочу попробовать на реале..."), а сжатый файл позволит сократить время загрузки.
Последний раз редактировалось Random Great 31 окт 2019, 11:15, всего редактировалось 1 раз.
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

Блок нужно отдельно компилировать и собирать в тапку.
Ненависть- это подарок
Аватара пользователя
Random Great
Сообщения: 271
Зарегистрирован: 14 фев 2017, 00:00
Контактная информация:

Сообщение Random Great »

внутри модуля boot, насколько я понимаю, нельзя использовать jp и call <метка>?
Последний раз редактировалось Random Great 10 ноя 2019, 22:26, всего редактировалось 1 раз.
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

Ты о каком вообще модуле boot говоришь?
Аватара пользователя
Random Great
Сообщения: 271
Зарегистрирован: 14 фев 2017, 00:00
Контактная информация:

Сообщение Random Great »

kalantaj 76551 писал(а):Ты о каком вообще модуле boot говоришь?
Который в начале темы -

Код: Выделить всё

 MODULE boot
Basic:
 db #00,#01;номер строки
...
Область загрузки BASIC-программы может меняться, поэтому внутри кода в REM нельзя использовать команды перехода по адресу на метку внутри загрузчика, они будут неправильно скомпилированы sjasm.
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

Если будешь грузить трдосом, то всегда на 112 байт будет сдвинут бейсик. ВСЕГДА. Потому если не планируешь делать какой-нить универсальный загрузчик типа с автоопределением кассета/дискета (трдос) то можешь смело делать JP и CALL внутри загрузчика.
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

JR в помощь. или компилируешь код отдельно, и грузи его.
Ненависть- это подарок
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

Но даже если подключено что то ещё, что двинет ещё дальше бейсик, в приведенном в первом посте модуле код стартует в независимости от положения самого бейсика. Берется из системных переменных информация о текущем начале бейсик программы и смещение кодов относительно начала бейсика (5 байт)
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

После старта кодов в BC находится адрес старта. Используя его можно LDIRнуть свой код в нужный адрес и выполнять его там.
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

kalantaj 76604 писал(а):Но даже если подключено что то ещё, что двинет ещё дальше бейсик, в приведенном в первом посте модуле код стартует в независимости от положения самого бейсика. Берется из системных переменных информация о текущем начале бейсик программы и смещение кодов относительно начала бейсика (5 байт)
Хех, я так извращался с (23635) в кректрах для патча
Ненависть- это подарок
Ответить