📄 programpunjac.h
字号:
// ProgramPunjac.h: interface for the CProgramPunjac class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PROGRAMPUNJAC_H__52F0F4AA_62F2_4A2D_9F3E_DBF6FD29C7D5__INCLUDED_)
#define AFX_PROGRAMPUNJAC_H__52F0F4AA_62F2_4A2D_9F3E_DBF6FD29C7D5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "../PL3000/PrgDef.h"
#include <string>
// Klasa koja definise interfejs objekata za punjenje sadrzaja programa.
// Program moze da se napuni iz HEX ili BIN fajla ili sa LPT porta.
// Za svaku od ovih mogucnosti definise se posebna klasa koja implementira
// ovaj interfejs.
class CProgramPunjac
{
public:
// Pomocna klasa
class CPunjacException
{
public:
CPunjacException(const std::string& opis);
std::string opisGreske;
};
public:
CProgramPunjac();
virtual ~CProgramPunjac();
// Poziv ove funkcije oznacava pocetak punjenja programa i
// definise opseg adresa koje se citaju.
// Punjac treba da odradi potrebne inicijalizacije i da bude
// spreman da vrati bajt progama iz zadatog opsega adresa.
// U slucaju neuspeha vraca 'false', a opis greske smesta u OUT parametar.
virtual bool Start(
PRG::tAdresa pocetnaAdresa,
PRG::tAdresa zavrsnaAdresa,
std::string& opis
) = 0;
virtual bool Start(
PRG::tAdresa pocetnaAdresa,
PRG::tAdresa zavrsnaAdresa
);
// Funkcija prosledjuje sledeci bajt programa (preko OUT parametra).
// Bajtovi su u opsegu adresa koji je zadat prilikom poziva 'Start' funkcije,
// ali redosled nije definisan.
// Ako uspe, vraca true i punjac je spreman da vrati sledeci bajt.
// Ako nema vise bajtova vraca false.
// U slucaju greske baca izuzetak.
virtual bool DajSledeciBajt(PRG::tBajt& bajt, PRG::tAdresa& adresa) = 0;
// Funkcija za signaliziranje da je zavrseno punjenje programa.
// Tada punjac moze da odradi 'ciscenje' (da zatvori otvorene fajlove i sl.).
// U slucaju neuspeha vraca 'false', a opis greske smesta u OUT parametar.
virtual bool Stop(std::string& opis) = 0;
virtual bool Stop(void);
protected:
//////////////////////////////////////////////////////////////////////
// Pomocne funkcije
//////////////////////////////////////////////////////////////////////
// Funkcija inicijalizuje opseg adresa koje treba napuniti.
// Treba da se pozove u funkciji Start u izvedenim klasama.
void PostaviOpsegAdresa(PRG::tAdresa pocetnaAdresa, PRG::tAdresa zavrsnaAdresa);
// Vraca true ako je skup adresa prazan
bool PrazanOpsegAdresa(void);
// Funkcije za citanje granica opsega
PRG::tAdresa PocetnaAdresaOpsega(void);
PRG::tAdresa ZavrsnaAdresaOpsega(void);
// Vraca true ako je data adresa u opsegu definisanom prilikom poziva funkcije 'start'
bool AdresaUZadatomOpsegu(PRG::tAdresa adresa);
private:
bool prazanOpsegAdresa_m;
PRG::tAdresa pocetnaAdresa_m;
PRG::tAdresa zavrsnaAdresa_m;
};
#endif // !defined(AFX_PROGRAMPUNJAC_H__52F0F4AA_62F2_4A2D_9F3E_DBF6FD29C7D5__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -