Stránka 1 z 3

Co to je za programovaci jazyk?

Napsal: 02 pro 2012, 21:16
od Celeron
Nepoznate nekdo prosim, v cem je napsany nasledujici zdrojak?
;--------------------
BEGIN { Prim }
p := LAST;
v := p + (2 * (n + 1));
printInt(2);
printSpace;
printInt(3);
printSpace;
x := 1;
lim := 2;
i := 6;
inc := 4;
squ := 9;
WHILE i <<= 2 * n DO
REPEAT
x := x + inc;
inc := 6 - inc;
IF squ <<= x
THEN lim := lim + 2;
v^[lim] := squ;
k := p^[lim + 2];
squ := k * k
ENDIF;
k := 4;
isPrime := true;
WHILE (isPrime <> false) AND (k << lim) DO
k := k + 2;
IF v^[k] << x
THEN v^[k] := v^[k] + 2 * p^[k]
ENDIF;
isPrime := x <> v^[k]
ENDWHILE
UNTIL isPrime <> false;
IF i <<= 2 * nl
THEN p^[i] := x
ENDIF;
printInt(x);
printSpace;
i := i + 2
ENDWHILE;
printChar(cr);
printChar(lf)
END Prim.
;----------------------------------------
Diky za pomoc.
Jirka
edit: bohuzel se rozhodil format

Napsal: 02 pro 2012, 21:22
od mikollar
Pascal ?

Napsal: 02 pro 2012, 21:28
od Celeron
Pascal MT+ a Turbopascal (je to na 8 bitu) jsem zkousel, vyhazoval spoustu chyb... Tohle je jen cast vetsiho zdrojaku. Je k nemu funkcni spustitelnej COM, takze necim to prelozit urcite jde.
Jirka

Napsal: 03 pro 2012, 11:50
od ZdenekHQ
Zkus Delphi.

Napsal: 03 pro 2012, 11:56
od Panda38
Z toho COM by mohlo jít něco vyčíst, překladače si často do kódu ukládají své podpisy, zkusit najít nějaké identifikační texty.

(Delphi neumí vygenerovat COM :-) )

Když je to na 8 bitů, to je pro jaký procesor, počítač, systém? CP/M ?

Napsal: 03 pro 2012, 12:01
od ZdenekHQ
Něco podobnýho jsem viděl na netu s koncovkou pro, ale k čemu to patří, to nevím.

Napsal: 03 pro 2012, 12:30
od Panda38
Nejspíš se jen trefit do správné verze Pascalu, možná tady by mohl některý sedět? http://www.z80.eu/pas-compiler.html

Napsal: 03 pro 2012, 12:40
od fikes
Když už jste u toho luštění v čem je program napsán, mám taky prosbu, v čem je toto? Pracuji v MPLABIDE a píšu programy v *.asm. Uvedenou proceduru bych potřeboval přepsat do MPLABIDE do formátu asm, nějak neumím níže uvedené číst. Je ke stažení nějaký popis instrukcí?


#include <p18f458.h> /* Register and bit declarations */
#include <delays.h>
#include <string.h>
#include "lcd1100.h"
#pragma config OSC = HS, OSCS = OFF
#pragma config PWRT= OFF , BOR=ON, BORV = 27
#pragma config WDT = OFF
#pragma config DEBUG = OFF ,LVP =OFF , STVR =OFF


void long_to_string_lz (unsigned int input, char *str, char numdigits);
void long_to_string (unsigned int input, char *str, char numdigits);

void main (void) {
TRISD=0;
Lcd_Init();
Gotoxy(5,2);
print_message("Nokia 1100 LCD ");
Gotoxy(5,5);
print_message("CircuitValley");
while(1) {
}
}



