Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - mhi

Stran: 1 2 [3] 4 5 ... 34
31
Vývoj / Re:C pre-preprocesor
« kdy: 11. 04. 2023, 20:24:12 »
Takze vse vyresim humpolackou metodou, radky tak, ze udelam spravny pocet newline za svym prepsanym kodem, aby to odpovidalo zdrojaku. A necham to at si vsechno resi pravidla Makefile, pro MSVC asi pres pre-compile command.

Prijde mi zajimave jak jsem dostal hromadu odpovedi ... ale ne na moje otazky :).

CPU: Na tvorbe C pre-precompileru bych svoji karieru asi nestavel.

32
Vývoj / Re:C pre-preprocesor
« kdy: 09. 04. 2023, 21:42:32 »
Dekuji za odpovedi, prestoze tedy neodpovidaji na me otazky, ale budiz. Otazky jsou stale aktualni :).

Duvody proc to chci takhle jsou asi 2, prvni je aby to bylo rychle; ten disassembler je i "analyzujici", a ja jsem liny clovek, takze celkem hrubou silou budu hledat zpetne treba kde se pushuji argumenty na stack, bez toho abych tam delal nejake slozitejsi veci. Takze nejake neustale prochazeni toho bitstringu v nejake fci je neunosne, i moje cesta je celkem pomala, mozna bude nutne "vetsi kalibr" ve forme nejakeho rozeskakavani (prirazeni od promennych jsem v minulosti resil pres varargs, argumenty vzdy v paru int* kamToUlozit a char oznacenibitu, callback neni nutny). Druha vec je prehlednost, kod ktery treba navrhuje RDa pro mne neni jednoduse naprogramovatelny bez chyb, a neni prilis snadno udrzovatelny. Muzu sem dat priklad jak vypada treba risc-v, ktery je celkem slusne navrzeny a neni to obvykle cunecina typu "kdyz jsou v instrukci XYZ nastaveny bity 567 do 101 tak je to vlastne uplne jina instrukce ABC :)". I tak je to uz na hrane, kdyz tam clovek pak chce neco pridat, musi premyslet kam presne to dat aby neco nerozbil.

Kód: [Vybrat]
    //0010011 ADDI, SLTI, SLTIU, XORI, ORI, ANDI
    //0010011 SLLI, SRLI, SRAI
    if ( (opcode & 0x7F) == 0x13) {
          switch ((opcode>>12) &7) {
           case 0b000: opname = "addi"; break;
           case 0b010: opname = "slti"; break;
           case 0b011: opname = "sltiu"; break;
           case 0b100: opname = "xori"; break;
           case 0b110: opname = "ori"; break;
           case 0b111: opname = "andi"; break;
           default: opname = NULL; break;
          }
          simmval = SIGNEXT( ((opcode>>20)&0xFFF),12);
          if (opname) {
            if (rel != NULL && ELF32_R_TYPE (rel->r_info) == R_RISCV_LO12_I && (rel->r_addend&0xFFF) == (simmval&0xFFF)) {
                        sprintf (line, "%s %s, %s, %%lo(%s)", opname, riscv_regnames[bits7_11], riscv_regnames[bits15_19], fmt_opt_addend(get_symbol_name (ELF32_R_SYM (rel->r_info)), rel->r_addend));
                        *relparsed = 1;
                      } else {           
    sprintf (line, "%s %s, %s, %s", opname, riscv_regnames[bits7_11], riscv_regnames[bits15_19], fmt_hexneg(simmval) );
            }
            return 4;
          }
         
          if ( ((opcode>>12) &7) == 0b001 && ((opcode>>25) &0x7F) == 0 )
           opname = "slli";
          if ( ((opcode>>12) &7) == 0b101 && ((opcode>>25) &0x7F) == 0 )
           opname = "srli";
          if ( ((opcode>>12) &7) == 0b101 && ((opcode>>25) &0x7F) == 0b0100000 )
           opname = "srai";


          if (opname) {
    sprintf (line, "%s %s, %s, 0x%03X", opname, riscv_regnames[bits7_11], riscv_regnames[bits15_19],  ((opcode>>20)&0xFF) );
            return 4;
          }

    }

Prumerne bych odhadnul ze udelam kazdou ctvrtou-patou instrukci nejakou chybu behem pocitani tech bitshiftu/andu/permutaci a uz mne to moc nebavi, ten tool je cesta k vysledku, ne smysl meho zivota.

