Temat: Millfork

Badał ktoś ten projekt?

https://github.com/KarolS/millfork

Ja z definicji jestem bardzo sceptyczny odnośnie kompilatorów dla 6502, ale na pierwszy rzut oka ten wywarł na mnie bardzo pozytywne wrażenie.

Nie ma żadnego przykładu dla atari, ale generyczne przykłady po prostu działają:

// memorize this code for your next interview for a Millfork developer position

import stdio

void main() {
    byte i
    for i,1,to,100 {
        if i %% 15 == 0 {
            putstrz("fizzbuzz"z)
        } else if i %% 3 == 0 {
            putstrz("fizz"z)
        } else if i %% 5 == 0 {
            putstrz("buzz"z)
        } else {
            putword(i)
        }
        putchar(' ')
    }
    while(true){}
}
millfork.exe -t a8 -o out.xex fizzbuzz.mfk
Post's attachments

fizzbuzz.xex 545 b, liczba pobrań: 4 (od 2019-10-15) 

Tylko zalogowani mogą pobierać załączniki.
laoo/ng

2

Odp: Millfork

https://github.com/KarolS/millfork/releases

EXE-k dla Windows-a

56MB 8)

Ostatnio edytowany przez tebe (2019-10-15 17:58:22)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

3

Odp: Millfork

ciekawe podejście (MOD), niektóre niebezpieczne

ta pętla nie powinna się wykonać

import stdio

void main() {
    byte i,j

 j=1

 for i,j,to,0 {
 putword(i)
 putchar(' ')
 }

 while true{}
}

Ostatnio edytowany przez tebe (2019-10-15 20:56:03)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

4

Odp: Millfork

Intuicyjne to nie jest, ale na moje oko wszystko dzieje się poprawnie. Pętla "to" liczy do góry aż napotka docelową wartość.

laoo/ng

5

Odp: Millfork

jeśli podasz stałą wartość

for i,1,to,0

pętla się nie wykona

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

6

Odp: Millfork

No to może znalazłeś buga - można wpisać issue: https://github.com/KarolS/millfork/issues

Niech się facet cieszy, że community przygląda się jego projektowi smile

Ostatnio edytowany przez laoo/ng (2019-10-15 22:59:32)

laoo/ng

7

Odp: Millfork

Zasadniczo TeBe ma rację - obie nie powinny się wykonać. Nigdzie nie ma zainicjowanej wartości i, chyba, że z automatu przyjmuje zero?
====
Edyta: @lao, @TeBe, to nie jest błąd. Pętla chodzi po zmiennej tu, więc pewnie nie przyrównuje do stałej?

Ostatnio edytowany przez Sikor (2019-10-16 12:50:43)

Sikor umarł...

8

Odp: Millfork

odpowiedział na zgłoszony problem z FOR

https://github.com/KarolS/millfork/issues/8

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

9

Odp: Millfork

I podjął wg mnie słuszną decyzję

laoo/ng

10

Odp: Millfork

Z "podobnych" projektow jest jeszcze ten https://lemonspawn.com/turbo-rascal-syn … but-begin/ ale raczej tylko na Commodore

11

Odp: Millfork

C02

https://github.com/RevCurtisP/C02

C02 is a simple C-syntax language designed to generate highly optimized code for the 6502 microprocessor. The C02 specification is a highly specific subset of the C standard with some modifications and extensions

The compiler generates assembly language code, currently targeted to the DASM assembler.

p.s.
aż trudno się zdecydować wink

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

12

Odp: Millfork

A co powiecie na taką emulację...
https://github.com/satoshinm/pill_6502

https://systemembedded.eu/
"...Mówił mi to jeden facet, który znał się na atari i takich różnych rzeczach. On mówił, że procesor 6502 to był początkowo procesor wojskowy. On ma tajne funkcje, nie wiadomo w ogóle, co one mogą robić..."

13

Odp: Millfork

takie podsumowanie

http://8bitworkshop.com/blog/languages/ … mming.html

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C