/*
*********************************************************************************************************
* long_to_string()
*
* Description : Convert a "long" to a null-terminated string
* (base = decimal)
* Arguments : input = number to be converted
* str = pointer to string (i.e. display buffer)
* numdigits = number of digits to display
* Returns : none
*********************************************************************************************************
*/
void long_to_string (unsigned int input, char *str, char numdigits)
{
char digit;
int blank = 1;
long_to_string_lz(input, str, numdigits);
for (digit=0; digit < numdigits-1; digit++) {
if (str[digit] == '0') {
if (blank == 1) str[digit] = ' ';
}
else {
blank = 0;
}
}
}


/*
*********************************************************************************************************
* long_to_string_lz()
*
* Description : Convert a "long" to a null-terminated string, with leading zeros
* (base = decimal)
* Arguments : input = number to be converted
* str = pointer to string (i.e. display buffer)
* numdigits = number of digits to display
* Returns : none
*********************************************************************************************************
*/
void long_to_string_lz (unsigned int input, char *str, char numdigits)
{
char digit;
for (digit=numdigits; digit > 0; digit--) {
str[digit-1] = (input % 10) + '0';
input = input / 10;
}
str[numdigits] = 0; // null-terminate the string
}

Napsal: 03 pro 2012, 13:33
od procesor
Je to v C-čku, ... :(

Napsal: 03 pro 2012, 15:02
od Panda38
Pro převod C do ASM je dobrá metoda přeložit to s listingem, je to pak výborná ASM nápověda a často lze přebírat celé úseky optimalizovaného ASM kódu.

Na popisy registrů a instrukcí PIC18f458 jsou datasheety: http://ww1.microchip.com/downloads/en/d ... 41159d.pdf , http://ww1.microchip.com/downloads/en/D ... 39500a.pdf

Napsal: 03 pro 2012, 19:51
od monterjirka
Ten výpis z prvního příspěvku mi trochu připomíná ALGOL, je to jeden z prvních "vyšších" jazyků", možné je to možné považovat za předchůdce nebo vzor Pascalu...

Napsal: 04 pro 2012, 00:01
od Celeron
Panda38 píše:Když je to na 8 bitů, to je pro jaký procesor, počítač, systém? CP/M ?

Je to Z80 s CP/M. Prave ze jsem zkousel CP/M Pascaly. V tom zdrojaku je ale datum z roku 2004, takze by to mohlo byt neco novejsiho od nejakyho retro priznivce. CP/M byla hodne psana v PL/1 a nebo ve PL/M "sloucenine" PL/1 a Algolu. Takze monterjirka ma asi pravdu. Tak to asi nema reseni, nevim o tom vubec nic...
Jirka

Napsal: 04 pro 2012, 08:17
od piitr
Mně to spíš připomíná nějaký basic.

Napsal: 04 pro 2012, 09:31
od Panda38
Basicy nepoužívaly přiřazení s := . Jinak by mohla být podobnost i s např. IDL, ale to jsou už novější jazyky vycházející z Basicu.

Ale připadá mi to přepsatelné do novějšího Pascalu. Nějaký který má kvalitnější chybová hlášení, pak by se snadno vyhledaly všechny potřebné změny. Např. hromadně nahradit všechna "THEN" slovy "THEN BEGIN" a všechna "ENDIF" nahradit "END", "ELSE" -> "END ELSE BEGIN". Podobně " DO" nahradit " DO BEGIN" a "ENDWHILE" nahradit "END", "REPEAT" -> "REPEAT BEGIN", "UNTIL" -> "END UNTIL". atd. Dal by se vytvořit skript na automatickou konverzi (např. pomocí sed popř. grep). Hlavičky funkcí BEGIN {} asi upravit ručně.

Napsal: 04 pro 2012, 10:03
od ZdenekHQ
Basic to není, to je nějakej přechod mezi Basicem a Pascalem. Mě pod CP/M taky běžel nějakej podivnej překladač, ale nikdy jsem ho nepoužíval. Navíc kdo si to má 20 let pamatovat, a pochybuju, že ty moje 3" diskety ještě žijí.