Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн ноя 19, 2018 02:36

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: QUARK-ую
СообщениеДобавлено: Пт дек 21, 2012 19:41 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Пытаюсь сделать на кварке эмулятор своего форт-процессора

Код:
HEX
CREATE CPU 40 ALLOT
CREATE NEW_CPU 40 ALLOT
: 0W! 0 SWAP W! ;
: .PC 0 + ;
: .CMD 2 + ;
: .TOP 4 + ;
: .DST 6 + ;
: .RST 16 + ;

: CPU_INIT
CPU .PC 0W!
CPU .CMD 0W!
CPU .DST 0 SWAP !
CPU .DST 4 + 0 SWAP !
CPU .DST 8 + 0 SWAP !
CPU .DST 0C + 0 SWAP !
CPU .RST 0 SWAP !
CPU .RST 4 + 0 SWAP !
CPU .RST 8 + 0 SWAP !
CPU .RST 0C + 0 SWAP !

;

: CPU_STATE CLS
.RED ." EQUINOX CPU MAIN REGISTER STATE" CR
.BLUE ." PC:  " CPU .PC W@ H. CR
." CMD: " CPU .CMD W@ H. CR
.GREEN ." TOP: " CPU .TOP W@ H. CR
.WHITE ." DST: " CPU .DST 8 0 DO DUP I 2* + W@ H. LOOP CR
." RST: " CPU .RST 8 0 DO DUP I 2* + W@ H. LOOP CR
;

: NEXT.PC CPU .PC DUP W@ 1+ W!  ;
CPU_STATE CPU_STATE CPU_STATE CPU_STATE
: TEST1 1000 0 DO CPU_STATE LOOP ;
  TEST1


если две последние строчки закоментировать, выводит состояние регистров и стеков процессора,
Если же раскоментировать обратно, вывод пропадает напрочь... и quark в процессах подвисает, блокируя доступ к сырцам
Сижу и гадаю, то ли лыжи не едут, то ли я торможу,
Предварительно подгружаю вот такой код с исправлениями и добавками:
Код:
."  - antigluk.f загружен" CR

HEX

: ROT >R SWAP R> SWAP ; : -ROT SWAP >R SWAP R> ;

: W@ \ addr --> word16
   @ 0FFFF AND
;

: W! \ word16,addr -->
   DUP @ 0FFFF0000 AND >R
   SWAP  00000FFFF AND R> OR
   SWAP !
;


-1 0 0 RGB CONSTANT BLUE : .BLUE  BLUE SETCOLOR ;
0 -1 0 RGB CONSTANT GREEN : .GREEN  GREEN SETCOLOR ;
0 0 -1 RGB CONSTANT RED : .RED  RED SETCOLOR ;
: .WHITE WHITE SETCOLOR ;

.RED  ." красный " .GREEN ." зеленый " .BLUE OR ." синий " CR .WHITE

: WAITKEY CR ." нажмите клавишу SPACE" BEGIN LASTKEY 20 = IF BYE THEN AGAIN ;
\ : WAITKEY ;

: DEC. DECIMAL . HEX ;

: ERROR-PRINT GETCOLOR RED SETCOLOR >R " *** ERROR *** : " PRINT PRINT R> SETCOLOR ;

\ : ERROR-PRINT  " *** ERROR *** : " PRINT PRINT CR ;

\  " проверка вывода ошибки." ERROR-PRINT


\ : ABORT" [COMPILE] " PRINT BEGIN NOOP AGAIN ;

\ ABORT" тест слова ABORT"

: ALPHA.
  0F AND
  30 +
  DUP 39 > IF 7 + THEN
  EMIT
;

// печать 16-битного числа в виде 4ки
: H.
  DUP 1000 / ALPHA.
  DUP 100 / ALPHA.
  DUP 10 / ALPHA.
  ALPHA.
  20 EMIT
;


