Лет 9 назад занимался изучением платформы, но занятие остановилось из-за недостатка информации. Закончилось все интрошкой oboi - нашел исходник демки. Вчера узнал, что на форуме ZXDB открыли раздел, посвященный компьютеру. Один из открытых тредов касался кросс-средств разработки, на нем же возникли некоторые проблемы. Код взят из примера:
;LOAD "name" CODE <start><,length><,execute address>
;CALL n
device zxspectrum48
ORG #8000
begin
;
; Print an ASCII Table with 96 Characters
;
print_test: LD B,96 ; We want 96 characters in our ASCII Tabe
LD A,32 ; 32 is the ASCII code for space
loop2: LD C,A ; Temp store for the A Register as it's zeroed by the RST 16 call below
RST 16 ; Output A to current stream (Print the character in the A Register)
LD A,C ; Retrieve the A Register
ADD A,1 ; Set for the next ASCII Character
CP B ; Check if we've reached the last character
JR NZ,loop2 ; Keep looping until A=96
;
; Print a Text String
;
print_text: LD HL,text2 ; Set pointer to start of text
LD B,20 ; Set up loop counter, 20 characters to print
print_loop: LD A,(HL) ; Get character from pointer
RST 16 ; Print character
INC HL ; Move to next character
DJNZ print_loop ; If we've not yet reach the last character, then loop
;
; Now we wait for the User to press a key
;
wait_for_key: CALL $0169 ; Read the Keyboard (Zero if no key)
JR Z,wait_for_key ; If no key pressed, then loop
; A key was pressed....
RET ; Return back to BASIC
;
; Some Text Data
;
text2: DM "Howsaboutis, then!!!"
end
display /d,end-begin
savebin "hlw.cde",begin,end-begin
device zxspectrum48
ORG #8000
begin
;
; Print an ASCII Table with 96 Characters
;
print_test: LD B,96 ; We want 96 characters in our ASCII Tabe
LD A,32 ; 32 is the ASCII code for space
loop2: LD C,A ; Temp store for the A Register as it's zeroed by the RST 16 call below
RST 16 ; Output A to current stream (Print the character in the A Register)
LD A,C ; Retrieve the A Register
ADD A,1 ; Set for the next ASCII Character
CP B ; Check if we've reached the last character
JR NZ,loop2 ; Keep looping until A=96
;
; Print a Text String
;
print_text: LD HL,text2 ; Set pointer to start of text
LD B,20 ; Set up loop counter, 20 characters to print
print_loop: LD A,(HL) ; Get character from pointer
RST 16 ; Print character
INC HL ; Move to next character
DJNZ print_loop ; If we've not yet reach the last character, then loop
;
; Now we wait for the User to press a key
;
wait_for_key: CALL $0169 ; Read the Keyboard (Zero if no key)
JR Z,wait_for_key ; If no key pressed, then loop
; A key was pressed....
RET ; Return back to BASIC
;
; Some Text Data
;
text2: DM "Howsaboutis, then!!!"
end
display /d,end-begin
savebin "hlw.cde",begin,end-begin
Теперь нужно закинуть полученный бинарь hlw.cde на образ диска. Взял найденную тулзу mgtman, и тут облом: добавляется некорректный файл, который не запускается и не виден системой. Теперь ошибку пофиксили. Пока я ожидал решения проблемы, нашел еще один вариант - z88dk
Сложнее всего было указать корректные ключи командной строки, но получилось.
На последнее остается SAM .dsk image manipulator. Ключей никаких нет, есть масса команд для операций - Save file загружает файло на образ.
Дополнение 30-06-2023 Давно собирался залить доки с добавленными закладками.
Комментарии
Отправить комментарий