Pentevo+FUZIX

ZX evolution software and hardware

Postby SfS » 27 Nov 2014, 04:49

До "УРА" ЕЩЁ КАК ДО ПЕКИНА.
глючит все просто пиндрец.
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 202
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby SfS » 28 Nov 2014, 05:21

Починил форк.

Образ с ситемой, загрузчик, ядро и инструкция - тут: http://zx-pk.ru/showpost.php?p=757566&postcount=243
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 202
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby DimkaM » 28 Nov 2014, 09:25

SfS wrote:Просто у меня есть полный драйвер PS2 клавы. С поддержкой режимов и раскладок. но там таблиц много. Только отдельная страница спасёт

у меня тоже сначало было дохрена таблиц и лупов с поиском.
Потом немного доработал. в общем посмотри, мож чё есть интересное.
Можно ещё чуть сократить таблицы. Вроде даже сокращал, но что то пока не найду.
Code: Select all
// Standard Input/Output functions
#include <stdio.h>
#include <intrz80.h>
#include <string.h>
#include "conio.h"

const unsigned char scodes[] = {
//   0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf
//     0, F9,  0, F5, F3, F1, F2,F12,  0,F10, F8, F6, F4,TAB,'`',  0,
     0, 76,  0, 72, 70, 68, 69, 79,  0, 77, 75, 73, 71, 67, 33,  0, //0x00
//     0,  0,  0,  0,  0,'q','1',  0,  0,  0,'z','s','a','w','2',  0,
     0,  0,  0,  0,  0, 17, 39,  0,  0,  0, 26, 19,  1, 23, 40,  0, //0x10
//     0,'c','x','d','e','4','3',  0,  0,' ','v','f','t','r','5',  0,
     0,  3, 24,  4,  5, 42, 41,  0,  0, 48, 22,  6, 20, 18, 43,  0, //0x20
//     0,'n','b','h','g','y','6',  0,  0,  0,'m','j','u','7','8',  0,
     0, 14,  2,  8,  7, 25, 44,  0,  0,  0, 13, 10, 21, 45, 46,  0, //0x30
//     0,',','k','i','o','0','9',  0,  0,'.','/','l',';','p','-',  0,
     0, 31, 11,  9, 15, 38, 47,  0,  0, 32, 35, 12, 29, 16, 36,  0, //0x40
//     0,  0,  ',  0,'[','=',  0,  0,  0,  0,ENT,']',  0,  \,  0,  0,
     0,  0, 30,  0, 27, 37,  0,  0,  0,  0, 49, 28,  0, 34,  0,  0, //0x50
//     0,  0,  0,  0,  0,  0, BS,  0,  0,'1',  0,'4','7',  0,  0,  0,
     0,  0,  0,  0,  0,  0,127,  0,  0, 51,  0, 54, 57,  0,  0,  0, //0x60
//   '0','.','2','5','6','8',ESC,  0,F11,'+','3','-','*','9',  0,  0,
    50, 65, 52, 55, 56, 58, 66,  0, 78, 64, 53, 63, 62, 59,  0,  0, //0x70
//     0,  0,  0, F7                               
     0,  0,  0, 74};                               


const unsigned char unmod[] = " \n0123456789 /*-+.";
const unsigned char stand[] = "[];\',.`\\/-=";
const unsigned char stand_sh[] = "{}:\"<>~|?_+)!@#$%^&*(";
const unsigned char rust[] = {
   'ф','и','с','в','у','а','п','р',
   'ш','о','л','д','ь','т','щ','з',
   'й','к','ы','е','г','м','ц','ч',
   'н','ю'+1,'х','ъ','ж','э','б','ю',
   'ё','\\','.','-','='};
const unsigned char rust_sh[] = "ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯХЪЖЭБЮЁ/,_+)!\"№;%:?*(";

static unsigned char is_up=0, shift = 0, mode = 0, rus=0, alt=0;

#define KEY_MODE_NONE   0x00
#define KEY_MODE_RUS   0x01
#define KEY_MODE_SHIFT   0x02
#define KEY_MODE_ALT   0x04
#define KEY_MODE_CTRL   0x08
#define KEY_MODE_UP      0x10
#define KEY_MODE_E0      0x20

static unsigned int cur_key=0;

static unsigned char inv=0;

unsigned char get_evo_rtc(unsigned char addr)
{
   output(0xdef7,addr);
   return input(0xbef7);
}       
//***********************************************
// decode scan code
unsigned char get_scan(void)
{
   unsigned char sc;
    output(0xdef7,0xf0);
    sc=input(0xbef7);
    if(sc==0xff){
      set_evo_rtc(0x0c,1);
      sc = 0;
    }
    return sc;
}
int decode(unsigned char sc) {
      if (!(mode&KEY_MODE_UP)){
         switch (sc) {
         case 0xF0 :// The up-key identifier
            mode|=KEY_MODE_UP;
            break;
         case 0x12 :// Left SHIFT
         case 0x59 :// Right SHIFT
            mode|=KEY_MODE_SHIFT;
            if(mode&KEY_MODE_ALT)
               mode^=KEY_MODE_RUS;
            mode&=~KEY_MODE_E0;
            break;
         case 0x11 :// Alt 
            mode=(mode|KEY_MODE_ALT)&(~KEY_MODE_E0);
            if(mode&KEY_MODE_SHIFT)
               mode^=KEY_MODE_RUS;
            break;
         case 0xe0 :
            mode|=KEY_MODE_E0;
            break;
         default:
            if(mode&KEY_MODE_E0){
               mode&=~KEY_MODE_E0;
               return 0x0100|sc;
            }
            sc=scodes[sc];
            if(!sc) return 0;
            else if (sc>65) return sc;
            else if (sc>47) return unmod[sc-48];
            //sc--;
            switch(mode&(KEY_MODE_RUS|KEY_MODE_SHIFT)){
               case KEY_MODE_NONE :
                  if(sc<27)return (sc+'a'-1);
                  else if (sc>37) return (sc+'0'-38);
                  return stand[sc-27];
               case KEY_MODE_SHIFT :
                  if(sc<27)return (sc+'A'-1);
                  return stand_sh[sc-27];
               case KEY_MODE_RUS :
                  if(sc<38)return rust[sc-1];
                  return (sc+'0'-38);
               case (KEY_MODE_SHIFT|KEY_MODE_RUS) :
                  return rust_sh[sc-1];
            }
         }
   }
   else {
      switch (sc) {
         case 0x12 :// Left SHIFT
            mode&=~KEY_MODE_SHIFT;
            break;
         case 0xe0 :
            return 0;
         case 0x59 :// Right SHIFT
            mode&=~KEY_MODE_SHIFT;
            break;
         case 0x11 :// Alt
            mode&=~KEY_MODE_ALT;
            break;
      }
      mode&=~(KEY_MODE_UP|KEY_MODE_E0);// Two 0xF0 in a row not allowed
   }
   return 0;
}                                               

int _kbhit(void)
{
   if (cur_key) return cur_key;
   
    if(!(cur_key=get_scan())) return 0;
   
    cur_key=decode(cur_key);
    return cur_key;
}

int getchar(void)
{
  int data;
  while (!cur_key)_kbhit();
  data=cur_key;
  cur_key=0;
  return data;
}
ZX-Evo rev C, ZXNetUsb rev С
DimkaM
 
Posts: 1272
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby DimkaM » 28 Nov 2014, 09:42

И на всякий случай печать текстмодовая(под иар правда). А то чёта жутко мало символов лезет в экран
Code: Select all
   PUBLIC curs_x
   PUBLIC curs_y
   PUBLIC curs_c
   PUBLIC _low_put_scr
   EXTERN  ?BANK_WIND_NUM_L08 ;номер очка 0-3 под банкинг.
   RSEG RCODE 
set_text_page:
   pop hl
   push bc
   ld a,?BANK_WIND_NUM_L08+0x04
   in   a,(0xbe)
   push af
   ld bc,LWRD((?BANK_WIND_NUM_L08 << 14)|0x37f7)
   ld a,0xf7
   out (c),a
   jp (hl)
res_text_page:
   ld bc,LWRD((?BANK_WIND_NUM_L08 << 14)|0x37f7)
   pop hl
   pop af
   out (c),a
   pop bc
   jp (hl)
   
_low_put_scr:          BC=символ
   call set_text_page
   push bc
   ld a,?BANK_WIND_NUM_L08+0x04
   in   a,(0xbe)
   push af
   ld bc,LWRD((?BANK_WIND_NUM_L08 << 14)|0x37f7)
   ld a,0xf7
   out (c),a
   LD hl,(curs_y)
   ld a,h
   inc a
   ld (curs_x),a
   LD A,0x1C
   SRL H
   RRA
   RRA
   ADD A,L
   LD L,H
   LD H,A
   XOR A
   SRL H
   RRA
   SRL H
   RRA
   ADD A,L
   LD L,A
   ld a,h
   or ?BANK_WIND_NUM_L08<<6
   ld h,a
   ld (hl),e
   ld a,0x30
   xor h
   ld h,a
   bit 4,h
   jr nz,lps_nodd
   inc l
lps_nodd:
   ld a,(curs_c)
   ld (hl),a
   call res_text_page
   RET

   RSEG   UDATA0
curs_y:
   DEFS   1
curs_x:
   DEFS   1
curs_c:         ;color
   DEFS   1
   
   END
ZX-Evo rev C, ZXNetUsb rev С
DimkaM
 
Posts: 1272
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby DimkaM » 28 Nov 2014, 09:54

SfS wrote:Просто в dofork() я портил регистр а инверсией. Номер страницы инвертировался для вывода в пентевный регистр.
Ещё одна команда cpl спасла меня.

Совет, выкинь ВСЕ 'cpl' !!!
Забудь про инверсию. Щитай что нет её. Инверсия(и то только в константах) тебе нужна только чтобы включать экран(ну и бейсик, ежли его процедуры юзаеш) в адресное пространство зетника.
ZX-Evo rev C, ZXNetUsb rev С
DimkaM
 
Posts: 1272
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby SfS » 28 Nov 2014, 19:40

могу и выкинуть. да этот cpl настолько мало жрёт по сравнению с остальным кодом, то непринципиально.
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 202
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby SfS » 01 Dec 2014, 21:18

Вот стабильный образ ядра. Ну скажем так.. гораздо более стабильный, чем был)
Attachments
FUZIX-BIN.7z
(118.52 KB) Downloaded 234 times
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 202
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby acidrain » 29 Jan 2015, 15:52

О, класс! Спасибо!
acidrain
 
Posts: 19
Joined: 19 Oct 2010, 15:09
Group: Registered users

Postby DimkaM » 20 Apr 2016, 09:46

Образ флешки. Либо винхексом либо dd на флешку скопировать.
Маньяки могут подцепить к унрилу тупо
sd.zip
(502.16 KB) Downloaded 143 times
ZX-Evo rev C, ZXNetUsb rev С
DimkaM
 
Posts: 1272
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby Den1982 » 23 Apr 2016, 10:47

DimkaM wrote:Образ флешки. Либо винхексом либо dd на флешку скопировать.

Здесь ядро которе SfS выкладывал?
User avatar
Den1982
 
Posts: 76
Joined: 07 May 2012, 17:17
Group: Registered users

PreviousNext

Return to Пентева - софт и железо

Who is online

Users browsing this forum: agrohimyje and 2 guests

cron