п.с. quark апрельский прошлого года...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Пт дек 21, 2012 20:09 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
ПОНЯЛ, ПОЧЕМУ ТОРМОЗИТ И ВЕШАЕТСЯ - CLS В ЦИКЛЕ 4000 РАЗ ИСПОЛНЯЕТСЯ ДОЛГО, A ПОЧЕМУ ТЕКСТ НЕ ВЫВОДИТСЯ - НЕПОНЯТНО

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Пт дек 21, 2012 20:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6439
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
В цикле надо поставить слово $ (просто символ доллара). Это слово "прокачивает" обработку сообщений. Тогда все будет выводиться.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Пт дек 21, 2012 21:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
положение улучшилось заменой CLS НА 0 CONSOLEX ! 0 CONSOLEY !
в начале определения CPU_STATE
но желаемого эффекта с нарастающим значением PC не видать
А доллар мало помогает - те же тормоза как с CLS... Я этот $ и нюхал, и лизал, и на хвост примерял... без разницы

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Пт дек 21, 2012 22:06 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6439
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Вот что у меня получилось.
Код:
: STR1 " EQUINOX CPU MAIN REGISTER STATE" ;
: STRPC " PC: " ;
: STRCMD " CMD: " ;
: STRTOP " TOP: " ;
: STRDST " DST: " ;
: STRRST " RST: " ;

: CPU_STATE
0 0 GOTOXY
.RED STR1 PRINT CR
.BLUE STRPC PRINT CPU .PC W@ H. CR
STRCMD PRINT CPU .CMD W@ H. CR
.GREEN STRTOP PRINT CPU .TOP W@ H. CR
.WHITE STRDST PRINT CPU .DST 8 0 DO DUP I 2* + W@ H. LOOP CR
STRRST PRINT CPU .RST 8 0 DO DUP I 2* + W@ H. LOOP CR
;

: NEXT.PC CPU .PC DUP W@ 1+ W!  ;
CPU_STATE CPU_STATE CPU_STATE CPU_STATE
DECIMAL
: TEST1 100 0 DO CPU_STATE REDRAW I . LOOP ;
//  TEST1
' TEST1 TO K_F1


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Пт дек 21, 2012 22:35 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Пытаюсь получить бегущее число на экране.
удлиннение цикла не помогает, отрисованный экран появляется в конце исполнения теста...с последним значением В PC

o! получилось, когда поменял доллар на красную колонку... REDROW :)
и запуск теста по кнопке получился интересно :)

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Пт дек 21, 2012 22:57 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
ПОСЛЕДНИЕ ИЗМЕНЕНИЯ:
Код:
: ONE_STEP NEXT.PC CPU_STATE ;
: TEST1 100 0 DO ONE_STEP LOOP ;
: RESET_CPU 0 CPU .PC W! CPU_STATE ;
' RESET_CPU TO K_F6
' ONE_STEP TO K_F4
'  TEST1 TO K_F5

по F4 один шаг, по F5 256 шагов, по F6 - сброс в нулевой адрес
Теперь вместо NEXT.PC надо сделать исполнение команд :) и вуаля!

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Вт янв 08, 2013 20:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
последняя версия "эмулятора"
файл "e16emu.f"
Код:
HEX

" COMMANDS.F" L
\
 

\ : MEMINIT ERASEMEM
\ 1111 0 MEM!
\ 1000 1 MEM!
\ 1000 2 MEM!
\ 1000 3 MEM!
\ 1000 4 MEM!
\ 2000 5 MEM!
\ 200 6 MEM!
\ 7777 10 MEM!
\ 3777 200 MEM! ;
\  MEMINIT

: CPU_STATE 1 1 GOTOXY
.MARG ." EQUINOX CPU MAIN REGISTERS STATE" CR
.GREEN ." PC:  " CPU .PC@ H. CR
." CMD: " CPU .CMD@ H. .WHITE CPU .CMD@ 0F000 AND 1000 / CMD_PRINT CR
.GREEN ." TOP: " CPU .TOP@ H. CR
.CYAN ." DST: " CPU .DST 8 0 DO DUP I 2* + W@ H. LOOP CR
." RST: " CPU .RST 8 0 DO DUP I 2* + W@ H. LOOP CR
.YELLOW ." MEM[PC]: " CPU .PC@ 8 0 DO DUP I + MEM@ H. LOOP DROP CR REDRAW
;
: NEXT.PC CPU->NEW_CPU E16_NOP NEW_CPU->CPU ;


CLS
: ONE_STEP NEXT.PC \  CMD_EXEC
CLS CPU_STATE
CR CR DUMP ;
;
: 100STEPS 100 0 DO ONE_STEP LOOP ;
: RESET_CPU  CPU_INIT CLS .WHITE CPU_STATE CPU->NEW_CPU ;
' RESET_CPU TO K_F6
' ONE_STEP TO K_F4
' 100STEPS TO K_F5

: HELP_SCR CLS .RED ." F6 - RESET" CR ." F4 - ONE STEP" CR ." F5 -256 STEPS" CR ." F2 - STACKS AND MEM STATE" CR ." F1 - THIS HELP" CR ;
' HELP_SCR  TO K_F1
: TESTS CLS .MARG 1 1 GOTOXY ." CPU:" CPU . CR
." NEW_CPU:" NEW_CPU . CR
." MEM:" MEM . CR ;
' TESTS TO K_F2


файл "mem16.f"

Код:
\ ' BYE TO K_ESC // для быстрого выхода
\ " antigluk.f" L

HEX
\ 16-битная (целевая) память
CREATE MEM 1000 ALLOT \ 16 килобайт

: MEM@ \ addr -- data разыменование из целевой памяти
0FFF AND DUP + MEM + W@ ;

: MEM! \ data addr --  сохранение в целевую память
0FFF  AND DUP + MEM + W! ;

: INIT 800 0 DO I DUP MEM! LOOP ; \ тестовая инициализация
\ INIT
: ERASEMEM 800 0 DO 0 I MEM! LOOP ;  \ стереть все
ERASEMEM
\ дамп 16 слов целевой памяти
: DUMP10 DUP .YELLOW H. ." : "
.GREEN 10 0 DO DUP I + MEM@ H. LOOP DROP CR ;
\ дамп 256 слов целевой памяти
: DUMP 10 0 DO I 10 * DUMP10 LOOP  ;
\ .GREEN 10 0 DO DUP I + MEM@ H. LOOP DROP CR
\ LOOP ;
INIT DUMP

\ инициализация для проверки
: MEMINIT ERASEMEM
\ СЮДА  НАДО КОМПИЛИРОВАТЬ ПРОГРАММУ ДЛЯ EQUINOX
1111 0 MEM! \ LIT LIT LIT LIT
1000 1 MEM! \ ЧЕТЫРЕ ЛИТЕРАЛА
1000 2 MEM! \
1000 3 MEM! \
1000 4 MEM! \
2000 5 MEM! \ CALL
200 6 MEM!  \ НА АДРЕС 200H
7777 10 MEM! \ СТОП
3777 200 MEM! \ подпрограмма: RET STOP STOP - ИСПОЛНИТСЯ ТОЛЬКО RET
;
MEMINIT


файл commands.f
Код:
\ собственно эмулятор процессора
\
\

."  - commands.f загружен" CR

" MEM16.F" L \ подключить память
HEX
CREATE CPU 80 ALLOT
CREATE NEW_CPU 80 ALLOT
\ "большой регистр"
: CPU->NEW_CPU CPU NEW_CPU 20 MOVE ;
: NEW_CPU->CPU  NEW_CPU CPU 20 MOVE ;

: 0W! 0 SWAP W! ;






: 0W! 0 SWAP W! ;
: .PC 0 + ; : .PC@ .PC W@ ; : .PC! .PC W! ;
: .CMD 2 + ; : .CMD@ .CMD W@ ; : .CMD! .CMD W! ;
: .TOP 4 + ; : .TOP@ .TOP W@ ; : .TOP! .TOP W! ;
: .DST 6 + ; : .DST@ .DST W@ ; : .DST! .DST W! ;
: .RST 16 + ; : .RST@ .RST W@ ; : .RST! .RST W! ;


: CPU_INIT 0  CPU .PC! 0  CPU .CMD! ;



\ --------------------------------------
\ 10.04.2012 vers 1.03
\ Oпределения для форт-процессора EQUINOX 16
\ (c) 2012 WingLion
\ для использования с Quark 1.0.10 build 28
\ --------------------------------------
\ система команд процессора EQUINOX (март 2012 года)

: PC++ CPU .PC@ 1+ NEW_CPU .PC! ;

: MEM[PC++] CPU .PC@ MEM@ PC++ ;

