Co to je za programovaci jazyk?
Moderátor: Moderátoři
Co to je za programovaci jazyk?
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^ := x
ENDIF;
printInt(x);
printSpace;
i := i + 2
ENDWHILE;
printChar(cr);
printChar(lf)
END Prim.
;----------------------------------------
Diky za pomoc.
Jirka
edit: bohuzel se rozhodil format
;--------------------
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^ := x
ENDIF;
printInt(x);
printSpace;
i := i + 2
ENDWHILE;
printChar(cr);
printChar(lf)
END Prim.
;----------------------------------------
Diky za pomoc.
Jirka
edit: bohuzel se rozhodil format
- Panda38
- Příspěvky: 713
- Registrován: 21 lis 2012, 01:00
- Bydliště: Most, Praha, Lanžhot
- Kontaktovat uživatele:
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
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
}
#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
}
- Přílohy
-
- Nokia 1100 LCD interfaceing.zip
- (9.29 KiB) Staženo 34 x
- Panda38
- Příspěvky: 713
- Registrován: 21 lis 2012, 01:00
- Bydliště: Most, Praha, Lanžhot
- Kontaktovat uživatele:
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
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
- monterjirka
- Příspěvky: 2761
- Registrován: 14 čer 2003, 02:00
- Bydliště: Blížejov
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...Panda38 píše: Když je to na 8 bitů, to je pro jaký procesor, počítač, systém? CP/M ?
Jirka
- Panda38
- Příspěvky: 713
- Registrován: 21 lis 2012, 01:00
- Bydliště: Most, Praha, Lanžhot
- Kontaktovat uživatele:
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ě.
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ě.
- ZdenekHQ
- Administrátor
- Příspěvky: 25593
- Registrován: 21 črc 2006, 02:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
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í.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]