[__My 4tH__]
Участников: 2
Страница 1 из 2
Страница 1 из 2 • 1, 2
[__My 4tH__]
Я тут готовлюсь выпустть новую версию. Как тебе мой FIND(я буду уже хочу со словарями):
- Код:
: (FIND) ( Addr,Len,VocNFA --> FALSE/NFA,TRUE )
S@ -ROT R> COUNTSZ + 5 + @ ( VocNFA,Addr,Len,NFAn )
BEGIN
COUNTSZ ( VocNFA,Addr,Len,NFAn,Size )
2OVER NIP = ( VocNFA,Addr,Len,NFAn,flag )
IF ( VocNFA,Addr,Len,NFAn )
3DUP SWAP ( VocNFA,Addr,Len,NFAn,Addr,NFAn,Len )
COMPARE ( VocNFA,Addr,Len,NFAn, flag )
IF -ROT 2DROP 1- NIP TRUE UNBEGIN EXIT THEN
THEN
1- COUNTSZ + ( VocNFA,Addr,Len,LFA )
@ ( VocNFA,Addr,Len,newNFA )
2OVER DROP OVER = ( VocNFA,Addr,Len,newNFA,flag )
OVER OR ( VocNFA,Addr,Len,newNFA,fullflag )
UNTIL
2DROP 2DROP FALSE
;
\ Поиск в словарях: CONTEXT->CURRENT->USER->FORTH
: FIND ( Addr,Len --> FALSE/NFA,TRUE )
2DUP CONTEXT @ (FIND)
DUP NOT ?EXIT DROP
2DUP CURRENT @ (FIND)
DUP NOT ?EXIT DROP
2DUP ' USER DROP @ (FIND) \ Выбрасываем флаг, т.к. слово всё-равно в системе должно быть!
DUP NOT ?EXIT DROP
' FORTH DROP @ (FIND)
;
- Код:
**********************
*...Заголовок...*
**********************
* call VOC_does *
*****************
* dw Latest *
* dw VLFA *
****************
Последний раз редактировалось: _KROL (Пт Июл 28, 2017 6:20 pm), всего редактировалось 1 раз(а)
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
Ну, как бы, прежде, чем делать словари, надо бы решить, зачем они нужны. Тем более, сразу два взаимоисключающих подхода: CURRENT/CONTEXT и USER. Попробуйте прикинуть, какая задача потребует такой схемы словарей?
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
Ну не знаю. У меня первоначально словари:
FORTH (системный)
USER (пользовательский, по умолчанию слов в нём нет)
FORTH (системный)
USER (пользовательский, по умолчанию слов в нём нет)
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
Это подход, скорее, многопользовательских FORTH-систем. И в USER при этом заранее помещаются все USER-переменные. См. "Начальный курс" Броуди._KROL пишет:FORTH/USER
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
Вот, я выделил структуры:
А что ты думаешь о хранении двойных слов в стеке? А то Ethereal мне там советовал писать, как на PDP.
- Код:
TEMPLATE
****************************\
* NFA: *|
* sz_flags rb 1 ; IC0nnnnn *|
* I=IMM C=CONLY n=size *| HEADER
* name rb ? *|
****************************|
* LFA rw 1 */
****************************
* CFA: call ? *
****************************
* PFA: rw ? *
****************************
AWORD
*****************
* ...HEADER... *
*****************
* ...(on asm) *
*****************
FWORD
*****************
* ...HEADER... *
*****************
* call DOES *
*****************
* dw ... *
*****************
VARIABLE
*****************
* ...HEADER... *
*****************
* call VAR_does *
*****************
* data rw 1 *
*****************
2VARIABLE
*******************
* ...HEADER... *
*******************
* call _2VAR_does *
*******************
* data rd 1 *
*******************
CONSTANT
*******************
* ...HEADER... *
*******************
* call CONST_does *
*******************
* data rw 1 *
*******************
2CONSTANT
*********************
* ...HEADER... *
*********************
* call _2CONST_does *
*********************
* data rd 1 *
*********************
VECT
******************
* ...HEADER... *
******************
* call VECT_does *
******************
* pointer rw 1 *
******************
VOCABULARY
*****************
* ...HEADER... *
*****************
* call VOC_does *
*****************
* dw Latest *
* dw VLFA *
*****************
А что ты думаешь о хранении двойных слов в стеке? А то Ethereal мне там советовал писать, как на PDP.
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
А, ладно! Буду сейчас отлаживать свой форт...
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
Ну, как бы, то FORTH имеет два набора: 2- и D-cлов, что подразумевает, что две ячейки и "естественное представление" двойного слова - вещи совершенно разные. И, судя по тому, что я совершенно не помню, как я реализовал это у себя, важность этого выбора достаточно сиюминутна. (Проверил: хранил в стиле IBM - младший по меньшему адресу. Стек рос вверх (по BX)). Для чего Вы будете использовать двойные слова?_KROL пишет:А что ты думаешь о хранении двойных слов в стеке?
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
А ведь слова для работы с двойными словами часто надобятся!
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
- Код:
Блин, хотел было пользоваться w.w.w.downgradefiles.tk/, но потом увидел, что там файлы видны(внизу справа есть вкладка). Вот, вроде обновил циклы: rgho.st/6Mv86jrdH (день доступна ссылка).
Увидел это:
- Код:
Новые пользователи этого форума не могут публиковать внешние ссылки и адреса email в течение первых 7 дней после регистрации. За более подробной информацией обращайтесь, пожалуйста, к администрации форума.
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
Но, если они надобятся, значит, способ их реализации диктуется этой надобностью._KROL пишет:А ведь слова для работы с двойными словами часто надобятся!
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
Посмотрел на кошачьем форуме Ваши материалы. Обнаружил следующую методическую ошибку:_KROL пишет:Вот, вроде обновил...
> ... пока система не работает!.. Самостоятельная система/DOS...
В таком виде FORTH работать не может. Он должен начать запускаться до того, как будет дописан. Тем более, в двух конфигурациях. Сначала надо организовать работающий Цикл Управления, а уже потом - навешивать свистелки и перделки.
Другая неприятность (для меня) - Ваша (гитхабовская) манера выкладывать файлы общей кучей, без литературного обрамления. Мне кажется: если вы хотите, чтобы кто-то прочел то, что вы пишете, пишите интересно.
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
Обновление, теперь система работает(кроме компиляции).
Лучше попробуйте тогда открыть в FASM Editor: asmworld.ru/content/filez/tools/FEditor-v2.0.rar
P.S. Я сам за это GitHub не люблю.
Ну, раньше было хуже. У меня же даже слова делятся на высокоуровневые и низкоуровневые, да и по папочкам... Есть конечно пару файлов в корне.Другая неприятность (для меня) - Ваша (гитхабовская) манера выкладывать файлы общей кучей, без литературного обрамления.
Лучше попробуйте тогда открыть в FASM Editor: asmworld.ru/content/filez/tools/FEditor-v2.0.rar
P.S. Я сам за это GitHub не люблю.
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Глюки!
(по поводу первого "коммента" в FOURTH OS)
P.s.(HELP!) В моём Форте почему-то какие-то глюки, когда я хотел послать байты напрямую в видеобуфер(B800:?), т.е. использую слова с указателями типа FAR. Как ты думаешь, с чем это связано?
Вроде переделал их правильно(не в той системе, что выложена мною на "форуме кота"):
P.s.(HELP!) В моём Форте почему-то какие-то глюки, когда я хотел послать байты напрямую в видеобуфер(B800:?), т.е. использую слова с указателями типа FAR. Как ты думаешь, с чем это связано?
Вроде переделал их правильно(не в той системе, что выложена мною на "форуме кота"):
- Код:
;; @L ( seg:ofs --> [seg:ofs] )
;; Взять слово по адресу seg:ofs.
AWORD @L,"@L",0
mov es,dx
pop bx,es
mov ax,[es:bx]
push ax
mov dx,es
AEND
;; !L ( x seg:ofs --> [seg:ofs]=x )
;; Поместить слово x по адресу seg:ofs.
AWORD !L,"!L",0
mov es,dx
pop bx,es,ax
mov [es:bx],ax
mov dx,es
AEND
;; C@L ( seg:ofs --> byte[seg:ofs] )
;; Взять байт по адресу seg:ofs.
AWORD C@L,"C@L",0
mov es,dx
pop bx,es
mov al,[es:bx]
push ax
mov dx,es
AEND
;; C!L ( x seg:ofs --> byte[seg:ofs]=x )
;; Поместить байт Cx по адресу seg:ofs.
AWORD C!L,"C!L",0
mov es,dx
pop bx,es,ax
mov [es:bx],al
mov dx,es
AEND
- Код:
: cls
0 18 DO
0 4F DO
14 B800 IJ 2* NOP C!L
LOOP
LOOP
;
: a 14 B800 0 NOP C!L NOP ;
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
А разве в FASM "mov откуда,куда", а не "mov куда, откуда"?
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
Да, как в T(M)ASM.
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
Боюсь, и там, и там - наоборот... "mov куда, откуда"_KROL пишет:Да, как в T(M)ASM.
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
Извини, я вчера чего-то не то писал. Под "Да" я почему-то подрузомевал "mov куда, откуда". Просто привык к src->dst )
А гед ты тут ошибку заметил(в коде)???
А гед ты тут ошибку заметил(в коде)???
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
_KROL пишет:А гед ты тут ошибку заметил(в коде)???
mov es,dx
es портится
mov dx,es
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
Вот идиот(я)!!!
Да, должнор быть всё наоборот, т.е. es сохраняться.
Да, должнор быть всё наоборот, т.е. es сохраняться.
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
Однако, как ни крути всё-равно что-то странное твориться. Даже с
- Код:
;; @L ( seg:ofs --> [seg:ofs] )
;; Взять слово по адресу seg:ofs.
AWORD @L,"@L",0
mov dx,es
pop bx,es
mov ax,[es:bx]
push ax
mov es,dx
AEND
;; !L ( x seg:ofs --> [seg:ofs]=x )
;; Поместить слово x по адресу seg:ofs.
AWORD !L,"!L",0
mov dx,es
pop bx,es,ax
mov [es:bx],ax
mov es,dx
AEND
;; C@L ( seg:ofs --> byte[seg:ofs] )
;; Взять байт по адресу seg:ofs.
AWORD C@L,"C@L",0
mov dx,es
pop bx,es
mov al,[es:bx]
push ax
mov es,dx
AEND
;; C!L ( x seg:ofs --> byte[seg:ofs]=x )
;; Поместить байт Cx по адресу seg:ofs.
AWORD C!L,"C!L",0
mov dx,es
pop bx,es,ax
mov [es:bx],al
mov es,dx
AEND
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
Вот, даже выложил http://rgho.st/7L7YHnJ6B
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
А почему бы и нет, собственно?_KROL пишет:Однако, как ни крути всё-равно что-то странное твориться.
Одно из двух: Вы наврали в программировании и требуется разобрать код на части и проверить каждую часть в отдельности, а потом соединять попарно, снова проверяя... или Вы наврали во взаимодействии с системой и требуется найти работающий в ней пример и пытаться его, опять постепенно, приблизить к тому, что Вам надо. Просто так написать большой кусок и попросить найти в нем ошибки - не выход. Хотя бы потому, что исправления породят новые ошибки...
И, воопче, наблюдение за поиском ошибок
(Только не забывайте, если надо, просить меня удалять потерявшие, по Вашему мнению, актуальность фрагменты).
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
Кхм. Я не везде там "наврал", ибо в низкоуровневых словах у меня почти всё отточено, кроме, разумеется, этого момента и SSEG/DSEG(я до них ещё не добрался).
P.s. А вообще извини. Наверное над этим проектом вечно буду работать один я!
P.s. А вообще извини. Наверное над этим проектом вечно буду работать один я!
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Re: [__My 4tH__]
Разумеется! Он же Ваш. Вы даже не потрудились описать, что, как и зачем делается, зачем нужны все эти файлы в Вашем архиве, в чем состоят глюки... Разве не очевидно, что когда человека спрашивают: "Почему эта хреновина не работает?" - он начинает тупо думать: "А почему она вообще должна работать?" Мои учителя в таком случае отвечали: "Не работает? Значит, Вы что-то сделали неправильно!"_KROL пишет:Наверное над этим проектом вечно буду работать один я!
Gudleifr- Admin
- Сообщения : 3219
Дата регистрации : 2017-03-29
Re: [__My 4tH__]
Вы просто не внимательны. Кое-что я описал в DOCS\SOURCES.TXT. Да и вообще в DOCS я обычно сейчас и пишу всё!
_KROL- Сообщения : 93
Дата регистрации : 2017-07-28
Возраст : 24
Откуда : Беларусь
Страница 1 из 2 • 1, 2
Страница 1 из 2
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|