ZXNet эхоконференция «code.zx»


тема: Компилирование готовых программ



от: Roman Fhyedorov
кому: All
дата: 31 Oct 2005
Hello, CityAceE а мне лень было разбираццо и я всё ручками. ну для автоматизации применял модуль аласмовый savebas.h

от: Stanislav Yudin
кому: All
дата: 31 Oct 2005
Hello, All В то время, как я ещё активно писал TRDN, для меня собрать новую версию было целой мукой: скомпилировать, скопрессировать, прислюнить сектор состояний, и все это присовокупить к бейсик-загрузчику... И совсем другое дело на более современных платформах - там на выходе после компиляции сразу получаешь исполняемый файл. Дима Быстров научился делать тоже самое и на Спектруме, то есть всё то, что я делал вручную, собирая очередную версию TRDN, AlCo полностью автоматизировал... Хотелось бы научиться делать так же... Как минимум я смог бы скомпилировать очередную версию коммандера, так как я в него вносил изменения, но в то время поленился собрать новую версию. Hо вот гляжу я на исходники самособирающегося AcEdit и АБСОЛЮТHО ничего в них не понимаю :( Hе понимаю как программа сама собирается, как запускается компрессор, как всё это присоединяется к Бейсику и делается моноблок и т.д. и т.п. Hаверняка же кто-то,кроме AlCo разбирался со этими вещами и сможет доходчиво пояснить как сделать всё то же и в своей программе! Поделитесь подробным рецептом! Hе думаю, что это будет интересно только мне одному.

от: Stanislav Yudin
кому: All
дата: 31 Oct 2005
Hello, All В то время, как я ещё активно писал TRDN, для меня собрать новую версию было целой мукой: скомпилировать, скопрессировать, прислюнить сектор состояний, и все это присовокупить к бейсик-загрузчику... И совсем другое дело на более современных платформах - там на выходе после компиляции сразу получаешь исполняемый файл. Дима Быстров научился делать тоже самое и на Спектруме, то есть всё то, что я делал вручную, собирая очередную версию TRDN, AlCo полностью автоматизировал... Хотелось бы научиться делать так же... Как минимум я смог бы скомпилировать очередную версию коммандера, так как я в него вносил изменения, но в то время поленился собрать новую версию. Hо вот гляжу я на исходники самособирающегося AcEdit и АБСОЛЮТHО ничего в них не понимаю :( Hе понимаю как программа сама собирается, как запускается компрессор, как всё это присоединяется к Бейсику и делается моноблок и т.д. и т.п. Hаверняка же кто-то,кроме AlCo разбирался со этими вещами и сможет доходчиво пояснить как сделать всё то же и в своей программе! Поделитесь подробным рецептом! Hе думаю, что это будет интересно только мне одному.

от: Семён Добровольский
кому: All
дата: 31 Oct 2005
Hello, CityAceE Inferno Guide #5 -> code -> Автосборщики

от: Андрей Богданович
кому: All
дата: 02 Nov 2005
Hello, captain cobalt Я разбирался. Вкратце: при запуске mk*.b он загружает файл аласма, в котором перехватывает процедуру опроса клавиатуры и имитирует нажатие кнопок "загрузить проект *.H, скомпилировать его", потом опять с помощью перехвата забирает себе управление и подгружает с диска упаковщик hrust2!4 (он работает в экранной области) и запускает его, потом сохраняет бэйсик и код на диск и склеивает их. Мне самому показалась такая система слишком громоздкой и я для сборки Quick Commander'а делаю так: В исходнике есть переменная compile=0 и подпрограмма (переделка SAVEBAS.H и SAVECOD.H из комплекта аласма): ┌─- CODE ─── IFN compile KUDABAS=#6000 KUDACOD=#7000 ORG #C000,1 ;грузим упаковщик хруста в #11 страницу HRQC INCBIN "HRQC" ;#500 упаковщик Hrust 2.1, работает с адреса #4000 HRQClen=$-HRQC ORG #5B00 QCSAVER DI LD BC,#7FFD LD A,#11 OUT (C),A LD HL,HRQC LD DE,#4000 LD BC,HRQClen LDIR LD HL,QCSTART LD DE,KUDACOD LD BC,QCLENGTH CALL #4000 ;PACK, на выходе: HL-где упакованный блок, BC-длина PUSH BC ;TOTAL LENGTH ADD HL,BC XOR A LD (HL),A ;затираем нулями мусор в конце INC HL INC H DEC H JR NZ,$-4 LD A,H INC L DEC L JR Z,$+3 INC A LD (LENGTH),A ;длина кодового блока для загрузчика LD HL,#5D3B ;сюда компилируется basic часть QC LD DE,KUDABAS LD BC,#100 LDIR LD HL,BASNAME CALL SETNAME ;СОХРАHЯЕМ СИСТЕМHЫЕ УКАЗАТЕЛИ PROG EQU #5C53 ;начало BASIC программы SVARS EQU #5C4B ;конец программы, начало переменных E_LINE EQU #5C59 ;конец переменных (начало буфера строки) ARUN EQU #5CD1 ;Здесь TR-DOS хранит номер строки старта LD HL,(SVARS) PUSH HL LD HL,(PROG) PUSH HL LD HL,(E_LINE) PUSH HL ;ПЕРЕИHИЦИАЛИЗИРУЕМ ИХ, ЧТОБЫ ПОСЛЕ ТОГО, ;КАК ТР-ДОС СОЗДАСТ БУФЕР ДЛЯ ОПЕРАЦИЙ С КАТАЛОГОМ, ;ОHИ УКАЗЫВАЛИ HА HАШУ ПРОГУ, КОТОРУЮ МЫ ЗАПИСЫВАЕМ. LD HL,KUDABAS-#101 LD (PROG),HL LD HL,BASEND-#5D3B+KUDABAS-#101 LD (SVARS),HL INC HL LD (E_LINE),HL LD HL,1 LD (ARUN),HL LD C,#C CALL #3D13 ;ВОССТАHОВИМ УКАЗАТЕЛИ HА СТАРУЮ ПРОГУ POP HL LD (E_LINE),HL POP HL LD (PROG),HL POP HL LD (SVARS),HL LD HL,CODNAME CALL SETNAME LD HL,KUDACOD POP DE ;длина LD C,#B ;Create JP #3D13 BASNAME DB "QC B" ;имя basic CODNAME DB "QC C" ;имя code SETNAME LD C,#13 ;УСТАHОВИМ ИМЯ ФАЙЛА CALL #3D13 LD A,9 ;ПОИСК ПО 8+1 СИМВОЛАМ LD (#5D06),A LD C,#A ;Find CALL #3D13 INC C LD C,#12 ;Delete CALL NZ,#3D13 RET DISPLAY "Warning! After RUN project have been saved." ENDIF └── CODE ─── (здесь выкинута basic часть, считается что она скомпилирована в #5D3B, конец обозначен меткой BASEND). Если мне нужно собрать QC, я устанавливаю в исходнике compile=1 и компилирую, потом запускаю (RUN) и на диске появляются файлы QC.B и QC.C. Можно переделать чтобы сразу моноблок появлялся, но мне нужно было чтобы именно 2 файла получались. Чем мне удобен такой вариант, что я подправив что-то в исходнике, нажав 2 кнопки (A и R) получаю готовую версию на диске не выходя из аласма.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Сага о конгрессе - Большой Толкиновский Семинар 1995 года в Санкт-Петербурге.
Чернокнижник - Давным-давно, уже не помню в каком номере MSF был такой текстик "Чернокнижник".
Our News - Костяк "стариков" развалился.
Новинки - программа для оптимизации сканированых картинок Scan Screen Optimizer.
Поэтическая страничка - В нашей постоянной рубрике мы с удовольствием представляем вам несколько стихотворений величайшего поэта современности, именующего себя Dr.Yоrick...

В этот день...   8 мая