// команда - код - описание
// E16_NOP  - 0  - нет операции - загрузка следующего  слова в регистр команд
: E16_NOP MEM[PC++] NEW_CPU .CMD! ;
// LIT  - 1 L - загрузка литерала
: E16_LIT CPU MEM[PC++] NEW_CPU .TOP!  ;
// CALL - 2 L - вызов подпрограммы
: E16_CALL MEM[PC++] NEW_CPU .PC! CPU .PC@ 1+ NEW_CPU .RST! 0 NEW_CPU .CMD! ;
// RET  - 3  - возврат из подпрограммы
: E16_RET CPU .RST@ DUP NEW_CPU .PC! MEM@ NEW_CPU .CMD! ;
// BRAN - 4 L - условный переход по нулю в стеке данных
: E16_BRAN CPU .TOP@ 0= IF MEM[PC++] NEW_CPU .PC! THEN ;
// !    - 5 - стандартное фортовое "присвоить"
: E16_!  CPU .RST@ CPU .TOP@  MEM! ;
// @    - 6 - стандартное фортовое "разыменовать"
: E16_@  CPU .TOP@ MEM@ NEW_CPU .TOP! ;
// STOP - 7 - остановить процесс исполнения (HALT)
: E16_STOP  CPU .CMD@ NEW_CPU .CMD! ;
// >R   - 8 - переместить число со стека данных на стек возвратов
: E16_>R ;
// R>   - 9 - переместить число со стека возвратов на стек данных
: E16_R> ;
// XDUP - А p - АЛУ операция с уменьшением глубины стека
: E16_XDUP ;
// XSWAP  B p - АЛУ операция с неизменной глубиной стека
: E16_XSWAP ;
// XDROP  C p - АЛУ операьия с увеличением глубины стека
: E16_XDROP ;
// NOP13  D - оперция не определена
: E16_NOP13 ;
// NOP14  E - оперция не определена
: E16_NOP14 ;
// NOP15  F - оперция не определена
: E16_NOP15 ;

: CMD_PRINT
   CASE
      0 OF ." NOP  " ENDOF
      3 OF ." RET  " ENDOF
      2 OF ." CALL " ENDOF
      1 OF ." LIT  " ENDOF
      4 OF ." BRAN " ENDOF
      5 OF ." !    " ENDOF
      6 OF ." @    " ENDOF
      7 OF ." STOP " ENDOF
      8 OF ." >R   " ENDOF
      9 OF ." R>   " ENDOF
      A OF ." *DUP " ENDOF
      B OF ." *DROP" ENDOF
      C OF ." *SWAP" ENDOF
      D OF ." NOP13" ENDOF
      E OF ." NOP14" ENDOF
      F OF ." NOP15" ENDOF      
      
   ENDCASE ;




: CMD_EXEC CPU->NEW_CPU
   CPU .CMD@ 10 * NEW_CPU .CMD!
   CPU .CMD@ 0F000 AND 1000 /
\   DUP CMD_PRINT
   CASE
      0 OF E16_NOP  ENDOF
      3 OF E16_RET  ENDOF
      2 OF E16_CALL ENDOF
      1 OF E16_LIT  ENDOF
      4 OF E16_BRAN ENDOF
      5 OF E16_!    ENDOF
      6 OF E16_@    ENDOF
      7 OF E16_STOP ENDOF
      8 OF E16_>R ENDOF
      9 OF E16_R> ENDOF
      A OF E16_XDUP  ENDOF
      B OF E16_XDROP ENDOF
      C OF E16_XSWAP ENDOF
      D OF E16_NOP13 ENDOF
      E OF E16_NOP14 ENDOF
      F OF E16_NOP15 ENDOF
   ENDCASE
   NEW_CPU->CPU
;



: TEST3 CLS F 0 DO I .  I CMD_PRINT CR LOOP ; ' TEST3 TO K_F2


файл make.f
Код:
' BYE TO K_ESC // для быстрого выхода

CLS ." make.f загружен " CR

" antigluk.f" L
" MEM16.F" L

INIT DUMP
" E16emu.f" L
." ---------------------- MAKE.F ЗАКОНЧИЛСЯ -----------"


файл antigluk.f
Код:
."  - antigluk.f загружен" CR

HEX

: ROT >R SWAP R> SWAP ; : -ROT SWAP >R SWAP R> ;
: 0= 0 = ;

: W@ \ addr --> word16
   @ 0FFFF AND
;

: W! \ word16,addr -->
   DUP @ 0FFFF0000 AND >R
   SWAP  00000FFFF AND R> OR
   SWAP !
;


-1 0 0 RGB CONSTANT BLUE    : .BLUE  BLUE SETCOLOR ;
0 -1 0 RGB CONSTANT GREEN   : .GREEN  GREEN SETCOLOR ;
0 0 -1 RGB CONSTANT RED     : .RED  RED SETCOLOR ;
0 -1 -1 RGB CONSTANT YELLOW : .YELLOW  YELLOW SETCOLOR ;
-1 0 -1 RGB CONSTANT MARG  : .MARG MARG SETCOLOR ;
-1 -1 0 RGB CONSTANT CYAN   : .CYAN CYAN SETCOLOR ;
0 0 0 RGB CONSTANT BLACK            : .BLACK BLACK SETCOLOR ;
: .WHITE WHITE SETCOLOR ;

.RED  ." красный " .GREEN ." зеленый " .BLUE OR ." синий " CR .WHITE




