Важная информация

User Tag List

Страница 6 из 12 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 119

Тема: Agon Light для начинающих

  1. #51
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,628
    Спасибо Благодарностей отдано 
    2,211
    Спасибо Благодарностей получено 
    144
    Поблагодарили
    110 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andrews Посмотреть сообщение
    Олег, не нужно ломать Ваши планы. Тем более видите, доступный мне эмулятор местами косячный. Срочности у меня никакой нет. Время всё вылечит(если люди продолжат работу) и тогда насладимся работой софта без багов.
    Планов, в общем-то, никаких нет, но что бы ни делал Олег - получается Оберон. А из Олега хотят выжать асм
    Объясню сложности с подсистемой. Я пока не понял как вызывать Си в командной строке. Там (в AgDev для LLVM) есть очень суровый мейкфайл со множественными включениями других мейкфайлов, и по нему для меня всё крайне туманно.

    Андрей, а нет возможности установить 64-битную винду? Знаете, я в своё время был уверен, что 64-битка намного тормознее. Но потом посидел на XP64 и увидел, что она даже лучше 32-битной работает. Да и 64-битная 7 очень недурна.

  2. #52
    Guru Аватар для andrews
    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,705
    Спасибо Благодарностей отдано 
    427
    Спасибо Благодарностей получено 
    201
    Поблагодарили
    179 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    а нет возможности установить 64-битную винду?
    Да пришла как-то раз по моему безрассудству 64-битная Windows10 c недонетбуком Tbook10s. Только там памяти встроенной очень мало. Хотя на эмулятор конечно можно наскрести. Я конечно же как и все мы не предполагал в 2020г. что дальше произойдет с платежами. в валюте. А теперь вот не знаю, когда этот недонетбук превратится в кирпич( ведь нельзя исключать такую возможность). На десктопе же все надежно кастрировано так, что даже инопланетяне не смогут вмешаться
    С Linux и ему подобными ОС наелся на всю оставшуюся жизнь. Поэтому по ОС "я в бункере" Собственно и z80 line ( и прочие ретро)этим всю жизнь привлекают. Стабильность. Надежность. Самоконтроль.
    Последний раз редактировалось andrews; 26.04.2024 в 15:23.

  3. #53
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,190
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    52
    Поблагодарили
    35 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Выражаясь чужим языком недоокружность
    Код:
       10 X=0
       20 Y=128
       30 FOR I=0 TO 512
       40   X=X+Y/64
       50   Y=Y-X/64
       60   PLOT 69,X+200,Y+200
       70 NEXT I
    Y -радиус
    в строке 30 число итераций, но это не точно.

  4. Этот пользователь поблагодарил Shiny за это полезное сообщение:

    andrews (26.04.2024)

  5. #54
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,190
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    52
    Поблагодарили
    35 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Запустил эмуль astralaster'а х64. Заменил MOS 1.04 - та же ошибка.
    Закинул запрос на гитхабе, но вряд ли что-то решится.

  6. #55
    Guru Аватар для andrews
    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,705
    Спасибо Благодарностей отдано 
    427
    Спасибо Благодарностей получено 
    201
    Поблагодарили
    179 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Научился билдить для симулятора ZDSII. Открываем в проектах File->Open Project -> ...\samples\Quick Start\Simulator.zdsproj
    Не забываем в Project->Settings в Debug Tool Current выбрать Simulator. Строим проект из трех файлов:
    main.c
    Код:
    #include <stdio.h>
    #include "QuickStart.h"
    #include "console.h"
    
    
    void main(void)
    {
    	int ch;
    
    	system_init();
    
    	printf("Hello World!\n");
    	while (1)
    	{
    		if (kbhit())
    		{
    			ch = getchar();
    			putchar(ch);
    		}
    	}
     }
    console.c
    Код:
    #include <ez80.h>
    #include "console.h"
    
    
    extern unsigned long SysClkFreq;
    
    /* UART parameters */
    #define UART_BAUDRATE        57600
    #define UART_DATA_BITS       8
    #define UART_PARITY          0
    #define UART_STOP_BITS       1
    #ifdef _SIMULATE
    #define UART                 0
    #else
    #define UART                 0
    #endif
    
    /* UART control register definitions */
    #if (UART == 1)
    #ifdef _EZ80190
    #define UZI_CTL              UZI1_CTL
    #define UART1_BRG_L          BRG1_DLR_L
    #define UART1_BRG_H          BRG1_DLR_H
    #endif
    #define UART_BRG_L           UART1_BRG_L
    #define UART_BRG_H           UART1_BRG_H
    #define UART_RBR             UART1_RBR
    #define UART_THR             UART1_THR
    #define UART_IER             UART1_IER
    #define UART_IIR             UART1_IIR
    #define UART_FCTL            UART1_FCTL
    #define UART_LCTL            UART1_LCTL
    #define UART_MCTL            UART1_MCTL
    #define UART_LSR             UART1_LSR
    #define UART_MSR             UART1_MSR
    #define UART_SPR             UART1_SPR
    #define PORT_DR              PC_DR
    #define PORT_DDR             PC_DDR
    #define PORT_ALT1            PC_ALT1
    #define PORT_ALT2            PC_ALT2
    #else
    #ifdef _EZ80190
    #define UZI_CTL              UZI0_CTL
    #define UART0_BRG_L          BRG0_DLR_L
    #define UART0_BRG_H          BRG0_DLR_H
    #endif
    #define UART_BRG_L           UART0_BRG_L
    #define UART_BRG_H           UART0_BRG_H
    #define UART_RBR             UART0_RBR
    #define UART_THR             UART0_THR
    #define UART_IER             UART0_IER
    #define UART_IIR             UART0_IIR
    #define UART_FCTL            UART0_FCTL
    #define UART_LCTL            UART0_LCTL
    #define UART_MCTL            UART0_MCTL
    #define UART_LSR             UART0_LSR
    #define UART_MSR             UART0_MSR
    #define UART_SPR             UART0_SPR
    #define PORT_DR              PD_DR
    #define PORT_DDR             PD_DDR
    #define PORT_ALT1            PD_ALT1
    #define PORT_ALT2            PD_ALT2
    #endif
    
    /* UART control register bit definitions */
    #ifdef _EZ80190
    #define UZI_MODE_UART        (1 << 0)
    #endif
    
    #define LCTL_DLAB            (1 << 7)
    #define LSR_THRE             (1 << 5)
    #define LSR_DR               (1 << 0)
    #define MCTL_RTS             (1 << 1)
    #define MCTL_DTR             (1 << 0)
    
    #define FCTL_TRIG_1          (0 << 6)
    #define FCTL_TRIG_4          (1 << 6)
    #define FCTL_TRIG_8          (2 << 6)
    #define FCTL_TRIG_14         (3 << 6)
    #define FCTL_CLRTXF          (1 << 2)
    #define FCTL_CLRRXF          (1 << 1)
    #define FCTL_FIFOEN          (1 << 0)
    
    /* UART macros */
    #define LCTL(d, p, s)        (((d-5)&3) | (((s-1)&1)<<2) | (p&3))
    
    #define RX_DATA_READY()      (UART_LSR & (unsigned char)LSR_DR)
    #define TX_FIFO_READY()      (UART_LSR & (unsigned char)LSR_THRE)
    
    #define KBHIT()              (RX_DATA_READY() ? 1 : 0)
    #define GETCH()              (UART_RBR)
    #define PUTCH(ch)            (UART_THR = ch)
    
    #define CONSOLE_END_LINE_CRLF 1
    
    #define LF                   '\n'
    #define CR                   '\r'
    
    
    /* UART initialization */
    void console_uart_init(void) 
    {
    	volatile unsigned char tmp;
    	union {
    		unsigned short word;
    		unsigned char byte[2];
    	} brg;
    
    #ifdef _EZ80190
    	UZI_CTL = UZI_MODE_UART;  /* Set UZI 0 device to UART mode */
    #endif
    
    	/* calculate baudrate generator value */
    	brg.word = (SysClkFreq + (8UL * (unsigned long)UART_BAUDRATE)) /
    		(16UL * (unsigned long)UART_BAUDRATE);
    
    	/* set baudrate generator */
    	UART_LCTL |= LCTL_DLAB;
    	UART_BRG_H = brg.byte[1];
    	UART_BRG_L = brg.byte[0];
    	UART_LCTL &= ~LCTL_DLAB;
    
    	/* set line control */
    	UART_LCTL = LCTL(UART_DATA_BITS, UART_PARITY, UART_STOP_BITS);
    
    	/* clear any pending status information */
    	tmp = UART_LSR;
    	tmp = UART_MSR;
    	tmp = UART_IIR;
    	tmp = UART_RBR;
    
    	/* configure fifo for 14 bytes; clear fifos; enable fifo */
    	UART_FCTL = FCTL_TRIG_14 | FCTL_CLRTXF | FCTL_CLRRXF | FCTL_FIFOEN;
    
    	/* set modem control */
    	UART_MCTL = MCTL_RTS | MCTL_DTR;
    
    	/* configure port */
    	PORT_ALT2 |= 0x0F;
    	PORT_ALT1 &= 0xF0;
    	PORT_DDR |= 0x0F;
    }
    
    
    /* Console port initialization */
    void console_init(void)
    {
    	console_uart_init();
    }
    
    
    int putch(int ch)
    {
    	if (CONSOLE_END_LINE_CRLF && (ch == LF))
    	{
    		while (!TX_FIFO_READY());
    		PUTCH(CR);
    	}
    
    	while (!TX_FIFO_READY());
    	PUTCH(ch);
    
    	return (ch);
    }
    
    
    int kbhit(void)
    {
    	return (KBHIT());
    }
    
    
    int getch(void)
    {
    	while (!RX_DATA_READY());
    	return (GETCH());
    }
    
    
    int getche(void)
    {
    	return (putch(getch()));
    }
    Simulator.c
    Код:
    #include <stdio.h>
    #include "QuickStart.h"
    #include "console.h"
    
    
    void system_init(void)
    {
    	console_init();
    }
    Запускаем Debug ->Go
    и видим результат вывода в консоль View->Debug Window->Simulatated Uart Output

    Было бы неплохо теперь вместо консоли подключить симулятор консоли Agon-а. Но как это сделать, не залезая в код ZDSII? Есть идеи?
    Последний раз редактировалось andrews; 27.04.2024 в 14:59.

  7. #56
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,190
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    52
    Поблагодарили
    35 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    менять код функции MOS в обмен на стандартные.

  8. #57
    Guru Аватар для andrews
    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,705
    Спасибо Благодарностей отдано 
    427
    Спасибо Благодарностей получено 
    201
    Поблагодарили
    179 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Покажите, пожалуйста, как?

  9. #58
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,190
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    52
    Поблагодарили
    35 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andrews Посмотреть сообщение
    Покажите, пожалуйста, как?
    Я в сях не шарю, тем более не копал в нюансы ZDS2. Накидал прогу на асме с комментариями. Жми Esc для выхода, Enter не обрабатывается.

    Код:
        .assume adl=1       ; ez80 ADL memory mode
        .org $40000         ; Старт программы
    
        jp start_here       ; переход на начало кода
    
        .align 64           ; заголовок программы MOS
        .db "MOS",0,1     
    
    
    start_here:
                
        push af             ; сохранить все регистры - зачем?
        push bc
        push de
        push ix
        push iy
    
    ; ------------------
    ; поехали
    
    ; печать текста
        ld hl, string       ; HL=адрес строки в памяти
        ld bc,0             ; BC=длина строки, или если BC=0, то ограничитель строки - байт 0
        ld a,0              ; A=ограничитель
        rst.lil $18         ; Вызов MOS API
    
    startp:
        ld a, $08           ; 0x08: mos_sysvars Возвращает IXU=указатель системных переменных
        rst.lil $08         ; RST 08h: Выполнить команду MOS
    
    getkey:
        ld a, (ix + $05)    ; получить код ASCII
        or a
        jr z,getkey			;0 - не нажата клавиша
        cp 27
        jr z, EXIT_HERE     ; Если нажата Esc, то выход
    	ld (ix+5),0			; моя отсебятина - записать 0 в переменную
    	rst.lil 10h			; печать символа с кодом
        jr startp			; переход на начало
    
    ; ------------------
    ; Выход из программы
    EXIT_HERE:
        pop iy              ; Восстановить все регистры
        pop ix
        pop de
        pop bc
        pop af
        ld hl,0             ; возвращаемое значени 0 - нет ошибок
        ret                 
    
    ; ------------------
    
    string:
        .db "Hello Agon World\r\n",0
    - - - Добавлено - - -

    Кстати, заявлено, что у этого эмуля есть отладчик. Только не разберусь с брякпойнтами. Может, не так пишу?

    - - - Добавлено - - -

    ага, отладчику надо добавлять $ для шестнадцатиричных чисел.

  10. #59
    Guru Аватар для andrews
    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,705
    Спасибо Благодарностей отдано 
    427
    Спасибо Благодарностей получено 
    201
    Поблагодарили
    179 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тогда напишите как создавать сей проект в ZDS2( что выбирать в менюшках) или это для ассемблера MOS?
    Последний раз редактировалось andrews; 27.04.2024 в 19:11.

  11. #60
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,190
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    52
    Поблагодарили
    35 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andrews Посмотреть сообщение
    Тогда напишите как создавать сей проект в ZDS2( что выбирать в менюшках) или это для ассемблера MOS?
    да, то MOS.
    в ZDS2 выбрать File->New Project.., указать Project Type "Assembly Only". Только синтаксис отличается

Страница 6 из 12 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 21
    Последнее: 07.05.2024, 02:37
  2. Микроконтроллеры AVR для начинающих
    от Ewgeny7 в разделе Для начинающих
    Ответов: 138
    Последнее: 23.07.2017, 20:54
  3. Для начинающих
    от Viktor2312 в разделе Ириша
    Ответов: 61
    Последнее: 14.03.2017, 12:13
  4. КМБ для начинающих
    от yur в разделе Программирование
    Ответов: 0
    Последнее: 16.10.2012, 14:06

Ваши права

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