
P.S. Обнаружил, что название "NedoForth" уже занято - поэтому пусть будет PDFORTH (Public Domain FORTH) т.к. по сути оно будет надстройкой над PDBLv1

Moderator: Shaos
Code: Select all
decf FSR,f
movlw 1
movwf INDF
decf FSR,f
movlw 2
movwf INDF
Code: Select all
incf FSR,f
incf FSR,f
Code: Select all
...
RETURN ; from previous subprogram
; subprogram for "DROP"
DATA 0x0244 ; (4<<7)|'D'
DATA 0x294F ; ('R'<<7)|'O'
DATA 0x2800 ; ('P'<<7)|0;
DROP:
INCF FSR,f
INCF FSR,f
RETURN
; next word subprogram...
Code: Select all
; put byte W to stack
PUTB:
DECF FSR,F
CLRF INDF
DECF FSR,F
MOVWF INDF
RETURN
Code: Select all
MOVLW 65 ; 'A'
CALL PUTB
Code: Select all
DECF FSR,F
MOVLW higher-byte
MOVWF INDF
DECF FSR,F
MOVLW lower-byte
MOVWF INDF
Code: Select all
2 3 +
5 ok
Code: Select all
5 +
A ok
Без подпрограммы, кладущей 16-битное число на стек, по видимому таки не обойтись:Shaos wrote:...остальные же 16-битные числа (-32768...+32767) будут компилироваться в такую вот конструкцию:Можно конечно это тоже спрятать в подпрограмму, но тогда придётся задействовать один из регистров, для передачи второй половины слова, т.к. одного W будет уже недостаточно...Code: Select all
DECF FSR,F MOVLW higher-byte MOVWF INDF DECF FSR,F MOVLW lower-byte MOVWF INDF
Code: Select all
; put HI and W on stack
PUSH:
MOVWF LO ; copy W to LO
DECF FSR,F
MOVF HI
MOVWF INDF
DECF FSR,F
MOVF LO,0 ; copy LO to W
MOVWF INDF
RETURN
Code: Select all
XXX:
MOVLW high-byte-adr
MOVWF HI
MOVLW low-byte-adr
CALL PUSH
RETURN
Code: Select all
XXX:
DECF FSR,F
MOVLW higher-byte
MOVWF INDF
DECF FSR,F
MOVLW lower-byte
MOVWF INDF
RETURN
Да я его просто ненавижу. Сколько не брался - он мне напоминает об убогих стеково-ориентированных программируемых калькуляторах.Shaos wrote:Ну что - нету у нас тут любителей Форта?
ниче вы не понимаете в теплом ламповом фортеLavr wrote:Бывают у меня такие потуги... найду... почитаю... но резюме пока одинаковое: этот Форт - кал галимый!![]()
(сугубо моё личное мнение)
Вот чего нашёл:Shaos wrote:Ну что - нету у нас тут любителей Форта? Никто мне не скажет, что я просто должен взять книжку и по ней тупо повторить каноническое описание DO и IF с исользованием R>, GOES> и т.д.?