: WAITspace  BEGIN LASTKEY 20 = IF BYE THEN AGAIN ;
\ : WAITKEY ;

: DEC. DECIMAL . HEX ;

: ERROR-PRINT GETCOLOR RED SETCOLOR >R " *** ERROR *** : " PRINT PRINT R> SETCOLOR ;

\ : ERROR-PRINT  " *** ERROR *** : " PRINT PRINT CR ;

\  " проверка вывода ошибки." ERROR-PRINT


\ : ABORT" [COMPILE] " PRINT BEGIN NOOP AGAIN ;

\ ABORT" тест слова ABORT"

: ALPHA.
  0F AND
  30 +
  DUP 39 > IF 7 + THEN
  EMIT
;

// печать 16-битного числа в виде 4ки
: H.
  DUP 1000 / ALPHA.
  DUP 100 / ALPHA.
  DUP 10 / ALPHA.
  ALPHA.
  20 EMIT
;


всефайлы сложить в одну папку с quark.exe
запускать quark.exe make.f
и кнопочками F1-F6 управлять

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Вт янв 08, 2013 23:02 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
последние версии файлов в архиве (команды закодированы пока не все)
распаковать в отдельную папку, запускать __make.bat
по F1 - help
A тут описание эмулируемого процессора....
http://winglion.ru/equinox/


Вложения:
Комментарий к файлу: последние версии файлов в архиве
E16EMUV2.ZIP [27.22 Кб]
Скачиваний: 292

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Чт янв 10, 2013 03:34 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Пробую вот такую табличную исполнялку команд:
Код:
CREATE CMD_TABLE
      ' E16_NOP  ,
      ' E16_LIT  ,
      ' E16_CALL ,
      ' E16_RET  ,
      ' E16_BRAN ,
      ' E16_!    ,
      ' E16_@    ,
      ' E16_STOP ,
      ' E16_>R ,
      ' E16_R> ,
      ' E16_XDUP ,
      ' E16_XDROP ,
      ' E16_XSWAP ,
      ' E16_NOP13 ,
      ' E16_NOP14 ,
      ' E16_NOP15 ,

: TABJMP 000F AND CELLS CMD_TABLE + @ EXECUTE ;


: CMD_EXEC2 CPU->NEW_CPU
   CPU .CMD@ DUP 10 * 0FFF0 AND NEW_CPU .CMD!
   1000 / 0F AND TABJMP
   NEW_CPU->CPU

При попытке исполнить CMD_EXEC2 Quark молча самоубивается
УПС... @ ЗАБЫЛ ПЕРЕД EXECUTE

Tеперь работает, и скорость - 106 эмулируемых тактов в секунду
: test 10000 DO CMD_EXEC2 LOOP ; Исполняется за 4 секунды
а : 1000STEPS 100000 0 DO CMD_EXEC2 CMD_EXEC2 CMD_EXEC2 CMD_EXEC2 CMD_EXEC2 LOOP ONE_STEP ; исполняется за 10 сек, т.е. 2 миллиона тактов в секунду...
так что оптимизировать есть куда
Оно, наверняка еще и от компа зависит :)

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Чт янв 10, 2013 06:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Пытаюсь увидеть бегущие секунды в позиции 10 10
Код:
VARIABLE TICS 1000 TIMER-INTERVAL !
: TIC 1 TICS +! WHEREXY 10 10 GOTOXY TICS @ . GOTOXY ; ' TIC TO <TIMER>

TIMER-INTERVAL ?
может, чего неправильно делаю?

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Чт янв 10, 2013 15:58 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6439
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
WingLion писал(а):
TIMER-INTERVAL ?
может, чего неправильно делаю?

TIMER_INTERVAL

Наверное, надо алиас сделать, часто ошибки из-за этого.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Чт янв 10, 2013 16:11 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Я ЕГО ИЗ ПДФ-КИ списал

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Пт янв 11, 2013 18:27 
Не в сети
Аватара пользователя

Зарегистрирован: Вс дек 23, 2012 18:39
Сообщения: 34
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
крокодил не ловится

проблемка вылезла - на eePC в эмуляторе ФУНКЦИОНАЛЬНЫЕ клавиши не работают


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QUARK-ую
СообщениеДобавлено: Пт янв 11, 2013 19:12 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6439
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
А на eePC функциональные клавиши ни с какими модификаторами не нажимаются? Типа Fn, или какого-то режима, который переключает их между собственно функциональными и управлением системными функциями?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB