есть исходники как минимум двух игр: xonix (идет в комплекте) и innsmouth
Вид для печати
есть исходники как минимум двух игр: xonix (идет в комплекте) и innsmouth
Практически любой компилятор си компилирует в асм, а потом ассемблирует полученное каким-нибудь ассемблером. Промежуточный ассемблерный листинг можно вытащить (ключ -S), но ассемблер у sdcc свой, и по синтаксису он несовместим ни с одним из известных мне спектрумских.
Не сработает, у sdcc нет либы для поддержки спектрума.Цитата:
printf
Я в какой-то теме писал когда-то простой хелло ворлд, счас поищу.
Вот - http://zx.pk.ru/showpost.php?p=471807&postcount=7
скажите для начала, какой из этих экзешников запускать, что б вписать туда код?
и как скомпилировать?
sz80.exe
sdldz80.exe
sdasz80.exe
notepad.exe
см. мою ссылку, там есть командная строка на компиляциюЦитата:
и как скомпилировать?
---------- Post added at 18:38 ---------- Previous post was at 18:33 ----------
что помню из отличий:
"xor a, a" вместо "xor a", "or a,c" вместо "or c" (то же для or, and, add, adc etc)
все числа начинаются с # - #0x01, #19
это все легко менять sed'ом, но там еще какие-то метки тоже предваряются #, с этим похуже
Чего-то он ругается.
http://piccy_.info/view3/3470895/3d3...af06e7fea9c05/
Скорее всего ты держишь файл блокнотом или чем-то.
Тьху ты блин. У тебя файл на рабочем столе. А запускаешь компилятор из левой папки. Он ищет файл в текущем каталоге, и не находит.
Скопируй файл куда-то, типа D:/sourse/helloword1/ . Потом из папки где лежат исходники вызови ту строку.
Папку с компилятором пропиши в пути (если он вызывается и так - то не надо).
так-с... скомпилировал.
Но утилиты hex2bin там нету.
вот результат компиляции.
Скрытый текст
Код:;--------------------------------------------------------
; File Created by SDCC : free open source ANSI-C Compiler
; Version 3.1.0 #7066 (Nov 22 2011) (MINGW32)
; This file was generated Fri Sep 14 18:46:58 2012
;--------------------------------------------------------
.module hello
.optsdcc -mz80
;--------------------------------------------------------
; Public variables in this module
;--------------------------------------------------------
.globl _cls
;--------------------------------------------------------
; special function registers
;--------------------------------------------------------
;--------------------------------------------------------
; ram data
;--------------------------------------------------------
.area _DATA
;--------------------------------------------------------
; overlayable items in ram
;--------------------------------------------------------
.area _OVERLAY
;--------------------------------------------------------
; external initialized ram data
;--------------------------------------------------------
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
.area _HOME
.area _GSINIT
.area _GSFINAL
.area _GSINIT
;--------------------------------------------------------
; Home
;--------------------------------------------------------
.area _HOME
.area _HOME
;--------------------------------------------------------
; code
;--------------------------------------------------------
.area _CODE
;hello.c:4: void cls(){
; ---------------------------------
; Function cls
; ---------------------------------
_cls_start::
_cls:
;hello.c:7: for(i=0; i<SCREENL; i++){
ld de,#0x4000
ld bc,#0x1B00
00103$:
;hello.c:8: *(begin_scr++) = 2;
ld a,#0x02
ld (de),a
inc de
dec bc
;hello.c:7: for(i=0; i<SCREENL; i++){
ld a,b
or a,c
jr NZ,00103$
ret
_cls_end::
.area _CODE
.area _CABS
[свернуть]
Что делать дальше?
Удалить директивы и запихивать в эмулятор этот блок
?Скрытый текст
ld de,#0x4000
ld bc,#0x1B00
00103$:
;hello.c:8: *(begin_scr++) = 2;
ld a,#0x02
ld (de),a
inc de
dec bc
;hello.c:7: for(i=0; i<SCREENL; i++){
ld a,b
or a,c
jr NZ,00103$
ret[свернуть]
---------- Post added at 18:59 ---------- Previous post was at 18:55 ----------
только вот это jr NZ,00103$ мне не нравится... нужно строго указывать org для данной проги.
---------- Post added at 19:04 ---------- Previous post was at 18:59 ----------
ещё в таком присвоении значения регистровым парам асм-компилятор(emuZwin'a) находит синтаксическую ошибку
Меняю наЦитата:
ld de,#0x4000
ld bc,#0x1B00
- всё равно не правильно.Цитата:
ld de,H4000
ld bc,H1B00