Nechapu taky co bych ziskal implementaci v C++, krome toho ze bych to nemel na tisicovce (dvou) radek, ale treba v trech stech tridach ? Z toho mi uplne beha mraz po zadech. Ale je mozne, ze jsem celou teorii okolo OOP vlastne prilis nepochopil. Kdyz jsem psal ten C lexer, pri cteni vlastnosti modernich C++ jsem jenom ziral a ujistoval se, ze to neni nejaky omyl. Zajimalo by mne, jestli existuje na tehle planete nejaky clovek, ktery skutecne vsemu v C++ rozumi a je schopen rict "co se stane kdyz ..."

33
Vývoj / C pre-preprocesor
« kdy: 09. 04. 2023, 01:31:27 »
Pisu nejaky disassembler pro ne uplne bezny RISCovy procesor. Potrebuju nejak rozumne v cecku udelat to, abych mohl porovnavat masky instrukci (vyznamove bity jsou ruzne rozesety) a soucasne jsem mohl extrahovat jednotlive bity do promennych.  Tohle se pise hrozne blbe v cistem C, tak jsem zacal psat program, ktery rozepise kazde volani fiktivni fce bitmatch(var,bitmask[,assignments]) tak, aby vratila nonzero kdyz dojde k matchi instrukce a vyextrahovala mi bity do promennych. Takhle zustava kod celkem slusne citelny a je to syntakticky podobne cecku, takze jdou pouzit indentory, syntax highlighting, apod. Zde je priklad:

Kód: [Vybrat]
  if (bitmatch
      (opcode, '01010a100aabab.' /*an opcode */ , rd /*target reg */  =
       b, rs = a))
    {
      printf ("ok");
    }

vystup:
Kód: [Vybrat]
  if (/*.................................................01010a100aabab.*/ ((opcode & 0x7DC0) == 0x2900) && (rd = ((opcode>>1)&0x1)<<0|((opcode>>3)&0x1)<<1,rs = ((opcode>>2)&0x1)<<0|((opcode>>4)&0x3)<<1|((opcode>>9)&0x1)<<3,1))
    {
      printf ("ok");
    }

(neni to jeste dodelane, tohle je fiktivni instrukce, a je pozde a nejsem si jist jestli tam nemam nejakou botu)

Z jineho projektu mam napsany C lexikalni analyzator (tokenizer), ktery jsem na to pouzil, jeho funkce je primitivni, najde dalsi token a naplni strukturu s informacemi o tokenu. Udelal jsem tedy primitivni preprocesor, ktery z meho pseudo-c generuje cecko (lokalizuje identifikator bitmatch a slepe prepise do C kodu):


Kód: [Vybrat]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ctok.h"

void
synterr (struct ctok *tok, const char *whatiswrong)
{
  printf ("Syntax error: %s\n", whatiswrong);
  exit (1);
}

int
main (int argc, char **argv)
{
  struct ctok tok;
  int pos, lastwpos;
  int i, j, k;
  int bs, be, bp;
  char varname[0x100], valname[0x100], bitmask[64];
  unsigned long long bmmask, bmval;


  if (argc != 3)
    {
      printf ("Usage: %s [infile.d.c] [outfile.c]\n", argv[0]); // xxx outfile se ted nepouziva
      exit (1);
    }

  if (ctok_readfile (argv[1]) <= 0)
    {
      perror (argv[1]);
      exit (1);
    }

  fprintf (stdout, "/*Automatically generated by %s, DO NOT EDIT! */\n\n",
           argv[0]);

  lastwpos = pos = 0;
  while (ctok_gettoken (pos, &tok, CTOK_FLAG_IGNORECOMMENTS) > CTOK_EOF)
    {
      // Search for identifier "bitmatch"
      if (tok.toktype == CTOK_IDENT && tok.len == 8
          && !memcmp (tok.data, "bitmatch", tok.len))
        {
          if (lastwpos < pos)
            {
              fwrite (ctok_getdata (lastwpos), pos - lastwpos, 1, stdout);
            }

          if (ctok_gettoken
              (ctok_nexttokpos (&tok), &tok,
               CTOK_FLAG_IGNORECOMMENTS) != CTOK_SYMBOL && tok.info != '(')
            synterr (&tok, "Expected (");

          if (ctok_gettoken
              (ctok_nexttokpos (&tok), &tok,
               CTOK_FLAG_IGNORECOMMENTS) != CTOK_IDENT)
            synterr (&tok, "Expected variable identifier");

          memcpy (varname, tok.data, tok.len);
          varname[tok.len] = 0;

          if (ctok_gettoken
              (ctok_nexttokpos (&tok), &tok,
               CTOK_FLAG_IGNORECOMMENTS) != CTOK_SYMBOL || tok.info != ',')
            synterr (&tok, "Expected \',\' after variable identifier");


          if (ctok_gettoken
              (ctok_nexttokpos (&tok), &tok,
               CTOK_FLAG_IGNORECOMMENTS) != CTOK_CHARLIT)
            synterr (&tok, "Expected bitmask");


          memcpy (bitmask + 64 - tok.len, tok.data, tok.len);

          // ignore spaces in bits, these are just for better readibility
          for (i = 0, j = 0; i < tok.len; i++)
            if (tok.data[i] != ' ')
              bitmask[j++] = tok.data[i];

          memmove (bitmask + 64 - j, bitmask, j);
          memset (bitmask, '.', 64 - j);

          bmval = bmmask = 0;
          for (i = 0; i < 64; i++)
            if (bitmask[63 - i] == '0' || bitmask[63 - i] == '1')
              {
                bmmask |= 1ULL << i;
                if (bitmask[63 - i] == '1')
                  bmval |= 1ULL << i;
              }

          printf ("/*%64.64s*/ ((%s & 0x%llX%s) == 0x%llX%s) && (", bitmask,
                  varname, bmmask, (bmmask >> 32) != 0 ? "ULL" : "", bmval,
                  (bmval >> 32) != 0 ? "ULL" : "");

          while (1)
            {
              if (ctok_gettoken
                  (ctok_nexttokpos (&tok), &tok,
                   CTOK_FLAG_IGNORECOMMENTS) != CTOK_SYMBOL
                  || (tok.info != ')' && tok.info != ','))
                synterr (&tok, "Expected , or )");

              if (tok.info == ')')
                break;

              if (ctok_gettoken
                  (ctok_nexttokpos (&tok), &tok,
                   CTOK_FLAG_IGNORECOMMENTS) != CTOK_IDENT)
                synterr (&tok, "Expected variable identifier");

              memcpy (valname, tok.data, tok.len);
              valname[tok.len] = 0;


              if (ctok_gettoken
                  (ctok_nexttokpos (&tok), &tok,
                   CTOK_FLAG_IGNORECOMMENTS) != CTOK_SYMBOL
                  || tok.info != '=')
                synterr (&tok, "Expected = for bits assignment");

              if (ctok_gettoken
                  (ctok_nexttokpos (&tok), &tok,
                   CTOK_FLAG_IGNORECOMMENTS) != CTOK_IDENT || tok.len != 1)
                synterr (&tok, "Expected bit letter/identifier");

              printf ("%s = ", valname);

              // calculate bit extraction equations
              for (bp = 0, i = 0; i < 64; i++)
                if (bitmask[64 - 1 - i] == tok.data[0])
                  {
                    bs = i;
                    while (i < 64 && bitmask[64 - 1 - i] == tok.data[0])
                      i++;
                    be = i;
                    if (bp != 0)
                      printf ("|");
                    printf ("((%s>>%d)&0x%X)<<%d", varname, bs,
                            (1 << (be - bs)) - 1, bp);
                    bp += be - bs;
                  }
              if (bp == 0)
                {
                  printf ("No matching bits for variable %s\n", valname);
                  exit (1);
                }

              printf (",");

            }                   // while new stuff for bit assignment

          printf ("1)");

          lastwpos = ctok_nexttokpos (&tok);
        }                       // if "bitmatch" identifier token


      pos = ctok_nexttokpos (&tok);

    }

  if (tok.toktype != CTOK_EOF)
    synterr (&tok, "C parser error");

  if (lastwpos < pos)
    {
      fwrite (ctok_getdata (lastwpos), pos - lastwpos, 1, stdout);
    }


  return 0;
}

Cilove prekladace jsou gcc, llvm, msvc.

Ma to 2 problemy:

- idealne bych potreboval nejak vystup poslat do prekladace bez generovani mezisouboru. Videl jsem nejake snahy o vlastni preprocesor ( https://stackoverflow.com/questions/3545875/custom-gcc-preprocessor ), ale takhle to nechci, navic msvc (Windows) bude problem. Idealni by byl nejaky parametr typu '-custom-preprocessor-before-cpp1=...'. Nenasel jsem. Nebo to tam dostat pres pipe. Nenasel jsem jak.

- potrebuju zachovat cisla radek (pocitejme s tim, ze nahrazovane "volani" bitmatch budou i viceradkova, s komentari,atd.) , aby kdyz se seknu nekde v kodu slo hledat chyby (nutne aby to chodilo alespon v gcc/llvm, msvc by bylo fajn, predpokladam ze #line by to nejak mel resit, ale nejak se mi zatim nedari. Jak na to?

Mimo tyto dotazy by mne jeste zajimalo, jestli nejake moderni jazyky poskytuji knihovny, ktere tohle umoznuji napsat s kratsim kodem. C tokenizer vyuziva jen libc a ma pocty radek:  740 ctok.c / 177 ctok.h; jsem takova kozerva, treba mi nekdo ukazete ze s "modernim programovanim" to jde udelat jednoduseji.

34
Hardware / Re:Získání dat z diskety ve formátu IBM HDR1
« kdy: 28. 03. 2023, 13:05:26 »
Emulator nemam, ale to vubec nevadi. Diskety uz ctu.

Jedna se o diskety k tomuhle http://www.ebastlirna.cz/modules.php?name=Forums&file=viewtopic&t=77106&postdays=0&postorder=asc&highlight=c2715&start=0 - je to nejspis klon IBM 5280, tedy to je otazka do jake miry to je identicke.

Resim ted otazku ohledne jejich "assembleru"  BAL. Mam napsany disassembler, ktery zchroupe ROMku z te C2715 a celkem to i dava smysl, ovsem u programu z disket mi to nesedi a nevim proc. Trosku mi to cele pripomina, ze z BALu leze nejaky pseudokod, mozna nasledne interpretovane opkody pro nejaky IBM Mainframe.

Nekdo se tu kdysi jak se matne pamatuji zminoval, ze mu lezi doma ladem nerozchozeny nejaky IBM mainframe, ozve se mi? Pripadne jestli s tim nekdo mate zkusenost a na prvni pohled vidite zda to je IBM 8250 kompatibilni?

Kód: [Vybrat]
114E: BBK 11 40          # pointer na tisteny retezec
1151: BBW 26 11
1154: VIW
1155: NUS
1156: PS0
1157: BWW 00 00 00
115B: WUW
115C: P1K
115D: BBK 10 db
1160: BBW 26 11
1163: VIW
1164: P0S
1165: SVE
1166: VIW
1167: NOP
1168: NOP
1169: NOP
116A: IN2 75
116D: B1L 08
116F: BBK ff ff
1172: B1S 01
1174: PSM
1175: PM1
1176: VS1

35
Hardware / Re:IBM diskety "HDR1" - format, jak extrahovat
« kdy: 23. 03. 2023, 20:13:28 »
Diky :)

..

zda se, ze vse je popsane v ISO7665

Information processing — File structure and labelling
of flexible disk cartridges for information interchange
Traitement de /'information — Structure des fichiers et dtiquetage des cartouches a disquette pour I'echange d'information
First edition — 1983-12-15

HDR1 tam ma 128bytu, je tam i ERMAP, atd...

A navic je to popsane v systemovem manualu k Consulu 2715... to jsem hledal fakt blbe, ze jsem nenasel.

36
Hardware / Získání dat z diskety ve formátu IBM HDR1
« kdy: 23. 03. 2023, 17:19:54 »
Abych nevymyslel znovu kolo, radsi se zeptam mistnich odborniku .. tusite jak extrahovat diskety IBM formatu s "HDR1"? Vypada to celkem podobne k https://www.ibm.com/docs/en/zos/2.1.0?topic=format-standard-data-set-label-1-hdr1eov1eof1

konkretne mi jde o http://www.bitsavers.org/bits/IBM/5280/SS/ ; zde davam dump prevedeny z EBCDIC na citelne ASCII (vlevo HEX je original):

Kód: [Vybrat]
EBCDIC dump SYSCON7.IMD:
00000000:  49 4D 44 20 31 2E 31 38  3A 20 20 36 2F 30 38 2F | .(..............
00000010:  32 30 31 37 20 31 35 3A  30 38 3A 33 36 0D 0A 1A | ................  tohle je ASCII hlavicka toho image
00000020:  00 00 00 1A 00 01 02 03  04 05 06 07 08 09 0A 0B | ................
00000030:  0C 0D 0E 0F 10 11 12 13  14 15 16 17 18 19 1A 01 | ................
00000040:  C9 D7 D3 F0 F8 40 40 40  40 40 40 40 40 40 40 40 | IPL08
00000050:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000060:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000070:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000080:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000090:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000000A0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000000B0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000000C0:  01 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | .
000000D0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000000E0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000000F0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000100:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000110:  40 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |  ...............
00000120:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000130:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000140:  00 01 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | ..
00000150:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000160:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000170:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000180:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000190:  40 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |   ..............
000001A0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000001B0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000001C0:  00 00 01 40 40 40 40 40  40 40 40 40 40 40 40 40 | ...
000001D0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000001E0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000001F0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000200:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000210:  40 40 40 00 00 00 00 00  00 00 00 00 00 00 00 00 |    .............
00000220:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000230:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000240:  00 00 00 01 C5 D9 D4 C1  D7 40 40 40 40 40 40 40 | ....ERMAP
00000250:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000260:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000270:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000280:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000290:  40 40 40 40 00 00 00 00  00 00 00 00 00 00 00 00 |     ............
000002A0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000002B0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000002C0:  00 00 00 00 01 40 40 40  40 40 40 40 40 40 40 40 | .....
000002D0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000002E0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000002F0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000300:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000310:  40 40 40 40 40 00 00 00  00 00 00 00 00 00 00 00 |      ...........
00000320:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000330:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000340:  00 00 00 00 00 01 E5 D6  D3 F1 F5 F7 F0 F8 E2 C3 | ......VOL15708SC
00000350:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 C9 C2 |               IB
00000360:  D4 F5 F2 F8 F0 40 40 40  40 40 40 F2 F9 F2 F4 E2 | M5280      2924S
00000370:  C3 F1 D9 F0 F7 F0 E5 F0  F1 40 40 40 40 40 40 40 | C1R070V01
00000380:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000390:  40 F1 F0 F1 40 E6 00 00  00 00 00 00 00 00 00 00 |  101 W..........
000003A0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000003B0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000003C0:  00 00 00 00 00 00 01 C8  C4 D9 F1 40 E2 E8 E2 C9 | .......HDR1 SYSI
000003D0:  D7 D3 40 40 40 40 40 40  40 40 40 40 40 40 40 F2 | PL             2
000003E0:  F5 F6 D9 F0 F1 F0 F0 F1  F1 F0 F4 F0 F1 F0 40 40 | 56R01001104010
000003F0:  40 40 C9 40 40 40 F8 F3  F0 F4 F1 F9 40 F2 F5 F6 |   I   830419 256
00000400:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000410:  C4 F0 F4 F0 F1 F1 40 40  40 40 40 40 40 40 40 40 | D04011
00000420:  40 40 40 40 40 40 C9 C2  D4 F5 F2 F8 F0 40 40 40 |       IBM5280
00000430:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000440:  40 40 40 40 40 40 40 01  C8 C4 D9 F1 40 E2 E8 E2 |        .HDR1 SYS
00000450:  C4 C9 D7 D3 40 40 40 40  40 40 40 40 40 40 40 40 | DIPL
00000460:  F2 F5 F6 D9 F0 F4 F0 F1  F1 F1 F0 F5 F0 F1 F4 40 | 256R04011105014
00000470:  40 40 40 C9 40 40 40 F8  F3 F0 F4 F1 F9 40 F2 F5 |    I   830419 25
00000480:  F6 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | 6
00000490:  40 C4 F0 F5 F0 F1 F5 40  40 40 40 40 40 40 40 40 |  D05015
000004A0:  40 40 40 40 40 40 40 C9  C2 D4 F5 F2 F8 F0 40 40 |        IBM5280
000004B0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000004C0:  40 40 40 40 40 40 40 40  01 C8 C4 D9 F1 40 E2 E8 |         .HDR1 SY
000004D0:  E2 C4 D7 D9 E3 F1 40 40  40 40 40 40 40 40 40 40 | SDPRT1
000004E0:  40 F2 F5 F6 D9 F0 F5 F0  F1 F5 F1 F0 F6 F0 F1 F1 |  256R05015106011
000004F0:  40 40 40 40 C9 40 40 40  F8 F3 F0 F4 F1 F9 40 F2 |     I   830419 2
00000500:  F5 F6 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | 56
00000510:  40 40 C4 F0 F6 F0 F1 F2  40 40 40 40 40 40 40 40 |   D06012
00000520:  40 40 40 40 40 40 40 40  C9 C2 D4 F5 F2 F8 F0 40 |         IBM5280
00000530:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000540:  40 40 40 40 40 40 40 40  40 01 C8 C4 D9 F1 40 E2 |          .HDR1 S
00000550:  E8 E2 E3 C2 D3 E2 40 40  40 40 40 40 40 40 40 40 | YSTBLS
00000560:  40 40 F2 F5 F6 D9 F0 F6  F0 F1 F2 F1 F2 F1 F0 F1 |   256R0601212101
00000570:  F4 40 40 40 40 C9 40 40  40 F8 F3 F0 F4 F1 F9 40 | 4    I   830419
00000580:  F2 F5 F6 40 40 40 40 40  40 40 40 40 40 40 40 40 | 256
00000590:  40 40 40 C4 F2 F1 F0 F1  F5 40 40 40 40 40 40 40 |    D21015
000005A0:  40 40 40 40 40 40 40 40  40 C9 C2 D4 F5 F2 F8 F0 |          IBM5280
000005B0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000005C0:  40 40 40 40 40 40 40 40  40 40 01 C8 C4 D9 F1 40 |           .HDR1
000005D0:  E2 E8 E2 C4 D7 D9 E3 F2  40 40 40 40 40 40 40 40 | SYSDPRT2
000005E0:  40 40 40 F2 F5 F6 D9 F2  F1 F0 F1 F5 F1 F2 F3 F0 |    256R210151230
000005F0:  F0 F8 40 40 40 40 C9 40  40 40 F8 F3 F0 F4 F1 F9 | 08    I   830419
00000600:  40 F2 F5 F6 40 40 40 40  40 40 40 40 40 40 40 40 |  256
00000610:  40 40 40 40 C4 F2 F3 F0  F0 F9 40 40 40 40 40 40 |     D23009
00000620:  40 40 40 40 40 40 40 40  40 40 C9 C2 D4 F5 F2 F8 |           IBM528
00000630:  F0 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | 0
00000640:  40 40 40 40 40 40 40 40  40 40 40 01 C8 C4 D9 F1 |            .HDR1
00000650:  40 E2 E8 E2 C3 D3 D6 E2  C5 40 40 40 40 40 40 40 |  SYSCLOSE
00000660:  40 40 40 40 F2 F5 F6 D9  F2 F3 F0 F0 F9 F1 F2 F4 |     256R23009124
00000670:  F0 F1 F5 40 40 40 40 C9  40 40 40 F8 F3 F0 F4 F1 | 015    I   83041
00000680:  F9 40 F2 F5 F6 40 40 40  40 40 40 40 40 40 40 40 | 9 256
00000690:  40 40 40 40 40 C4 F2 F5  F0 F0 F1 40 40 40 40 40 |      D25001
000006A0:  40 40 40 40 40 40 40 40  40 40 40 C9 C2 D4 F5 F2 |            IBM52
000006B0:  F8 F0 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | 80
000006C0:  40 40 40 40 40 40 40 40  40 40 40 40 01 C8 C4 D9 |             .HDR
000006D0:  F1 40 E2 E8 E2 C3 D6 D5  40 40 40 40 40 40 40 40 | 1 SYSCON
000006E0:  40 40 40 40 40 F2 F5 F6  D9 F2 F5 F0 F0 F1 F1 F2 |      256R2500112
000006F0:  F9 F0 F0 F3 40 40 40 40  C9 40 40 40 F8 F3 F0 F4 | 9003    I   8304
00000700:  F1 F9 40 F2 F5 F6 40 40  40 40 40 40 40 40 40 40 | 19 256
00000710:  40 40 40 40 40 40 C4 F2  F9 F0 F0 F4 40 40 40 40 |       D29004
...

Diky za nakopnuti ... cilem je z diskety vytahnout jednotlive soubory (zaznamy).

Pripadne jestli nekdo tusite kde jsou nejake informace k IBM 5280 (jine nez na bitsavers, tam jsou akorat ty diskety a nejake manualy).

37
Hardware / Re:Sháním informace o ZVT SPU 800 (TP8)
« kdy: 13. 03. 2023, 17:34:49 »
Dovoluji si ozivit toto starsi tema - nejake informace k pocitaci se podarilo sehnat, a co vic, zapujceny mam i pocitac samotny (zrejme nefunkcni, nedovolim si ho dat pod napeti :) ). Aktualne tedy shanim jakykoliv SW k tomuto pocitaci. Pokud nekoho zajima jak zhruba to realne vypada a vnitrne funguje, zde je dalsi video: https://www.youtube.com/watch?v=qxyII20Vylo

38
Bazar / Re:Sháním malý rack za půl darma
« kdy: 03. 03. 2023, 11:57:01 »
my 2 cents: dbejte na pozarni a elektrickou bezpecnost. tzn. material, ktery nepodpali dum kdyz vyhori napajec zdroje, ukapne a kus nejakeho kovu, nebo to tam dokonce bude horet. Kovove casti je potreba uzemnit (jinak nez pres PE vodic pripojovaci vidlice switche).

Sam mam na pude neco na tento zpusob: https://www.esvit.cz/skrin-s3d-400x300x200-mp-nsys3d4320p-schneider

39
Vývoj / Re:RISC-V assembler
« kdy: 28. 02. 2023, 18:28:55 »
Eh ... tolik reci o RISC-V a jen jedna odpoved (za ni presto dekuji).

aktualne nevim uz asi jen 5), zbytek jsem si prubezne zjistil, tak kdyby to resil nekdo dalsi, kdo opravdu realne R-V pouziva a ne jen o nem mluvi :) ...

Prekladacem si nejsem jist zda vygeneruje vzdy spravny kod, ale zda se funguje " riscv64-linux-gnu-gcc -c -march=rv32imc -mabi=ilp32 test.c  -fno-plt -fno-pie -fno-pic", chci-li kod pro 32bit mikrokontroller  (rv23imc apod.)

No a nakonec %hi(X) a %lo(X) resi ty offsety pro lui/auipc a jejich protejsky lw/jalr v GNU as.

40
Vývoj / Re:RISC-V assembler
« kdy: 26. 02. 2023, 14:16:17 »
Dekuji za odkaz. Puvodne jsem v tom hledal, ze bud budou nejake bity napric formaty instkci spolecne, nebo podobny figl, a on tam je. Asi mne zmatla pro mne graficky celkem silene vyvedena dokumentace, nebo lui format, kde je zase posun.

Mel bych doplnujici otazky,

5) jak donutim gnu as, aby mi v pripade procesoru s "C"ompressed sadou vygeneroval 32bit instrukci, ktera ma ekvivalent v "I"nteger sade?

6) dale povedlo se vam pouzit Ubunti riscv64-gcc-(linux|unknown)-elf ke generovani kodu pro embedded rv32imc ? Jakou verzi a jake mate -march a -mabi ?

41
Vývoj / RISC-V assembler
« kdy: 25. 02. 2023, 23:14:41 »
Hezky vecer,

mel bych  par otazek na mistni znalce RISC-V.

1) proc jsou v nekterych instrukcich tak krypticky prehazovane bity ruznych imm/rel konstant? Napriklad JAL [RV32I] instrukce. Tam je bitove souvisly usek imm skladan jako imm[20] imm[10:1] imm[11] imm[19:12]; Kde se pripadne muzu docist na tema podobnych otazek navrhu R-V ISA, mam jich vic?

2) Jak v gnu as zapisu horni bity nejake adresy pro ucely auipc/lui (nejde mi primo o call). ELF relokace R_RISCV_HI20

3) to same pro dolni - ELF relokace R_RISCV_LO12_I apod.

4) Netyka se asi uplne Risc-V Tusite jak linker (gnu LD) resi RELAX relokaci, jak probehne to vyhozeni instrukce bez toho, aby musel prochazet cely kod a prehazovat vsechny relativni skoky/volani?

Dekuji.

42
Ano, leckde jde udelat tisk do PDF, NA CR nabizi i ulozeni jedne stranky do souboru po zadani captcha :). Jak o tom uvazuju, potrebuju spis jenom ty obrazky, protoze jde treba o dokument z 19. stoleti a uz s tim ma OCRko problemy i kdyz ma "cistou stranku" v 1bpp. Natoz aby tam byly nejake ovladaci prvky ktere vzniknou pri prevodu z HTML :).

Takze cil rozhodne neni ulozit jednu stranku do PDF, ale ulozit 200-1000 stranek v nejake forme, ktera mi umozni dalsi zpracovani. A to klidne i tak, ze to nekdo proklika, nebo se na to napise nejaky quicj'n'dirty javascript.

Osobne si myslim, ze kdybych do kazde te instituce kde neco potrebuju napsal, tak mi treba i PDFko poslou, ale je to casto treba na tyden cekani, na schvalovani nejakym vedoucim, atd.

43
Prosel jsem ten web a prijde mi to jako takovy lepsi wget, pletu se ? Ve FAQ tvrdi:

"There are cases, however, that can not be (yet) handled: [ ... ]    Intensive Java/Javascript sites - might be bogus/incomplete"

Ten JS je celkem bezny, pres xmlhttprq se nacte json seznam objektu, pak seznam dlazdic a cele se to generuje (netvrdim, ze to je prace pripad Zoomify z NA ČR). Pak jsou sluzby, kam se clovek musi prihlasit treba pres Google aby ziskal pristup k dokumentu. Proto mym napadem byla ta https proxy.

44
Obcas se mi stane, ze mam dostupny nejaky online zdroj pro knizku nebo obrazky, kde je z nejakeho duvodu komplikovano stazeni obrazku hromadne nebo ulozeni PDFka. Aktualne treba "analogove pomucky" z vademecum.nacr.cz jsou obrazky slozene z dlazdic typu https://vademecum.nacr.cz/mrimage/vademecum/zoomify//cz/archives/CZ-100000010/inventare/dao/images/0285/e049d8c9-9663-48ae-b076-03569bda7a71.jpg/TileGroup0/2-0-0.jpg

Jde mi ale o obecny princip, protoze takovych zdroju treba v zahranici jsou stovky (knihovny, archivy, apod.). Potrebuju tedy stahnout celou "knihu" (ukol 1) - zde jde o inventar archivniho fondu, pokud to ma dlazdice jako v prikladu tak ty pospojovat do jednoho obrazku (ukol 2), a pak z toho udelat PDFko nebo to prohnat OCRkem (ukol 3).

Ukol 3 umim-to neni problem.
Ukol 2 umim snadno naprogramovat pomoci libjpeg, treba na to neco existuje.

Ukol 1 aktualne vyresit numim. Napadaji mne 3 cesty

1a - automatizace pomoci prohlizece, prakticke by to bylo jen kdyz by existoval nejaky nastroj na tohle urceny, abych nemusel plodit javascripty pro kazdy pripad :(;

1b - pomoci (lib)curl si naprogramovat nejaky nastroj individualne pro kazdy pripad, ono tech prohlizecu dlazdicovanych knih/map/materialu neni tak moc, asi by to po nejake dobe slo recyklovat

1c - udelat proxyserver, ktery bude ukladat zvolene stranky na disk behem toho jak to clovek bude rucne prochazet. zde se moje cinnost redukuje pouze na lokalizaci dulezitych souboru v http(s) komunikaci, zbytek pak muze proklikat za mne nekdo jiny

A sakozrejme kombinace a-b-c :-).

Nerad bych znovuvynalezal kolo, budu rad za tipy na nejake existujici nastroje.

Cilem je treba OCRkovat tyhle scanovane dokumenty abych z 1000 stran nasel  10 stranek, kde se vyskytuje nejake slovo

Dekuji za pripadne odpovedi.

45
Studium a uplatnění / Re:Matematika na ČVUT/MUNI/VUT
« kdy: 09. 02. 2023, 18:49:19 »
Mozna jeste jeden vic informaticky priklad: naprogramujte Quick-Sort / Heap-Sort / Merge-Sort zni v 21. stoleti jako uloha z praveku - kdo kdy dneska realne (v akademicke sfere i v prumyslu) bude pouzivat svoji vlastni implementaci sortu (OK, mozna nejaky opravdu obskurni embedded scenar by se nasel, ale to ted nechme stranou)? Ja, teoretik z akademickeho prostredi, si uprimne myslim, ze prakticky nikdo.

Kupodivu se radim do te skupiny "prakticky nikdo" a je to prave to, co mne na programovani bavi. Samozrejme jsem neimplementoval ty sort argoritmy jako takove, ale byla to soucast jineho slozitejsiho algoritmu, kde treba znalost toho ze muzu diky urcite strukture dat velmi levne implementovat (v mem pripade) modifikovany bubblesort umoznila zefektivnit vyznamne algoritmus.

Dnesni svet speje k tomu, ze udelam pole, do ktereho pres treba nejaky SQL dotaz ci XML parser nasypu data, pak na to zavolam qsort, a pak s tim neco delam. A kdyz je to moc pomale, koupim lepsi pocitac. No ... jenze pak to narazi na mnozstvi dat, kde lepsi pocitac nepomuze. Nekdo mozna pronajme serverovou farmu a najde nejake hotove reseni, nekdo si to oddre v programu a na puvodnim HW to napocita za par dnu. (mozna se ale jako ekonomictejsi a vyvojove lepsi ukaze ta cesta koupit lepsi pocitac, protoze to muze udelat kazdy).

Stran: 1 2 [3] 4 5 ... 34