Xpacket/XPDEFS.PAS

2505 lines
101 KiB
Plaintext
Executable File
Raw Blame History

{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ X - P a c k e t ³
³ ³
³ ³
³ UNIT: X P D E F S . P A S ³
³ ³
³ Globale Variablen-, Typ- und Konstantendeklarationen. ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}
{XPIO Check_mld, XPAUS function comp, xplib1 _F6}
{Comp_Key-vari gegen neue COMPC-Varianten tauschen!!}
{User_Typ2 = Userrecord - STOP schon vorgesehen :-)}
UNIT XPDEFS;
{$F+}
{-$DEFINE Sound}
Interface
Uses Dos,
Crt;
{1.80B1 - 1 f<>r BETA 1}
Const Version = 'XPacket 1.81b8';
LastEdit = '29.12.2001';
NodeK = 'N';
{ SoundKarte=true;}
{$IFDEF Sound}
SB8 = 8; SB16 = 16;
{Constants used for programming of the DMA-controller}
DmaChannel : Array [0..7, 1..3] of Byte =
( ($87, $0, $1), ($83, $2, $3), ($81, $4, $5), ($82, $6, $7),
($8F, $C0, $C2), ($8B, $C4, $C6), ($89, $C8, $CA), ($8A, $CC, $CE));
DmaPort : Array [0..7, 1..3] of Byte =
( ($A, $B, $C), ($A, $B, $C), ($A, $B, $C), ($A, $B, $C),
($D4, $D6, $D8), ($D4, $D6, $D8), ($D4, $D6, $D8), ($D4, $D6, $D8));
{Chunk-identification values}
rId = $46464952; {RIFF}
wId = $45564157; {WAVE}
fId = $20746D66; {fmt }
dId = $61746164; {data}
FileNotFound = $01;
InvalidWAVE = $02;
NoCard = $03;
NoStereoCard = $04;
No16BitCard = $05;
NoMemory = $06;
{$ENDIF}
{X-Protokoll-Sequenzen}
XPROT =#0#255;
DATA =#255;
COMD =#0;
TRASK = 127;
TROK = 128;
REP = 129;
SRX = 138;
CRX = 139;
XEOF = 140;
XbinMaxFrame = 255;
{************************}
maxpmak = 65; {stopkomp}
Scr = 1;
Vor = 2;
NU = 0;
CM = 1;
T = 1;
{ MindestHeap = 95000; }
MindestHeap = 105000; {//db1ras}
NeubildRam = 4000;
maxVorZeilen = 200;
maxNotChBuf = 65500;
maxNotLines = 10000;
maxMbxLines = 200;
maxMsgChr = 50000;
maxMsgRet = 1000;
maxInfoOut = 50;
maxHistory = 10;
maxTable = 100;
maxDir = 1000;
maxDirRem = 500;
maxLnk = 100;
maxKanal = 60;
maxTNC = 8;
maxComBuf = 300;
maxArrayTNC = maxTNC + 1;
maxMhRec = 200;
maxAnwesend = 70;
maxUTag = 100;
maxPrompt = 42;
maxVz = maxVorZeilen - (maxVorZeilen div 5) + 1;
maxSCon = 22;
maxUser = 4;
maxFileParm = 5;
MaxAutoSys = 6;
maxMorAnz = 46;
maxESC = 80;
maxCmds = 36;
maxREM = 83;
maxAttr = 63;
maxQRG = 50;
MaxMailPollCmd = 5;
maxAutoJmpPtr = 10;
maxCompPac = 253;
maxHelpZln = 200;
maxHlpAnw = 20;
maxOHelp = 95; {direkteinstiegs-rubriken onlinehilfe}
maxBlBox = 8;
maxParm = 11;
maxMld = 43;
maxHlpNr = 1000;
minFreeVdisk = 500000;
{$IFNDEF no_Bake} {//db1ras}
MinBake = 1;
DefBake = 20;
{$ENDIF}
SZ1 = 23;
SZ2 = 24;
SZL = 14;
TL = 77;
ColMonBeg = 31;
HlpRemBeg = 31;
Wait_TimeOut = 3;
TNC_TimeOut = 120; { ca. 6-7 Sek }
Lpt_TimeOut = 364;
SegHGC = $b000; {B000}
SegVGA = $b800; {B800}
TEI = $2B;
FF = 255;
N999 = 9999;
FA00 = 64000;
FFFF = 65535;
EINT = 1000;
T500 = 1500;
ZWEI = 2000;
ESC = #27;
M1 = #13;
M2 = #13 + #13;
M3 = #13 + #13 + #13;
B1 = ' ';
B2 = B1 + B1;
B3 = B1 + B1 + B1;
BS = '\';
DP = ':';
LZ = '#';
LRK = '(';
RRK = ')';
LSK = '<';
RSK = '>';
Pipe = '|';
Pkt = '.';
GPkt = 'ù';
Km = ',';
DpS = '//';
Star = '*** ';
Pfeil = '> ';
Plus = '+++ ';
X_ch = 'X';
S_ch = '*';
A_ch = 'þ';
DatenKenner = '-';
vM = 2;
hM = 41;
CursorStr = #24 + #25 + #26 + #27;
Up = 'Up';
Dn = 'Dn';
PcxStr = '<<TFPCR/X>>';
BdStr = 'hex) Baud=';
SynchErrStr = 'Synch. faild COM-';
OverRunStr = '<Overrun>';
CTRL = 'CTRL';
BBUS = '(BBUS)';
PWD = DP + 'PWD';
NoCall = 'XP0CL';
BoxRec = 91;
HlpRec = 80;
maxNoneName = 14;
Files = 'Files';
DIRs = 'DIRs';
OneByte = 'Byte';
PseudoQRG = '###.###';
UpDir = ' (UPDIR)';
SubDir = '(SUBDIR)';
Txt = 'TEXT';
ON = 'ON';
OFF = 'OFF';
OK = 'OK';
EIN = 'EIN';
AUS = 'AUS';
SYN = 'SYNCH';
RX = 'RX';
TX = 'TX';
EchoCh = '¯';
LSym = 'L>';
BSXP = 'X-Packet';
GL = '=';
TncI = 'TNC';
TCtx = DP + 'CTX' + GL;
TInf = DP + 'INF' + GL;
TAkt = DP + 'AKT' + GL;
TQtx = DP + 'QTX' + GL;
TFix = DP + 'FIX:';
TGrt = DP + 'GRT';
Rrtn = 'RTN';
Rrch = 'RCH';
Rrgl = 'RGL';
Rpar = DP + 'PAR';
Rcon = 'CON';
Rsetl = DP + 'SETL';
Ridle = DP + 'IDLE';
Rmfreq = DP + 'MFREQ';
Rega = DP + 'EGA';
Rplen = DP + 'PLEN';
Rsynch = DP + 'SYNCH';
Rlstd = DP + 'LSTD';
Rlmin = DP + 'LMIN';
Rcnr = DP + 'CNR';
Rvsp = DP + 'VSP';
Rinfo = DP + 'INFO';
MrkCALL = DP + 'CALL=';
MrkDATE = DP + 'DATE=';
MrkBEG = DP + 'BEG=';
MrkTEXT = DP + 'TEXT=';
MrkART = DP + 'ART=';
RFR = DP + 'RFR';
RNOT = DP + 'RNOT';
CNOT = DP + 'CNOT';
GNOT = DP + 'GNOT';
CCAN = DP + 'CCAN';
INI = DP + 'INI';
DEI = DP + 'DEI';
OHelpStr = '*OHELP';
ReadStr = 'R';
EraseStr = 'E';
TrStr = 'TR';
KbStr = 'K';
BinStr = 'B';
DirStr = 'D';
PlusStr = '7';
BsStr = 'BS';
KillStr = 'K';
UnprStr = 'U';
RBinStr = 'RB';
CrcStr = 'CRC';
SetStr = 'SETL';
RepStr = 'REP';
RunStr = 'RUN';
ElStr = 'EL';
ReadCh = 'þ';
EraseCh = 'ì';
SetCh = '@';
RepCh = '%';
KbCh = '$';
EmsStr = 'EMS:' + B1;
XmsStr = 'XMS:' + B1;
RamStr = 'RMD:' + B1;
Ext = '.XP';
MsgExt = '.MSG';
SpkExt = '.SPK';
KeyExt = '.KEY';
DocExt = '.DOC';
DosBild = 'DOSBILD.$$$';
TestName = 'TESTDIR.$$$';
NotName = '###$$###';
DExt : Array [1..3] of String[4] = ('.COM','.EXE','.BAT');
InfoZe : String[2] = 'þù';
CvCh : String[2] = '* ';
SaveName : String[12] = 'SAVE.';
TxtName : String[12] = Txt + Pkt ;
LngExt : String[3] = 'XP';
TxtExt : String[3] = 'TXT';
CfgDatei : String[12] = 'CONFIG';
CooDatei : String[12] = 'COOKIE' + Ext;
{ TncIniDatei : String[12] = 'TNCINI';}
TmpDatei : String[12] = '$$TMP$$.$$$';
ScrollDatei : String[12] = 'SCROLL' + Ext;
BuffDatei : String[12] = 'BUFFERS' + Ext;
TxtDatei : String[12] = Txt + Ext;
{//db1ras}
MerkDatei : String[12] = 'MEMO';
MerkV1 : Byte = 1;
MerkV2 : Byte = 81;
{$IFDEF ReadOldMemo} {//db1ras}
OldMerkV1 : Byte = 1;
OldMerkV2 : Byte = 74;
{$ENDIF}
NamesDatei : String[12] = 'NAMES' + Ext;
UserDatei : String[12] = 'USER' + Ext;
UserIDX : String[12] = 'USER' +'.XPI';
UserBackup : String[12] = 'USER' + '.XPB';
PwDatei : String[12] = 'PASSWORD'+ Ext;
LinkDatei : String[12] = 'LINKS' + Ext;
EmbDatei : String[12] = 'LOGO' + Ext;
RemDatei : String[12] = 'REMOTES' + Ext;
CallDatei : String[12] = 'CALLS' + Ext;
EscDatei : String[12] = 'CMD' + Ext;
TncDatei : String[12] = 'TNC' + Ext;
ConDatei : String[12] = 'CONNECT' + Ext;
{ BootDatei : String[12] = 'FIREUP' + Ext; }
{ DebDatei : String[12] = 'DEBUG' + Ext;}
SwapDatei : String[12] = 'SWAP' + Ext;
{ QrtDatei : String[12] = 'QRT' + Ext; }
QrgDatei : String[12] = 'QRG' + Ext;
THlpDatei : String[12] = 'HELP' + Ext;
MailsDatei : String[12] = 'MAILFRMS'+ Ext;
BCastHAM : string[12] = 'BROADHAM'+ ext;
BCastCB : string[12] = 'BROADCB' + ext;
BCastBAK : String[12] = 'BROADCST'+'XPK';
AttrDatei : String[12] = 'COLOR';
MsgsDatei : String[12] = 'MSGS'+EXT;
HelpDatei : String[12] = 'ONLHELP'+EXT;
LogDatei : String[12] = 'LOG.';
BufDatei : String[12] = 'CHANBUF.';
MakDatei : String[12] = 'MAKRO';
AutoDatei : String[12] = 'AUTO.';
VorWriteDatei : String[12] = 'VORWRITE.';
DBoxDatei : String[12] = 'CHKLST.';
Tmp1Datei : String[12] = 'TEMP1.TMP';
Tmp2Datei : String[12] = 'TEMP2.TMP';
XBINProtokoll : String[12] = 'XBIN.';
AutoExecFile : String[12] = 'AUTOEXEC'+ KeyExt;
INT_IO_Mask : Byte = $02;
TncBusyStr = 'TNC BUSY - LINE IGNORED';
TncInvStr = 'INVALID';
TncConStr = Star + 'CONNECTED TO';
PfStr = ' ==> ';
fm = 'fm ';
zu = ' to ';
IFrame = ' ctl I';
UFrame = ' ctl UI';
MailFrame1 = ' to ';
MailFrame2 = ' ctl UI'; {' to MAIL ctl UI';}
MailFrame = MailFrame1 + 'MAIL' + MailFrame2;
E7m = #27 + '[7m';
E0m = #27 + '[0m';
COM_C = ' /C ';
Joker = '*.*';
Bytes = 'Bytes';
ConStr = Star + 'Connected to ';
ReconStr = Star + 'Reconnected to ';
FailStr = Star + 'Failure with ';
BusyStr = Star + 'Busy from ';
Default_Base : Array [1..4] of Word = ($3F8,$2F8,$3E8,$2E8);
Default_IRQ : Array [1..4] of Byte = (4,3,4,3);
MatchTFPC : String[4] = 'N5NX';
MatchDRSI1 : String[3] = (#83+#30+#187);
MatchDRSI2 : String[6] = (#142+#219+#132+#228+#116+#32);
Prompts : Array [1..maxPrompt] of Byte =
(2,3,5,6,7,8,18,19,20,21,22,23,24,25,
27,28,29,30,31,32,33,34,35,36,38,39,40,
42,43,44,45,46,47,48,51,52,56,57,58,59,
60,255);
NoneNames : Array[1..maxNoneName] of String[6] =
('CLOCK','CLOCK$','AUX', 'COM1',
'COM2', 'COM3', 'COM4','CON',
'LPT1', 'LPT2', 'LPT3','LPT4',
'NUL', 'PRN');
TNC_Art : Array[0..4] of String[4] =
('----','TNC2','TNC3','TFPC','FALC');
LSM : Array[1..9] of String[15] =
('BUSY fm',
'CONNECTED to',
'LINK RESET fm',
'LINK RESET to',
'DISCONNECTED fm',
'LINK FAILURE',
'CONNECT REQUEST',
'FRAME REJECT fm',
'FRAME REJECT to');
codierung : array[1..253] of byte =
(248, 193, 211, 140, 159, 162, 99, 108, 144, 242, 192, 167, 224, 29, 130,
170, 6, 197, 225, 238, 190, 155, 45, 131, 14, 193, 207, 225, 125, 124,
61, 158, 176, 159, 214, 168, 2, 196, 175, 77, 136, 109, 206, 33, 15,
116, 55, 122, 132, 140, 242, 60, 35, 166, 221, 242, 76, 121, 218, 175,
206, 134, 200, 251, 38, 99, 110, 238, 184, 14, 245, 54, 116, 152, 252,
126, 15, 145, 25, 206, 197, 190, 95, 132, 164, 51, 123, 18, 103, 220,
30, 197, 152, 0, 252, 50, 151, 53, 181, 218, 129, 249, 28, 118, 63,
231, 234, 190, 51, 241, 251, 173, 60, 125, 38, 172, 20, 26, 166, 244,
60, 28, 215, 79, 252, 124, 48, 200, 46, 172, 19, 56, 184, 69, 3,
113, 54, 196, 252, 180, 241, 198, 59, 175, 61, 91, 137, 235, 219, 104,
13, 203, 10, 84, 19, 68, 72, 75, 57, 229, 239, 217, 41, 36, 96,
209, 151, 156, 12, 136, 90, 6, 231, 245, 173, 0, 5, 97, 21, 202,
21, 99, 87, 214, 116, 157, 148, 116, 225, 105, 119, 64, 204, 64, 227,
22, 31, 191, 202, 132, 212, 129, 235, 41, 211, 27, 183, 92, 176, 13,
147, 42, 114, 128, 56, 107, 132, 1, 234, 132, 96, 139, 204, 31, 148,
209, 115, 210, 60, 95, 142, 198, 15, 243, 101, 107, 151, 126, 60, 27,
73, 74, 24, 56, 82, 107, 100, 240, 165, 121, 105, 234, 4);
Meldung : Array[1..maxMld] of String[18] =
('FAILURE',
'BUSY FROM',
'INVALID',
'DX DE ',
'> RECONNECTED TO',
'*** RECONNECTED TO',
'*** CONNECTED TO', {7}
'#BIN#',
'#OK#',
'#ABORT#',
' GO_7+. ',
' STOP_7+. ',
'//',
' GO_TEXT. ',
' STOP_TEXT.',
#26,
'***END',
'CONNECTED TO', {18}
'#COMP:ON#',
'#COMP:OFF#',
'#COMP:1#',
'#COMP:0#',
'#COMP:RES#',
'/',
'#RTF#',
'#COMPC:ON#',
'#COMPC:1#', {Nr.27}
'#XPPW:1#',
'#XPPW:0#',
'RETURNED TO NODE', {30}
'#LOC#',
'#NAM#',
'#QTH#', {33}
'#XBIN#',
'} WELCOME BACK', {35}
'#REQUESTNAME:',
'//COMP ON',
'//COMP OFF',
'//COMP 1',
'//COMP 0', {40 -- 7+:11 u 12}
' GO_INFO. ',
' STOP_INFO.',
': CAN'+#39+'T ROUTE'); {43}
TextCmd : Array[1..MaxCmds] of String[6] =
('#TIME#', '#DATE#', '#NAME#', '#TCHN#', '#CALL#',
'#PRPT#', '#TTYP#', '#MCAL#', '#TNCI#', '#PVER#',
'#LEDI#', '#STIM#', '#SDAT#', '#SDAY#', '#UCAL#',
'#UASK#', '#BELL#', '#RETN#', '#TNCN#', '#NODE#',
'#NSID#', '#LDAY#', '#CTLZ#', '#SQSO#', '#LQSO#',
'#CONN#', '#MCSI#', '#TQRG#', '#SP', '#TEXT#',
'#SLSH#', '#PORT#', '#AQTH#', '#ALOC#', '#ACTI#',
'#RING#');
MailPollC : array[1..MaxMailPollCmd] of string[3] =
('#?','#E','#C','#P','#?P');
NodeCmds : Set of Byte =
[1,2,5,6,7,9,10,23,26,33,34,35,36,37,42,47,
48,50,51,52,59,60,62,99];
LinkStatus : Array[0..15] of String[12] =
{'DIS', 'SET', 'FMR',}
('Disconnected','LinkSetup ','FrameReject ',
{'DRQ', 'INF', 'REJ',}
'DiscRequest ','Info-Transf ','Reject ',
{'WAK', 'DBS', 'RBS',}
'WaitAck ','DeviceBusy ','RemoteBusy ',
{'BBS', 'WDB', 'WRB',}
'BothBusy ','WAck/DevBus ','WAck/RemBus ',
{'WBB', 'RDB', 'RRB',}
'WAck/BothBs ','RemDevBusy ','Rej/RemBus ',
{RBB}
'Rej/BothBus');
SNam : Array [0..maxSCon] of String[5] =
('',
{ 1} 'DBOX','BBOX','FBB', 'WBOX','EBOX',
{ 6} 'BDXL','RMNC','TNN' ,'NETR','BN',
{11} 'DXC' ,'TCP' ,'FALC','TBOX','BPQ',
{16} 'FLEX', 'XP', 'XN', 'XPN', 'DIGIC',
{21} 'PROFI', 'CLUST');
AutoSysKenner : Array [0..MaxAutoSys] of String[15] =
('',
'[FBB-', 'PC/FlexNet V', '[XPACKET-',
'[THEBOX-', '[XNODE-', '[PROFIPACKET-');
AutoSysName : Array [0..MaxAutoSys] of String[11] =
{SetzeFlags in XPLib} ('',
{aktualisieren!!} ':FBB',':PCFlexNet',':XPacket',
':DieBox', ':XNode',':ProfiP.');
UNam : Array [1..maxUser] of String[4] =
('TOP','SP','XP', 'XN');
ParmCmd : Array [1..maxParm] of String[5] =
('NOEMS','NOXMS','NORAM','NEOVR','HS',
{c f t net}
'F', 'CRC', 'VER', 'HLP', 'PWD', 'NXOVR');
FileParm : Array [1..maxFileParm] of String[3] =
('SAV','VOR','QSO','EDI','CRC');
Menge : Set of Char = [#32..#47,#92];
UmMenge : Set of Char = [#32,#33,#42..#47];
UmlMenge : Set of Byte = [0..3];
{0..5,15..25,27..31,}
BinMenge : Set of Byte = [0,155..224,226..254];
SysMenge : Set of Byte = [1,2,3,4,5,14];
YesMenge : Set of Char = [#74,#89,#79];
RemMenge : Set of Byte = [1..98];
ConvMenge : Set of Byte = [1..99];
Comp_Key_Tab : Array [1..255] of Byte =
(52, 49, 31, 33, 59, 95, 57, 67, 76, 62,
75, 41, 34, 57, 23, 24, 63, 14, 55, 26,
42, 42, 57, 44, 36, 67, 76, 53, 72, 34,
56, 73, 93, 52, 24, 74, 78, 13, 35, 45,
38, 28, 47, 84, 12, 35, 37, 54, 74, 53,
51, 81, 31, 23, 71, 84, 23, 31, 32, 54,
44, 32, 28, 65, 16, 72, 69, 31, 12, 75,
22, 63, 83, 23, 64, 45, 99, 64, 84, 32,
55, 34, 41, 76, 41, 33, 55, 48, 49, 44,
17, 25, 59, 37, 37, 84, 74, 96, 13, 38,
71, 47, 45, 47, 66, 27, 30, 51, 28, 56,
98, 62, 97, 78, 33, 42, 96, 44, 54, 17,
42, 73, 29, 63, 41, 27, 43, 24, 43, 68,
92, 54, 41, 32, 69, 32, 46, 36, 66, 45,
39, 17, 28, 85, 88, 76, 93, 06, 72, 76,
21, 52, 91, 82, 82, 56, 94, 42, 86, 95,
55, 78, 58, 27, 94, 86, 52, 23, 23, 55,
39, 42, 79, 98, 45, 43, 13, 54, 33, 45,
22, 48, 53, 85, 64, 23, 12, 35, 67, 14,
26, 47, 62, 27, 11, 35, 71, 84, 74, 47,
71, 34, 39, 78, 37, 25, 44, 46, 83, 23,
48, 43, 58, 58, 53, 25, 43, 51, 53, 17,
84, 58, 86, 88, 53, 42, 67, 89, 95, 11,
75, 87, 92, 63, 95, 54, 33, 46, 77, 28,
18, 54, 43, 41, 47, 67, 43, 14, 55, 78,
91, 66, 57, 88, 79);
TYPE
WType = record
SampleRate : Word;
Resolution : Byte;
Stereo : Boolean;
Length : LongInt;
end;
HeaderChunk = record
RIFF : LongInt;
NextChunkSize : LongInt;
end;
{$IFDEF Sound}
WaveChunk = record
WAVE : LongInt;
end;
fmtHeader = record
fmt : LongInt;
fmtDataLength : LongInt;
end;
fmtChunk = record
WaveType : Word;
Channels : Word;
SampleRate : LongInt;
BytesPerSecond : LongInt;
BlockAlignment : Word;
BitResolution : Word;
end;
DataChunk = record
data : LongInt;
SoundLength : LongInt;
end;
{$ENDIF}
ThirtyTwoK = array [0..32767] of Byte;
Sondertaste = (_CtrlF1, _CtrlF2, _CtrlF3, _CtrlF4, _CtrlF5,
_CtrlF6, _CtrlF7, _CtrlF8, _CtrlF9, _CtrlF10,
_CtrlF11, _CtrlF12,
_Alt1, _Alt2, _Alt3, _Alt4, _Alt5,
_Alt6, _Alt7, _Alt8, _Alt9, _Alt0,
_AltF1, _AltF2, _AltF3, _AltF4, _AltF5,
_AltF6, _AltF7, _AltF8, _AltF9, _AltF10,
_AltF11, _AltF12,
_F1, _F2, _F3, _F4, _F5,
_F6, _F7, _F8, _F9, _F10,
_F11, _F12,
_ShF1, _ShF2, _ShF3, _ShF4, _ShF5,
_ShF6, _ShF7, _ShF8, _ShF9, _ShF10,
_ShF11, _ShF12,
_AltA, _AltB, _AltC, _AltD, _AltE,
_AltF, _AltG, _AltH, _AltI, _AltJ,
_AltK, _AltL, _AltM, _AltN, _AltO,
_AltP, _AltQ, _AltR, _AltS, _AltT,
_AltU, _AltV, _AltW, _AltX, _AltY,
_AltZ,
_Home, _End, _PgUp, _PgDn, _Ins,
_Del, _Up, _Dn, _Right, _Left,
_CtrlLeft, _CtrlRight, _CtrlEnd, _CtrlPgDn,
_CtrlHome, _CtrlPgUp, _CtrlPrtSc, _Andere,
_Ret, _Back, _Tab, _Esc, _Nix, _ShTab, _ShHome,
_ShEnd, _ShUp, _ShDn, _ShPgUp, _ShPgDn, _ShIns,
_ShDel, _ShLeft, _ShRight, _Plus, _Minus, _Star,
_Slash, _Fuenf,_Key2 );
TypKey = Record
Ta : String[6];
Ze : Char;
End;
Table_typ = Record
Tab : Word;
Len : Byte;
End;
MorZeichen = Record
Ze : char;
Co : string[6];
End;
Const UDBExit : Set of SonderTaste = [_esc, _ret, _up, _dn, _PgDn, _PgUp,_Tab,_ShTab];
Key : Array [_CtrlF1.._Key2] of TypKey =
((Ta : 'CF1'; Ze : #94), (Ta : 'CF2'; Ze : #95),
(Ta : 'CF3'; Ze : #96), (Ta : 'CF4'; Ze : #97),
(Ta : 'CF5'; Ze : #98), (Ta : 'CF6'; Ze : #99),
(Ta : 'CF7'; Ze : #100), (Ta : 'CF8'; Ze : #101),
(Ta : 'CF9'; Ze : #102), (Ta : 'CF10'; Ze : #103),
(Ta : 'CF11'; Ze : #137), (Ta : 'CF12'; Ze : #138),
(Ta : 'ALT1'; Ze : #120), (Ta : 'ALT2'; Ze : #121),
(Ta : 'ALT3'; Ze : #122), (Ta : 'ALT4'; Ze : #123),
(Ta : 'ALT5'; Ze : #124), (Ta : 'ALT6'; Ze : #125),
(Ta : 'ALT7'; Ze : #126), (Ta : 'ALT8'; Ze : #127),
(Ta : 'ALT9'; Ze : #128), (Ta : 'ALT0'; Ze : #129),
(Ta : 'ALTF1'; Ze : #104), (Ta : 'ALTF2'; Ze : #105),
(Ta : 'ALTF3'; Ze : #106), (Ta : 'ALTF4'; Ze : #107),
(Ta : 'ALTF5'; Ze : #108), (Ta : 'ALTF6'; Ze : #109),
(Ta : 'ALTF7'; Ze : #110), (Ta : 'ALTF8'; Ze : #111),
(Ta : 'ALTF9'; Ze : #112), (Ta : 'ALTF10'; Ze : #113),
(Ta : 'ALTF11'; Ze : #139), (Ta : 'ALTF12'; Ze : #140),
(Ta : 'F1'; Ze : #59), (Ta : 'F2'; Ze : #60),
(Ta : 'F3'; Ze : #61), (Ta : 'F4'; Ze : #62),
(Ta : 'F5'; Ze : #63), (Ta : 'F6'; Ze : #64),
(Ta : 'F7'; Ze : #65), (Ta : 'F8'; Ze : #66),
(Ta : 'F9'; Ze : #67), (Ta : 'F10'; Ze : #68),
(Ta : 'F11'; Ze : #133), (Ta : 'F12'; Ze : #134),
(Ta : 'SHF1'; Ze : #84), (Ta : 'SHF2'; Ze : #85),
(Ta : 'SHF3'; Ze : #86), (Ta : 'SHF4'; Ze : #87),
(Ta : 'SHF5'; Ze : #88), (Ta : 'SHF6'; Ze : #89),
(Ta : 'SHF7'; Ze : #90), (Ta : 'SHF8'; Ze : #91),
(Ta : 'SHF9'; Ze : #92), (Ta : 'SHF10'; Ze : #93),
(Ta : 'SHF11'; Ze : #135), (Ta : 'SHF12'; Ze : #136),
(Ta : 'ALTA'; Ze : #30), (Ta : 'ALTB'; Ze : #48),
(Ta : 'ALTC'; Ze : #46), (Ta : 'ALTD'; Ze : #32),
(Ta : 'ALTE'; Ze : #18), (Ta : 'ALTF'; Ze : #33),
(Ta : 'ALTG'; Ze : #34), (Ta : 'ALTH'; Ze : #35),
(Ta : 'ALTI'; Ze : #23), (Ta : 'ALTJ'; Ze : #36),
(Ta : 'ALTK'; Ze : #37), (Ta : 'ALTL'; Ze : #38),
(Ta : 'ALTM'; Ze : #50), (Ta : 'ALTN'; Ze : #49),
(Ta : 'ALTO'; Ze : #24), (Ta : 'ALTP'; Ze : #25),
(Ta : 'ALTQ'; Ze : #16), (Ta : 'ALTR'; Ze : #19),
(Ta : 'ALTS'; Ze : #31), (Ta : 'ALTT'; Ze : #20),
(Ta : 'ALTU'; Ze : #22), (Ta : 'ALTV'; Ze : #47),
(Ta : 'ALTW'; Ze : #17), (Ta : 'ALTX'; Ze : #45),
(Ta : 'ALTY'; Ze : #21), (Ta : 'ALTZ'; Ze : #44),
(Ta : 'HOME'; Ze : #71), (Ta : 'END'; Ze : #79),
(Ta : 'PGUP'; Ze : #73), (Ta : 'PGDN'; Ze : #81),
(Ta : 'INS'; Ze : #82), (Ta : 'DEL'; Ze : #83),
(Ta : 'UP'; Ze : #72), (Ta : 'DN'; Ze : #80),
(Ta : 'RIGHT'; Ze : #77), (Ta : 'LEFT'; Ze : #75),
(Ta : 'CLEFT'; Ze : #115), (Ta : 'CRIGHT'; Ze : #116),
(Ta : 'CEND'; Ze : #117), (Ta : 'CPGDN'; Ze : #118),
(Ta : 'CHOME'; Ze : #119), (Ta : 'CPGUP'; Ze : #132),
(Ta : 'CPRTSC'; Ze : #114), (Ta : 'ANDERE'; Ze : #0),
(Ta : 'RET'; Ze : #13), (Ta : 'BACK'; Ze : #8),
(Ta : 'TAB'; Ze : #9), (Ta : 'ESC'; Ze : #27),
(Ta : 'NIX'; Ze : #0), (Ta : 'SHTAB'; Ze : #15),
(Ta : 'SHHOME'; Ze : #71), (Ta : 'SHEND'; Ze : #79),
(Ta : 'SHUP'; Ze : #72), (Ta : 'SHDN'; Ze : #80),
(Ta : 'SHPGUP'; Ze : #73), (Ta : 'SHPGDN'; Ze : #81),
(Ta : 'SHINS'; Ze : #82), (Ta : 'SHDEL'; Ze : #83),
(Ta : 'SHLEFT'; Ze : #75), (Ta : 'SHRIGH'; Ze : #77),
(Ta : 'PLUS'; Ze : #43), (Ta : 'MINUS'; Ze : #45),
(Ta : 'STAR'; Ze : #42), (Ta : 'SLASH'; Ze : #47),
(Ta : 'FUENF'; Ze : #76), (Ta : 'KEY2'; Ze : #0));
{STOP-Codier-Tabellen:}
CodeTab : Array [0..255] of Byte =
($02, $55, $08, $5B, $37, $89, $32, $B3,
$F3, $46, $71, $1B, $B2, $90, $0A, $2A,
$D0, $AF, $C3, $D3, $F5, $38, $6D, $D6,
$EC, $CF, $73, $9A, $A9, $99, $8C, $B8,
$1D, $67, $1F, $AB, $79, $7D, $58, $DE,
$43, $2E, $6C, $B1, $29, $A5, $9F, $00,
$C9, $44, $76, $62, $60, $94, $47, $2B,
$CE, $4B, $68, $3D, $69, $0D, $7E, $FB,
$11, $12, $41, $F9, $5A, $36, $3F, $C2,
$E3, $E7, $BC, $88, $09, $21, $75, $7B,
$98, $40, $A6, $E2, $E0, $8D, $82, $9E,
$C5, $3C, $22, $9D, $07, $F2, $A1, $B7,
$BB, $92, $F4, $FD, $49, $A3, $2C, $8F,
$C6, $63, $20, $25, $56, $EB, $A7, $B5,
$FF, $6B, $03, $F1, $8B, $A0, $95, $CA,
$6E, $D5, $FC, $F0, $A4, $39, $4F, $E5,
$9C, $14, $D8, $BA, $AC, $AE, $C1, $FA,
$3E, $E9, $52, $26, $19, $15, $87, $E4,
$84, $D2, $D9, $BD, $10, $5D, $18, $61,
$81, $05, $8A, $34, $6A, $74, $1E, $0F,
$13, $2D, $06, $BE, $27, $DF, $3A, $DB,
$B9, $C8, $9B, $4C, $F8, $96, $35, $30,
$EE, $17, $59, $42, $78, $DC, $E8, $F6,
$72, $AA, $8E, $2F, $0E, $54, $53, $66,
$97, $4A, $1A, $CB, $65, $A2, $91, $85,
$48, $4E, $4D, $CD, $64, $ED, $D7, $C0,
$83, $86, $5F, $7F, $E1, $B4, $7C, $DA,
$D1, $EA, $77, $BF, $6F, $16, $23, $7A,
$57, $45, $31, $FE, $EF, $1C, $B6, $AD,
$24, $D4, $A8, $80, $C4, $01, $C7, $B0,
$DD, $CC, $51, $33, $04, $F7, $5C, $0C,
$E6, $28, $93, $70, $3B, $0B, $5E, $50);
DeCodeTab : Array [0..255] of Byte =
($2F, $ED, $00, $72, $F4, $99, $A2, $5C,
$02, $4C, $0E, $FD, $F7, $3D, $BC, $9F,
$94, $40, $41, $A0, $81, $8D, $DD, $B1,
$96, $8C, $C2, $0B, $E5, $20, $9E, $22,
$6A, $4D, $5A, $DE, $E8, $6B, $8B, $A4,
$F9, $2C, $0F, $37, $66, $A1, $29, $BB,
$AF, $E2, $06, $F3, $9B, $AE, $45, $04,
$15, $7D, $A6, $FC, $59, $3B, $88, $46,
$51, $42, $B3, $28, $31, $E1, $09, $36,
$C8, $64, $C1, $39, $AB, $CA, $C9, $7E,
$FF, $F2, $8A, $BE, $BD, $01, $6C, $E0,
$26, $B2, $44, $03, $F6, $95, $FE, $D2,
$34, $97, $33, $69, $CC, $C4, $BF, $21,
$3A, $3C, $9C, $71, $2A, $16, $78, $DC,
$FB, $0A, $B8, $1A, $9D, $4E, $32, $DA,
$B4, $24, $DF, $4F, $D6, $25, $3E, $D3,
$EB, $98, $56, $D0, $90, $C7, $D1, $8E,
$4B, $05, $9A, $74, $1E, $55, $BA, $67,
$0D, $C6, $61, $FA, $35, $76, $AD, $C0,
$50, $1D, $1B, $AA, $80, $5B, $57, $2E,
$75, $5E, $C5, $65, $7C, $2D, $52, $6E,
$EA, $1C, $B9, $23, $84, $E7, $85, $11,
$EF, $2B, $0C, $07, $D5, $6F, $E6, $5F,
$1F, $A8, $83, $60, $4A, $93, $A3, $DB,
$CF, $86, $47, $12, $EC, $58, $68, $EE,
$A9, $30, $77, $C3, $F1, $CB, $38, $19,
$10, $D8, $91, $13, $E9, $79, $17, $CE,
$82, $92, $D7, $A7, $B5, $F0, $27, $A5,
$54, $D4, $53, $48, $8F, $7F, $F8, $49,
$B6, $89, $D9, $6D, $18, $CD, $B0, $E4,
$7B, $73, $5D, $08, $62, $14, $B7, $F5,
$AC, $43, $87, $3F, $7A, $63, $E3, $70);
{Ende STOP-Codier-Tabellen}
HTable : Array [0..257] of Table_Typ =
{ STOP HTable : Array [0..257] of Table_Typ =}
((Tab : $AB2C; Len : 15), (Tab : $AA84; Len : 15), (Tab : $9FC4; Len : 15),
(Tab : $AB3C; Len : 15), (Tab : $AB1C; Len : 15), (Tab : $AAFC; Len : 15),
(Tab : $AAEC; Len : 15), (Tab : $AAD4; Len : 15), (Tab : $AAB4; Len : 15),
(Tab : $F340; Len : 10), (Tab : $AAA4; Len : 15), (Tab : $7D64; Len : 15),
(Tab : $AADC; Len : 15), (Tab : $F400; Len : 7), (Tab : $AA94; Len : 15),
(Tab : $9FF4; Len : 15), (Tab : $9FD4; Len : 15), (Tab : $7D74; Len : 15),
(Tab : $AB44; Len : 15), (Tab : $AB34; Len : 15), (Tab : $AB24; Len : 15),
(Tab : $AB14; Len : 15), (Tab : $AB04; Len : 15), (Tab : $AAF4; Len : 15),
(Tab : $AAE4; Len : 15), (Tab : $AB60; Len : 14), (Tab : $AB0C; Len : 15),
(Tab : $AACC; Len : 15), (Tab : $AABC; Len : 15), (Tab : $AAAC; Len : 15),
(Tab : $AA9C; Len : 15), (Tab : $AA8C; Len : 15), (Tab : $C000; Len : 3),
(Tab : $3A80; Len : 9), (Tab : $ABC0; Len : 10), (Tab : $0060; Len : 11),
(Tab : $7D40; Len : 12), (Tab : $AB5C; Len : 14), (Tab : $0000; Len : 12),
(Tab : $AB58; Len : 14), (Tab : $7C00; Len : 9), (Tab : $3C80; Len : 9),
(Tab : $7D00; Len : 11), (Tab : $0010; Len : 12), (Tab : $1200; Len : 7),
(Tab : $7A00; Len : 7), (Tab : $B800; Len : 6), (Tab : $3200; Len : 7),
(Tab : $2200; Len : 7), (Tab : $F600; Len : 8), (Tab : $3D00; Len : 8),
(Tab : $9E00; Len : 9), (Tab : $BD80; Len : 9), (Tab : $7C80; Len : 9),
(Tab : $0080; Len : 9), (Tab : $AA00; Len : 9), (Tab : $BD00; Len : 9),
(Tab : $9F00; Len : 9), (Tab : $0300; Len : 8), (Tab : $AB78; Len : 13),
(Tab : $AB68; Len : 13), (Tab : $3C00; Len : 9), (Tab : $3000; Len : 9),
(Tab : $0020; Len : 11), (Tab : $7D50; Len : 12), (Tab : $3800; Len : 7),
(Tab : $7800; Len : 7), (Tab : $9C00; Len : 7), (Tab : $FE00; Len : 7),
(Tab : $2400; Len : 6), (Tab : $BC00; Len : 8), (Tab : $0200; Len : 8),
(Tab : $0100; Len : 8), (Tab : $F100; Len : 8), (Tab : $0040; Len : 11),
(Tab : $3100; Len : 8), (Tab : $F200; Len : 8), (Tab : $3400; Len : 7),
(Tab : $1C00; Len : 7), (Tab : $1E00; Len : 7), (Tab : $BE00; Len : 7),
(Tab : $ABA0; Len : 11), (Tab : $3E00; Len : 7), (Tab : $1400; Len : 6),
(Tab : $3600; Len : 7), (Tab : $F380; Len : 9), (Tab : $F080; Len : 9),
(Tab : $2000; Len : 8), (Tab : $FC00; Len : 8), (Tab : $9F80; Len : 10),
(Tab : $9E80; Len : 9), (Tab : $AB90; Len : 12), (Tab : $3B80; Len : 9),
(Tab : $AB80; Len : 12), (Tab : $AB54; Len : 14), (Tab : $3A50; Len : 13),
(Tab : $AB50; Len : 14), (Tab : $A000; Len : 5), (Tab : $1800; Len : 6),
(Tab : $9800; Len : 6), (Tab : $7000; Len : 5), (Tab : $4000; Len : 3),
(Tab : $0400; Len : 6), (Tab : $AC00; Len : 6), (Tab : $F800; Len : 6),
(Tab : $6000; Len : 4), (Tab : $3A00; Len : 10), (Tab : $FD00; Len : 8),
(Tab : $2800; Len : 5), (Tab : $B000; Len : 6), (Tab : $8000; Len : 4),
(Tab : $B400; Len : 6), (Tab : $1000; Len : 7), (Tab : $7D20; Len : 12),
(Tab : $E000; Len : 5), (Tab : $9000; Len : 5), (Tab : $E800; Len : 5),
(Tab : $0800; Len : 5), (Tab : $F700; Len : 8), (Tab : $A800; Len : 7),
(Tab : $7D80; Len : 9), (Tab : $F300; Len : 10), (Tab : $7E00; Len : 7),
(Tab : $AB48; Len : 14), (Tab : $3A48; Len : 13), (Tab : $AB4C; Len : 14),
(Tab : $3A60; Len : 12), (Tab : $9FFC; Len : 15), (Tab : $9FEC; Len : 15),
(Tab : $2100; Len : 8), (Tab : $9FDC; Len : 15), (Tab : $9FCC; Len : 15),
(Tab : $F000; Len : 9), (Tab : $7D7C; Len : 15), (Tab : $7D6C; Len : 15),
(Tab : $3A40; Len : 14), (Tab : $AB40; Len : 15), (Tab : $AB38; Len : 15),
(Tab : $AB30; Len : 15), (Tab : $AB28; Len : 15), (Tab : $AB20; Len : 15),
(Tab : $AB18; Len : 15), (Tab : $AB70; Len : 13), (Tab : $AB10; Len : 15),
(Tab : $AB08; Len : 15), (Tab : $AB00; Len : 15), (Tab : $AAF8; Len : 15),
(Tab : $AAF0; Len : 15), (Tab : $3B00; Len : 9), (Tab : $AAE8; Len : 15),
(Tab : $AAE0; Len : 15), (Tab : $AAD8; Len : 15), (Tab : $AAD0; Len : 15),
(Tab : $AB64; Len : 14), (Tab : $7D30; Len : 12), (Tab : $AAC8; Len : 15),
(Tab : $AAC0; Len : 15), (Tab : $AAB8; Len : 15), (Tab : $AAB0; Len : 15),
(Tab : $AAA8; Len : 15), (Tab : $AAA0; Len : 15), (Tab : $AA98; Len : 15),
(Tab : $AA90; Len : 15), (Tab : $AA88; Len : 15), (Tab : $AA80; Len : 15),
(Tab : $9FF8; Len : 15), (Tab : $9FF0; Len : 15), (Tab : $9FE8; Len : 15),
(Tab : $9FE0; Len : 15), (Tab : $9FD8; Len : 15), (Tab : $9FD0; Len : 15),
(Tab : $9FC8; Len : 15), (Tab : $9FC0; Len : 15), (Tab : $7D78; Len : 15),
(Tab : $7D70; Len : 15), (Tab : $3A58; Len : 13), (Tab : $7D68; Len : 15),
(Tab : $7D60; Len : 15), (Tab : $AB46; Len : 15), (Tab : $AB42; Len : 15),
(Tab : $AB3E; Len : 15), (Tab : $AB3A; Len : 15), (Tab : $AB36; Len : 15),
(Tab : $AB32; Len : 15), (Tab : $AB2E; Len : 15), (Tab : $AB2A; Len : 15),
(Tab : $AB26; Len : 15), (Tab : $AB22; Len : 15), (Tab : $AB1E; Len : 15),
(Tab : $AB1A; Len : 15), (Tab : $AB16; Len : 15), (Tab : $AB12; Len : 15),
(Tab : $AB0E; Len : 15), (Tab : $AB0A; Len : 15), (Tab : $AB06; Len : 15),
(Tab : $AB02; Len : 15), (Tab : $AAFE; Len : 15), (Tab : $AAFA; Len : 15),
(Tab : $AAF6; Len : 15), (Tab : $AAF2; Len : 15), (Tab : $AAEE; Len : 15),
(Tab : $AAEA; Len : 15), (Tab : $AAE6; Len : 15), (Tab : $AAE2; Len : 15),
(Tab : $AADE; Len : 15), (Tab : $AADA; Len : 15), (Tab : $AAD6; Len : 15),
(Tab : $AAD2; Len : 15), (Tab : $AACE; Len : 15), (Tab : $AACA; Len : 15),
(Tab : $AAC6; Len : 15), (Tab : $AAC2; Len : 15), (Tab : $AABE; Len : 15),
(Tab : $AABA; Len : 15), (Tab : $AAB6; Len : 15), (Tab : $AAB2; Len : 15),
(Tab : $AAAE; Len : 15), (Tab : $AAAA; Len : 15), (Tab : $AAA6; Len : 15),
(Tab : $AAA2; Len : 15), (Tab : $AA9E; Len : 15), (Tab : $3A44; Len : 15),
(Tab : $AA9A; Len : 15), (Tab : $AA96; Len : 15), (Tab : $AA92; Len : 15),
(Tab : $3080; Len : 9), (Tab : $AA8E; Len : 15), (Tab : $AA8A; Len : 15),
(Tab : $AA86; Len : 15), (Tab : $AA82; Len : 15), (Tab : $9FFE; Len : 15),
(Tab : $9FFA; Len : 15), (Tab : $9FF6; Len : 15), (Tab : $9FF2; Len : 15),
(Tab : $9FEE; Len : 15), (Tab : $9FEA; Len : 15), (Tab : $9FE6; Len : 15),
(Tab : $9FE2; Len : 15), (Tab : $9FDE; Len : 15), (Tab : $9FDA; Len : 15),
(Tab : $9FD6; Len : 15), (Tab : $9FD2; Len : 15), (Tab : $9FCE; Len : 15),
(Tab : $9FCA; Len : 15), (Tab : $9FC6; Len : 15), (Tab : $9FC2; Len : 15),
(Tab : $7D7E; Len : 15), (Tab : $7D7A; Len : 15), (Tab : $7D76; Len : 15),
(Tab : $7D72; Len : 15), (Tab : $7D6E; Len : 15), (Tab : $7D6A; Len : 15),
(Tab : $7D66; Len : 15), (Tab : $7D62; Len : 15), (Tab : $3A46; Len : 15),
(Tab : $3A70; Len : 12), (Tab : $AAC4; Len : 15), (Tab : $9FE4; Len : 15));
Mchs : Array[1..maxMorAnz] of MorZeichen =
((Ze:'A'; Co:'.-' ), (Ze:'B'; Co:'-...' ), (Ze:'C'; Co:'-.-.' ),
(Ze:'D'; Co:'-..' ), (Ze:'E'; Co:Pkt ), (Ze:'F'; Co:'..-.' ),
(Ze:'G'; Co:'--.' ), (Ze:'H'; Co:'....' ), (Ze:'I'; Co:'..' ),
(Ze:'J'; Co:'.---' ), (Ze:'K'; Co:'-.-' ), (Ze:'L'; Co:'.-..' ),
(Ze:'M'; Co:'--' ), (Ze:'N'; Co:'-.' ), (Ze:'O'; Co:'---' ),
(Ze:'P'; Co:'.--.' ), (Ze:'Q'; Co:'--.-' ), (Ze:'R'; Co:'.-.' ),
(Ze:'S'; Co:'...' ), (Ze:'T'; Co:'-' ), (Ze:'U'; Co:'..-' ),
(Ze:'V'; Co:'...-' ), (Ze:'W'; Co:'.--' ), (Ze:'X'; Co:'-..-' ),
(Ze:'Y'; Co:'-.--' ), (Ze:'Z'; Co:'--..' ),
(Ze:'1'; Co:'.----' ), (Ze:'2'; Co:'..---' ), (Ze:'3'; Co:'...--' ),
(Ze:'4'; Co:'....-' ), (Ze:'5'; Co:'.....' ), (Ze:'6'; Co:'-....' ),
(Ze:'7'; Co:'--...' ), (Ze:'8'; Co:'---..' ), (Ze:'9'; Co:'----.' ),
(Ze:'0'; Co:'-----' ),
(Ze:Pkt ; Co:'.-.-.-'), (Ze:','; Co:'--..--'), (Ze:DP; Co:'---...'),
(Ze:'-'; Co:'-....-'), (Ze:'/'; Co:'-..-.' ), (Ze:'('; Co:'-.--.' ),
(Ze:')'; Co:'-.--.-'), (Ze:'?'; Co:'..--..'), (Ze:'='; Co:'-...-' ),
(Ze:'þ'; Co:'...-.-' ));
Type
Str2 = String[2];
Str3 = String[3];
Str4 = String[4];
Str5 = String[5];
Str6 = String[6];
Str7 = String[7];
Str8 = String[8];
Str9 = String[9];
Str10 = String[10];
Str11 = String[11];
Str12 = String[12];
str15 = String[15];
Str19 = String[19];
Str20 = String[20];
Str25 = String[25];
str28 = string[28];
Str32 = String[32];
Str40 = String[40];
Str60 = String[60]; { f<>r Filenamen }
Str30 =string[30];
Str70 =string[70];
Str80 = String[80];
Str88 = String[88];
Str128 = String[128];
strk = string[41];
Str255 = String[255];
StrBox = String[BoxRec];
PSPtablePtr= Array [1..20] of Byte;
BildPtr = Array [1..80*60*2] of Char; { max 80x60 Zeichen }
{ plus Videoattribute }
NotChPtr = Array[0..maxNotChBuf] of Byte;
GetHeapPtr = Array[1..$FFFF] of Byte;
VorWritePtr = Array[1..maxVorZeilen] of String[80];
MsgFeldPtr = Array [1..maxMsgChr] of Char;
MsgPosPtr = Array [1..maxMsgRet] of Word;
PWArrayPtr = Array [0..59] of String[27]; { nur f<>r DieBox }
MbxZeile = Array [1..BoxRec] of Char;
MbxTypPtr = Array [1..maxMbxLines] of MbxZeile;
HistoryPtr = Array [1..maxHistory+1] of String[80];
HlpNrPtr = Array [1..maxHlpNr] of String[13];
Freq_Type = Record
QRG : String[8];
TNr : Byte;
End;
Freq_Ptr = Array[1..maxQRG] of Freq_Type;
InfoOutPtr = Record
IZ : Array [1..maxInfoOut] of String[80];
Ka : Array [1..maxInfoOut] of Byte;
End;
QRG_Type = Record
Call : String[9];
QRG : String[8];
End;
BroadCast = Record
SourceCall,
SourceAlias, {source: woher kam der Broadcast}
NodeCall,
NodeAlias : Str9; {node: Broadcast-eintrag}
Quality : Byte;
Port : byte;
DatTime : longint;
end;
Lnk_Type = Record
Entry : String[80];
Ext : Boolean;
End;
Lnk_Ptr = Array [1..maxLnk] of Lnk_Type;
Hlp_Type = Record
Entry : String[HlpRec];
ID : String[6];
Attr : Byte;
Sp7 : Char;
End;
Hlp_Ptr = Array [1..maxHelpZln] of Hlp_Type;
REM_Type = Record
BefNr : Byte;
Befehl : String[8];
AnzCh : Byte;
AnzPa : Byte;
Level : Byte;
LevelN : Byte;
End;
Mon_Type = Record
MonBeide,
MonActive,
MonDisAbr,
MonHCall,
MonEHCall,
MonStrict,
MonSignal,
MonIFr,
MonUFr : Boolean;
MonAttr : Byte;
MonLast : String[25];
MonNow : Array [1..2] of Boolean;
MonStr : Array [1..2] of String[25];
MonFirst : Array [1..2] of Boolean;
MonFrameNr : Array [1..2] of Byte;
MonCtrl : Array [1..2] of Array [0..7] of Word;
End;
Conv_Typ = Record
Active : Boolean;
Ret : Boolean;
NoCHead : Boolean;
Count : Byte;
Chan : Byte;
LLen : Byte;
LCall : String[9];
AfuStatus : Byte;
Fehler : Str80;
{Afustatus:
0=noch nicht festgelegt
1=AFU
2=CB}
End;
Dir_Typ = Record
Name : String[13];
Size : String[8];
Attr : String[4];
Date : String[8];
Time : String[5];
Mark : Boolean;
End;
UsersTag_ = array[1..MaxUTag] of Longint;
UsersTag = ^UsersTag_;
RemAusn_ = Array[1..115] of Boolean;
User_Typ2 = Record
Version1, Version2: Byte;
Call,
Alias : String[10];
Name : String[30];
QTH : String[30];
Locator : String[6];
Adress : String[60];
Telefon : String[20];
PacLen,
Umlaut : Byte;
FBBStreng_,
Anwesenheit,
VIP,
Show,
RemSchreib : Boolean;
RemAusnahmen : RemAusn_;
MaxFrames : Integer;
System,
MailLesen,
MailKillen,
ByeBye : String[10];
Vorbereitung,
Nachbereitung : String[60];
Prompt,
PWPrompt,
SStopPrompt : string[60];
SSIDs : array[0..15] of Boolean;
Synonym : string[10];
StopCode : word;
Kompression,
dummybyte1,
dummybyte2,
dummybyte3 : Byte;
AutoBoxPassw,
dummybool1,
dummybool2,
dummybool3 : Boolean
end;
User_Idx = Record
Call,
Alias: String[10];
Pos : Longint;
end;
Dir_Feld = Array [1..maxDir] of Dir_Typ;
Anwesend_ = Record
Call: String[9];
Da : boolean;
SSIDs : array[0..15] of byte;
end;
MH_Typ = Record
Rej : Word; { Anzahl REJ-Frames }
UIs : Word; { Anzahl der UI-Frames }
TNr : Byte; { Nummer des TNCs }
Qrg : String[8]; { Frequenz }
Call : String[9]; { Rufzeichen }
Zeit : String[14]; { zuletzt geh”rt um ... }
Link : String[50]; { ausf<73>hrl. Link }
End;
MH_Feld = Array [1..maxMHRec] of MH_Typ;
ComType = Record
Active : Boolean;
Base : Word;
BaudRate : LongInt;
IRQ_Nr : Byte;
Old_Vector : Pointer;
FifoOn : Boolean;
FifoCfg : Byte;
OrgLODIV : Byte; {Original Baudratenteiler LOW -Byte}
OrgHIDIV : Byte; {Original Baudratenteiler HIGH-Byte}
OrgLCR : Byte; {Original Line Control Register}
OrgMCR : Byte; {Original Modem Control Register}
OrgIER : Byte; {Original Interrupt Enable Register}
End;
MemoTNC = Record
BText : String[80];{ Bakentext }
BPfad : String[80];{ Pfad der Bake }
BCall : String[9];
BTimer : Word; { Minuten-Intervall }
Bake : Boolean; { Bake ein/aus }
CText : Byte; { C-Text Variante }
Info : Byte; { Info Text Variante //i }
Aktuell : Byte; { Aktuell Text Variante //a }
QText : Byte; { Quittext Variante //q }
Fix : Byte; { Festtext Variante SH-F1.. }
QRG_Akt : String[8]; { aktuelle Frequenz }
end;
MemoKanal = Record
OwnCall : Str9; { Eigenes Call }
Paclen : Word; { Paclen f<>r diesen Kanal }
MaxFrame : Byte; { Maxframe f<>r diesen Kanal }
UmlautMerk : Byte;
UnStat,
ObStat : Byte; { Y_Pos der Trennzeile }
FRxName : Str60; { File-Rx-Name }
SaveFName : Str60;
SPlFName : Str60;
Spl_gCount : LongInt;
Spl_tCount : LongInt;
Spl_gLaenge : LongInt;
Spl_tLaenge : LongInt;
Umlaut,
Echo : Byte;
Auto,
RX_Beep,
TXBeepAck,
AutoBin,
SPlus,
TXComp,
RXComp,
CompC,
SPComp,
StopComp : Boolean;
StopCode : Word;
KompressUpd : boolean;
CompCUpdZahl : Byte;
Kompression : Array [1..255] of Byte;
NoCurJump,
Node : Boolean;
Ignore : Boolean;
{//db1ras}
CSelf : Byte;
AutoZeile : String[80];
Auto1Zeile : String[80];
AutoTime : String[5];
AutoZaehl : Word;
AutoJump : Word;
AutoZyConst : Word;
AutoZyCount : Word;
AutoWait : Word;
AutoToConst : Word;
AutoToCount : Word;
AutoToAnz : Word;
AutoToMax : Word;
AutoToAnzJmp : Word;
AutoChMerk : Byte;
AutoArt : Byte;
AutoCheckLn : Boolean;
AutoJmpPtr : Byte;
AutoJmpRet : Array [1..maxAutoJmpPtr] of Word;
bool1, bool2, bool3 : boolean;
byte1, byte2, byte3 : byte;
word1, word2, word3 : word;
end;
{$IFDEF ReadOldMemo} {//db1ras}
MemoKanal174= Record {alter Record der Version 1.74}
OwnCall : Str9; { Eigenes Call }
AutoZyConst : Word;
Paclen : Word; { Paclen f<>r diesen Kanal }
MaxFrame : Byte; { Maxframe f<>r diesen Kanal }
UmlautMerk : Byte;
UnStat,
ObStat : Byte; { Y_Pos der Trennzeile }
FRxName : Str60; { File-Rx-Name }
SaveFName : Str60;
SPlFName : Str60;
Spl_gCount : LongInt;
Spl_tCount : LongInt;
Spl_gLaenge : LongInt;
Spl_tLaenge : LongInt;
Umlaut,
Echo : Byte;
Auto,
RX_Beep,
TXBeepAck,
AutoBin,
SPlus,
TXComp,
RXComp,
CompC,
SPComp,
StopComp : Boolean;
StopCode : Word;
KompressUpd : boolean;
CompCUpdZahl : Byte;
Kompression : Array [1..255] of Byte;
NoCurJump,
Node : Boolean;
Ignore : Boolean;
bool1, bool2, bool3 : boolean;
byte1, byte2, byte3 : byte;
word1, word2, word3 : word;
end;
{$ENDIF}
MemoGlobal=Record
Gross : Boolean;
TopBox,
morsen,
Klingel,
CtrlBeep,
Time_Stamp,
PacOut,
ZeigeRet,
ConMorsen,
ReconMorsen,
GlobalTrenn,
BinOut,
Ins,
NoBinMon,
RX_TX_Win,
VIP,
SoZeichen : boolean;
SETL : Array[1..10] of Word;
SetNr : Byte;
Idle_Pos : Boolean;
Idle_anz,
Idle_Tout : Word;
TonHoehe : Word;
_VGA : Boolean;
MPause,
Resync_Z : Word;
CNr : Longint;
InfoStr : Str80;
StatusModus : byte;
ZeilenwTX : Boolean;
Speak,
Bool2, Bool3 : boolean;
byte1, byte2, byte3 : byte;
SpeakSpeed,
word2, word3 : word;
end;
MemoTyp = Record
v1, v2 : byte;
TNC : array [1..MaxTNC] of MemoTNC;
Kanal : Array [0..maxKanal] of MemoKanal;
Global : MemoGlobal;
end;
{$IFDEF ReadOldMemo} {//db1ras}
OldMemoTyp = Record
v1, v2 : byte;
TNC : array [1..MaxTNC] of MemoTNC;
Kanal : Array [0..maxKanal] of MemoKanal174;
Global : MemoGlobal;
end;
{$ENDIF}
TNC_Typ = Record
(* TXBedarf : Boolean; {sendesperre hier schnellstm”glich l”sen}
TXGesperrt : Boolean; {Sender gesperrt} *)
Channels : Byte; { Anzahl der Terminalkan„le }
TncChannels : Byte; { Anzahl der TNC-Kan„le }
Kvon : Byte; { 1. log. Terminalkanal }
Kbis : Byte; { letzter. log. Terminalk. }
RS232 : Byte; { Com-Nummer }
MPX : Byte; { F<>r Multiplexkarten }
HF_Port : Byte; { Bei DRSI der HF-Port }
HF_PortStr : String[10];{ F<>r DRSI das Portkommando }
Ident : Str4; { Identifier }
MoniStatus : Str80; { Speicher f<>r den Moni-Status}
Hostcall : Str9; { Call auf Kanal 0 }
Bake : Boolean; { Bake ein/aus }
CText : Byte; { C-Text Variante }
Info : Byte; { Info Text Variante //i }
Aktuell : Byte; { Aktuell Text Variante //a }
QText : Byte; { Quittext Variante //q }
Fix : Byte; { Festtext Variante SH-F1.. }
BText : String[80];{ Bakentext }
BPfad : String[80];{ Pfad der Bake }
BCall : String[9];{ Send-Call der Bake }
BTimer : Word; { Minuten-Intervall }
DRSI : Byte; { TNC ein DRSI-TNC }
ExtHost : Boolean; { Extended Hostmode ? }
FALC : Boolean; { Falcon-TNC ? }
TNC3 : Boolean; { TNC3 ? }
PCXD : Boolean; { TFPCX in DRSI ? }
TNC_im_Host : Boolean; { TNC im Hostmode ? }
DEDHost : Boolean;
QRG_Akt : String[8]; { aktuelle Frequenz }
TicStr : String[TL];{ Tickerzeile }
AFUPort,
Tic : Boolean; { Tickerzeile ein/aus }
MBufHeap : Word; { max. ermittelt. Puffer }
MailBakenTimer:Byte;
End;
Sich_Rec18 = Record
QSOAblauf,
Dateien,
User,
Shutdown : Boolean;
end;
TNC_Konf = Record {1.8}
Art : Byte; {tfpcx, tnc ....}
MaxKan : Byte;
NodeKan : Byte;
Identi : Str2;
Port : Byte;
Tickzeile : Boolean;
Com,
IRQ : Byte;
Adresse : Str8;
Baud : Longint;
AfuPort,
Fifo : Boolean;
MultiplexNr : Byte;
PortNam : str20;
IniA : array[1..16] of str30;
IniB : str70;
DIniA : array[1..16] of str30;
DIniB : str70;
TX_X0, {TNC-Command TX-Sperre AN}
TX_X1 : string[5];{TNC-Command TX-Sperre AUS}
TX_Bundle : Byte; {B<>ndel-Nummer um f<>r mehrere Antennen Sets zuzulassen}
end;
QuietZeit = Record
StdAnf, MinAnf,
StdEnd, MinEnd : Byte;
Aktiv : boolean;
end;
QuietZeiten = Array[1..3] of QuietZeit;
Konfig_Rec = Record {1.8}
kenner: strk;
TNC : array[1..MaxTnc] of TNC_KONF;
RemVerz,
SavVerz,
MailVerz : String;
Teil1 : byte;
RunVerz,
BinVerz,
SPlVerz,
MakVerz,
ViewVerz,
EditVerz,
SPKVerz,
TempVerz : str80;
Teil5 : byte;
CDRom : Char;
ZeitBez : str8;
UTCDiff : integer;
teil2 : byte;
UTCBenutzen,
Echtzeit : Boolean;
PopupZeit : integer;
LockIRQ : Boolean;
SichAbfr : Boolean;
IDLE : Boolean;
ScrSavZ : Byte;
PromptS : Str30;
NTimeOut,
TTimeOut,
MaxFrameStd,
PacLenStd,
MaxNodes,
Lifetime : integer;
Teil4 : byte;
version : integer;
QuietDH,
QuietZG : Boolean;
QuietZt : QuietZeiten;
MH : Byte;
BackScRam : Byte;
VorschZRam: Byte;
BufferDat : Boolean;
LPTNr : Byte;
LPTAdr : Str8;
SoftHardC,
WinRout : Boolean;
WinRoutTime: Byte;
RXBeepStart,
AchzigBrail,
Steuerz,
MarkTon,
AusgabeBios: Boolean;
Teil3 : Byte;
MailFErl : Boolean;
MailFrame : array[1..10] of str10;
OwnMailFr : Boolean;
OwnMailPfad: String[50];
MailFrameZeit : Byte;
PersName,
PersQTH : string[30];
PersLoc : string[10];
CBFilter : Boolean;
ReqNam : Boolean;
NodeSound : Boolean;
MaxLoginUser : Byte;
Sicherheit : Sich_Rec18;
WavOut, MidiOut, WavSprach, bool4, bool5, bool6 : boolean;
BackupTime, SBHiDMA, SBLoDMA, SBIRQ, byte5, byte6 : byte;
MidiADR, SBBaseADR, word3, word4, word5, word6 : word;
end;
MemoCTyp = Record
cv1,
cv2 : Byte; { Versions-Bytes }
Call : Str9; { Call der Gegenstation }
QSO_Date : String[11]; { Datum QSO-Beginn }
QSO_Begin : String[5]; { Zeit QSO-Beginn }
QSO_End : String[5]; { Zeit QSO-Ende }
ConText : String[80]; { Text fuers Log }
Eingangskanal,
Ausgangskanal: boolean;
Gegenkanal : byte;
SystemErkannt,
OnAct : String[20];
SysArt,
UserArt : Byte;
HoldLauf : Integer;
Hold : Boolean;
HoldTime : Byte;
HoldStr : String[25];
RemAll,
SelfSysop : Boolean;
end;
XBIN_ = Record {f<>r XBin RX/TX-Betrieb}
An : Boolean;
RX,
TX : boolean;
FrameNr : byte;
DatPos, {aktuelle Dateiposition}
DatPosA : longint; {Dateiposition bei FrameNr 255}
Retries : byte;
OK : Boolean;
PDat : Boolean; {protokolldatei offen?}
RTXOk : Boolean; {bei Fileende oder nach 256 frames nachfragen}
ProtPos : longint; {xbin.xxx-datpos f<>r neues frameset}
Nachford: string[5]; {Nachgeforderte Frames (f<>r TX)}
EOF : Boolean; {Datei zuende, nach best„tigung ende}
VorPuffer:String; {vorschreibschirm zwischenspeicher in S_pac
um paclen auszunutzen}
end;
XBINFile_ =Record {XBin-Protokoll-Datei, um RAM zu sparen}
FrameNr : Byte;
DatPos : Longint;
OK : Boolean;
RXCRC : str8;
CRC :str8;
Retries : Byte;
end;
KanalPtr = Record { fuer jeden Kanal wird folg. Struktur angelegt: }
OwnCall : Str9; { Eigenes Call }
Call : Str9; { Call der Gegenstation }
Alias : str9;
RemoteAus : RemAusn_;
System : str10;
User_autopw : boolean; {"user" schickt passwort-sequenz, diese wird mit pw best„tigt}
ReqName, {hat schon ein reqeustName stattgefunden?}
connected : Boolean; { true wenn connected }
QSO_Date : String[11]; { Datum QSO-Beginn }
QSO_Begin : String[5]; { Zeit QSO-Beginn }
QSO_End : String[5]; { Zeit QSO-Ende }
{??} ConText : String[80]; { Text fuers Log }
SendZeile : String;
XBIN : XBIN_;
XBinPFile : file of XBinFile_;
TxByte : Word;
FBBStreng, {FBB-Auswertung streng, oder locker [@]}
Loesch : Boolean;
Rx_Beep,
SysTextEcho : Boolean;
BellCount,
Echo : Byte;
Cmd : Boolean; { Kommando-Eingabe }
First_Frame : Boolean; { Merker fuer erstes Frame }
X2 : Byte; { Cursor-Position }
UnStat,
ObStat : Byte; { Y_Pos der Trennzeile }
Vofs,
VBeg,VEnd,
QBeg,QEnd : Byte;
Response : String; { Antwort des TNC }
Response256 : Char; { fuer 256er Frames }
AnzLines : Integer;
AnzNotiz : Word;
stV,
stC,
Y1V,
Y1C,
X1V,
X1C : Byte;
RemoteSave : Boolean;
NodeCon : Boolean;
NodeCmd : Boolean;
merkInfo : String[80];
EinstiegsKanal : Boolean; { Wurde hier //c eingegeben ? }
AusstiegsKanal : Boolean; { GegenKanal zum Einstiegskanal }
GegenKanal : Byte; { der andere Kanal auf dem der //c ausgef<65>hrt wird }
Kanal_benutz : Boolean; { Ist hier grad ein Link Setup oder Connect aktiv ? }
RemConReady : Boolean; { //c erfolgreich ? }
Insert_ON : Boolean;
NZeile : String;
ACZeile : String[80];
RxLRet : Boolean;
TxLRet : Boolean;
SvLRet : Boolean;
L_Status : Array [1..6] of Byte;
FlagTxBeep : Boolean;
TxBeepAck : Boolean;
TXFile : File; { Sende-File }
TX_Laenge : LongInt; { Laenge von Binaerfiles }
TX_Count : LongInt; { Zaehler f. Bin-Uebertr. }
TX_Baud : LongInt;
TX_Bin : Integer; { Merker fuer Filesendeart }
TX_Time : String[8];
TX_CRC : Integer;
FileSend : Boolean; { Merker fuer FileSend }
FileSendRem : Boolean;
XbinWait,
FileSendWait,
FileSendWaitS : Boolean;
FTxName : Str60; { Sendefile-Name }
RXFile : File; { ALT-E File }
Rx_Save : Boolean; { Merker fuer Save }
Rx_Time : String[8];
RX_TextZn : LongInt;
RX_Laenge : LongInt; { nur f<>r Auto-Binfiles }
RX_Count : LongInt;
RX_Baud : LongInt;
RX_Bin : Byte; { F<>r Filesteuerung }
RX_Date : LongInt;
RX_CRC : Integer;
RX_Soll_CRC : Word;
{Anzeigezeit f<>r Info-Box; 0=immer}
LstRXInfo,
LstTXInfo : string[80];
SvName : String[60];
SFile : File; { Save-File }
Save : Boolean;
FRxName : Str60; { File-Rx-Name }
AutoBin : Boolean;
AutoBinOn : Boolean;
SPlus : Boolean;
SplFile : File;
SplSave : Boolean;
Spl_gCount : LongInt;
Spl_tCount : LongInt;
Spl_gLaenge : LongInt;
Spl_tLaenge : LongInt;
Spl_Time : String[8];
Spl_Baud : LongInt;
Spl_COR_ERR : Boolean;
Spl_UmlMerk : Byte;
RemPath : String[64];
LogMerker : String[20];
BeLogEintr : Boolean;
Drucker : Boolean; { Merker fuer Ausdruck }
Umlaut : Byte; { Umlautwandlung }
UmlautMerk : Byte;
NR_Stelle : Integer;
{??} ConnectMerk : String[40];
{??} ACMerk : String[80];
Pause : Integer;
Paclen : Word; { Paclen f<>r diesen Kanal }
MaxFrame : Byte; { Maxframe f<>r diesen Kanal }
TNCKanal : Char; { phys. Kanal des TNCs }
Kan_Char : Char;
TNC_Code : Byte;
TNC_Count : Word;
TncNummer : Byte; { laufende Nummer des TNCs }
TncAkt : Byte;
Auto : Boolean; { Fernsteuerung ein/aus }
Outside : Boolean; { Connect kam "von auáen" }
Auto_CON : Boolean;
FoundCall : Boolean;
Last_CR_Pos : Byte;
{??} Ziel_Call : String[20]; {remote-zielcall}
NochNichtGelesen : Boolean;
Ignore : Boolean;
unknown : Boolean;
notRC : Boolean;
ParmWrong : Boolean;
HoldLauf : integer;
Hold : Boolean;
HoldTime : Byte;
HoldStr : String[25];
RTF : Boolean;
Test : Boolean;
TestMerk : Byte;
Priv_Errechnet : String[5];
Priv_Modus,
RemAll : Boolean;
SysopStr : String[10];
SysopArt : String[6];
SysopParm : Boolean;
StatZeile : Array[1..4*40] of Char;
FlagZeile : array[1..2*80] of char;
FlagZeile2 : array[1..2*80] of char;
Rekonnekt : Boolean;
Now_Msg_holen : Boolean;
MeldeCompZ : String[80];
MeldeZeile : String[80];
MldOk : Byte;
ExtMld : String[80]; {bay-box}
{ FwdMsgsHolen, }{wieviele msgs beim fwd geholt werden}
{FwdMails : Byte;}
{ FwdFS, } {FS wurde gesendet, FF soll zur<75>ckgehalten werden}
{FwdNxt, wird f<>r neuer”ffnung gesetzt/n„chste mail anfordern [FF]}
{ FwdStarted, } {wird nach FS-frame gesetzt}
MailPrompt : Str60; {Wenn MailPoll #? dann mit MailPrompt_ f<>llen}
BoxAutoPW, {bei "normalen" box-connects zusammen mit fwd}
Fwd, {wird gesetzt, wenn forward angezettelt wird}
FwdGo, {wird bei forward gesetzt, wenn end-station connectet}
ExtMldFlag : Boolean;
EigMail : Boolean;
MsgToMe : Boolean;
AltEnd : Word;
TNC_Puffer : Boolean;
maxNotCh : Word;
Pos_im_Scr : LongInt;
VorZeilen : Byte;
VorCmdZeilen : Byte;
Einer_st : Boolean;
stTX : Array[1..maxVorZeilen] of Boolean;
NotPos : Word;
PagesNot : Array[0..3] of Byte;
PagesAnz : Byte;
BufFile : File;
BufPos : LongInt;
BufExists : Boolean;
BufToLow : Boolean;
Conv : Conv_Typ;
RX_Datenpieps : Boolean;
{!-} User_Name : String[20]; { Namen der OMs }
User_QTH : String[20];
User_Loc : String[6];
User_Komp : Byte; {komp direkt nach login}
NeueZeilen : Word;
ScrZlnMerk : Word;
BoxZlnMerk : LongInt;
Mo : Mon_Type;
QsoScroll : Boolean;
Ext_Poll : Boolean;
C_Poll : Boolean;
DieBoxPW : String[6]; { PW f<>r DIE BOX ab V1.4 }
DBoxScaned : Boolean;
DBox : File;
FSize : LongInt;
ChkLstOpen : Boolean;
SysArt : Byte;
UserArt : Byte;
BoxScroll : Boolean;
BoxStr : String[BoxRec];
SCon : Array [0..maxSCon] of Boolean;
Rubrik : String[8];
RunRub : String[60];
NewChkLst : LongInt;
ChecksSorted : Boolean;
PassRetry : Byte;
PassRight : Byte;
RxComp : Boolean;
TxComp : Boolean;
SPComp : Boolean;
SPRxCount : word;
SPRxSOLL : Byte;
STOPComp : Boolean;
STopCode : Word;
CompZeile : String;
TncNix : Boolean;
Kopieren : Byte;
KopierenFm : Byte;
WishBuf : Boolean;
NoCurJump : Boolean;
use_RomLw : Boolean;
SynchErrAnz : Word;
GrtFlag : Boolean;
EigFlag : Boolean;
FileFlag : Boolean;
RemFlag : Boolean;
CSelf : Byte;
{??} AutoZeile : String[80];
{??} Auto1Zeile : String[80];
AutoTime : String[5];
AutoZaehl : Word;
AutoJump : Word;
AutoZyConst : Word;
AutoZyCount : Word;
AutoWait : Word;
AutoToConst : Word;
AutoToCount : Word;
AutoToAnz : Word;
AutoToMax : Word;
AutoToAnzJmp : Word;
AutoChMerk : Byte;
AutoArt : Byte;
AutoCheckLn : Boolean;
AutoJmpPtr : Byte;
AutoJmpRet : Array [1..maxAutoJmpPtr] of Word;
Node : Boolean; {true = Kanal laeuft als Node}
XPNodeC : Boolean; {wird gesetzt, wenn XP-Node}
{erkannt wurde (-N])}
SystemErkannt : Str15; {??evtl nur noch version?}
QSOZeilen : Byte;
SelfSysop : Boolean;
AutoKenn : Boolean;
BoxListeErg : Boolean;
{einer reicht!} NodeTimeOut : Integer;
TermTimeOut : Integer;
VIP_,
Mail_SP : Boolean;
PWMerk : String[20]; {Merkt sich den Passwort-String bei Unvollst„ndigkeit}
OnAct : String[20];
TXKompRate,
RXKompRate : Byte;
Kompression : Array[1..255] of Byte;
UnknownCount, {Z„hlt die Anzal unbekannter befehle}
CompCUpdZahl : Byte; {Z„hlt den Fortschritt des Komp-Updates mit}
CompC : Boolean; {zeigt an, daá COMPC in Aktion ist}
KompressUpd : Boolean; {soll daf<61>r sorgen, dass w„hrend Aktivierung
COMPC nicht gesendet und beim Empfang Tab. kommen kann}
End;
LokalPtr = Record
DetCode : Word;
Config : file of konfig_rec;
LinkFile,
{ BootFile,}
MakroFile,
AutoFile,
TFile : Text;
BFile : File;
C1_Ton,
C1_TonTime,
C2_Ton,
C2_TonTime,
Alarm_Freq,
Alarm_Time,
RxPiepFreq,
RxPiepTime,
TxPiepFreq,
TxPiepTime,
RemPiepFreq,
RemPiepTime,
PopFreq,
PopFreqTime,
CTRL_G_Freq,
CTRL_G_Time,
TonHoehe,
BLockAnfFreq,
BLockEndFreq,
BlockPiep1Time,
BlockPiep2Time : Word;
NRCall : str10;
Drive : String[60];
Merk_Drive : String[60];
{MailPfad : String[60];}
{RunPfad : String[60];}
{SpkPfad : String[60];}
{SavePfad : String[60];}
{BinPfad : String[60];}
{SPlusPfad : String[60];}
{TempPfad : String[60];}
{MakroPfad : String[60];}
{Ext_Edi_Path : String[60];}
{Ext_View_Path : String[60];}
Cmd_Line : String[80];
InfoStr : String[80];
Leer : String[80];
Conn_Str : String[80];
HeaderStr : String[80];
PromptStr : String[60];
TabStr : String[20];
InfoDieBox : String[60];
UserDieBox : String[60];
InfoBayBox : String[60];
InfoTnc3Box : String[60];
RubrikStr : String[60];
EzFileStr : String[60];
EzMsgStr : String[60];
RunElDir : String[60];
RunElFile : String[60];
RunElTree : String[60];
BinEL : String[10];
TxtEL : String[10];
DirEL : String[10];
CrcFeld : Array [0..255] of Word;
SETL : Array [1..10] of Word;
ESCP : Array [1..maxESC] of String[13];
Fstr : Array [7..20] of String[80];
Fstx : Array [7..20] of Byte;
Remotes : Array [1..maxREM] of REM_Type;
QRG : Array [1..maxQRG] of QRG_Type;
QRG_Anz : Byte;
MlStr : Array [1..maxBlBox] of String[60];
OHelp : Array [1..maxOHelp] of String[6];
Makro : Boolean;
MakroLearn : Boolean;
MakroZeile : String[80];
MakroReturn : Boolean;
MakroFileEnd : Boolean;
MakroZaehl : Word;
DArt : Byte; {darstellung in udb 1=Umlaut, VIP, ...; 2= Distanz, Azimut}
StatusModus : byte;
ZeilenwTX : Boolean;
End;
Mail_Typ = Record
BoxCall : str9;
ZielCall : str9;
Port : Byte; {port auf dem geh”rt}
Versuche : Byte; {connect-versuche}
Uhrzeit : str10; {Zeit/datum zuletzt geh”rt}
Datum : Str11;
end;
MailDat = file of Mail_typ;
UIdx_ = File of User_idx;
UDat_ = file of User_typ2;
VAR
Kanal2 : Byte;
{$IFNDEF no_Bake} {//db1ras}
MailBakenZeit : Byte;
MailBake : Boolean;
{$ENDIF}
Konfig : Konfig_Rec;
Quiet_Uhr, {Schalten zw. Uhrzeit und QUIET-Anzeige}
Quiet : Boolean; {QUIET-Befehl - Ruhe - kein Klingeln/Beep}
QuietZeitG : Boolean;
QuietZtenAn : array[1..3] of str8;
QuietZtenAus : array[1..3] of str8;
OnlHelp : Boolean;
NTimeOut : Integer;
COM : Array [1..4] of ComType;
ComPortBase : Array [1..4] of Word Absolute $0000:$0400;
Old_IntMask : Byte;
ComAdr1,
ComAdr2,
ComAdr3,
ComAdr4 : Word;
EoiPic1,
EoiPic2,
EoiPic3,
EoiPic4 : Boolean;
TFPC_installed : Boolean;
DRSI_installed : Boolean;
Kiss_Int : Byte;
CB : Byte;
TRead : Boolean;
G : ^LokalPtr;
Bild : ^BildPtr;
Page : ^NotChPtr;
Msg : ^MsgFeldPtr;
MsgPos : ^MsgPosPtr;
HeapFeld : ^GetHeapPtr;
BFeld : ^GetHeapPtr;
Anwesend : Array [1..MaxAnwesend] of ^Anwesend_;
K : Array [0..maxKanal] of ^KanalPtr;
NotCh : Array [0..maxKanal] of ^NotChPtr;
VorWrite : Array [0..maxKanal] of ^VorWritePtr;
TNC : Array [1..maxTNC] of ^TNC_Typ;
TNC_used : Array [1..maxArrayTNC] of Boolean;
LptEsc : Array [1..10] of Str20; { Drucker-Steuerzeichen }
AusStr : String[80];
SK_out : Sondertaste;
VC_out : Char;
maxLink : Byte;
show : Byte; { zur Zeit angezeigter Kanal }
QRT : Boolean; { Ende-Merker }
Mon_Anz : Byte;
ScrHandle,
VorHandle,
XMS_Handle : Word;
x : Char;
ZeitMerk : String[8];
UtcZeit : String[8];
UseUTC : Boolean;
TagOver : Boolean;
ZeitDiff : ShortInt;
HeapFile : File;
MPort : Integer;
FirstA : Boolean;
stFirst : Integer;
stLast : Integer;
TNC_ReadOut : Boolean; { Erst die vorhandenen Frames beim Programmstart aus dem TNC lesen }
JumpRxScr : Boolean;
JumpRxZaehl : Integer;
Win_Rout : Boolean;
Win_Time : Word;
Box_Time : Word;
NowCurBox : Boolean;
FirstConCh : Byte;
ZeitArt : String[3];
ch_in : Char;
ch_aus : Boolean;
Priv_PassWord : String[80];
Y4 : Integer;
notScroll : Boolean;
DZeile : String;
Poll : Byte;
PollTnr : Byte;
PollRate : Byte;
D_Spalte : Integer;
Time_stamp : Boolean; { Merker, Software soll Zeit anfuegen (Moni) }
PacOut : Boolean; {PacLen-Ausgabe bei Info-Monitorheader }
Old_active_TNC : Byte;
TNC_Anzahl : Byte;
SendKanal : Byte;
SysPfad : String[60]; { Pfad f<>r die Packet-Systemfiles }
Sys1Pfad : String[60];
OvrDatei : String[60];
VDisk : String[60];
Vdisk_Exists : Boolean;
use_Vdisk : Boolean;
RomDisk : String[3];
Rom_Exists : Boolean;
Resync_Z : Word; { Zaehler fuer Resync's }
Nodes_Change : Boolean; { Aenderungen in der Nodes-Liste? }
Klingel : Boolean;
CtrlBeep : Boolean;
Uebernahme : Boolean;
Unproto : Integer;
multiTNC : Boolean;
Aufwaerts : Boolean;
ScreenSTBY : Boolean;
ScreenInit : Word;
ScreenTimer : Word;
StartVideoMode : Integer;
LastModeStore : Integer;
BreakStatus : Boolean;
_VGA : Boolean;
TNC_K : Boolean; { im TNC ist K eingeschaltet }
TNC_Date : String[11];
TNC_Time : String[8];
Ausgabe : Boolean;
Print : Boolean;
LPT_PORTs : Array [1..4] of Word Absolute $0000:$0408;
LPT_Base : Array [1..4] of Word;
LPT_vorhanden : Boolean; { Druckerschnittstelle vorhanden? }
PrtPort : Byte;
PrtFailure : Boolean;
Gate : Integer;
maxPath : Integer;
LastName : Integer; { Anzahl der gespeicherten Namen }
CNr : LongInt; { Anzahl der Connects }
NoActivity, {letzte Sysop-Aktivit„t in minuten}
LaufZeit : LongInt;
WBox : Str9;
WCall : Str9; { f<>r WATCH-Funktion }
Attrib : Array[1..maxAttr] of Byte; { Bildschirm-Attribute }
FreiKanal : Byte;
NeuCall : String[70];
RemoteCall : String[9];
LastInfoOut : ^InfoOutPtr;
LastInfoCount : Byte;
LastInfoFlag : Boolean;
History : ^HistoryPtr;
HistoryCount : Byte;
Del : Boolean;
ShowMerk : Byte;
ZeigeRET : Boolean;
TopBox : Boolean;
morsen : Boolean;
MPause : Word;
HardCur : Boolean;
Gross : Boolean;
minTncBuf : Word;
maxTncBuf : Word;
Fenst_Y : Byte;
NowFenster : Boolean;
ScrollVor : Boolean;
BlTon : Boolean;
XL,XR : Byte;
FreeRam : LongInt;
maxZ : Byte;
ParmAnz : Byte;
ParmPos : Byte;
NrStat : Array[1..4] of Byte;
Eig_Mail_Zeile : String[80];
TNC_Halt : Boolean;
polling : Boolean;
PollTime : LongInt;
VideoSeg : Word;
XCP : Byte;
Color : Boolean;
StartColor : Byte;
Hercules : Boolean;
EMS_Pages_Ins : Word;
ParamZeile : ^String;
CFGNr : Byte;
ColNr : Byte;
TncINr : Byte;
CRC_PR_EXE : Boolean;
File_Frame_max : Integer;
Pseudo : Boolean; { Rufzeichen in den TNC-Kan„len > maxLink }
ConvHilfsPort : Byte;
ReconMorsen : Boolean;
ConMorsen : Boolean;
{ ReconVoice : Boolean;
ConVoice : Boolean; }
MonID : Byte; { Ident im Monitor schreiben ?}
ShTab_Pressed : Boolean;
Braille80 : Boolean;
GesamtNotCh,
GesamtVorCh : LongInt;
PortStufe : Byte;
Mstr : String[80];
volle_Breite : Boolean;
Nutze_EMS : Boolean;
Nutze_XMS : Boolean;
Vor_im_EMS : Boolean;
use_EMS : Boolean;
use_XMS : Boolean;
OVRtoXMS,
OVRtoEMS : Boolean;
Speek : Boolean;
VSpeed : Word;
UeberNr : String[2];
Key1A : Byte absolute $0040:$001A;
Key1C : Byte absolute $0040:$001C;
KeyStatus : Byte absolute $0040:$0017;
TastPuffer : Array [$1E..$3D] of Byte absolute $0040:$001E;
BufText : Word;
SwapXms : Boolean;
SwpHandle : Word;
SizeHeap : LongInt;
KeyDelay : Word;
GlobalTrenn : Boolean;
ScrollFile : File;
BuffFile : File;
AT : Boolean;
TimerTick : LongInt absolute $0040:$006C;
TimerFlag : Byte;
TimeOut : LongInt;
HwHs : Boolean;
HlpCompile : Boolean;
BinOut : Boolean;
Ins : Boolean;
HighCol : Boolean;
Kbd : Byte;
SortMhNr : Byte;
Cursor_on : Boolean;
CurX,
CurY : Byte;
HD_was_Active : Boolean;
Old2Bvec : Pointer;
TopString : String[3];
IrqMask : Byte;
AnyConnect : Boolean;
DateiInfo : Byte;
SSAV : Byte;
LogArt : Byte;
RTC : Boolean;
WishBoxLst : Boolean;
WishDXC : Boolean;
KillEsc : Boolean;
WCTRL : Boolean;
Upload : Boolean;
K_Record_on_Heap : Boolean;
QRT_Text : Boolean;
SynchError : Boolean;
OverRun : Boolean;
ColMon : Byte;
MonCode5 : Boolean;
WeekDayStr : String[60];
WochenTag : String[10];
OrigExit : Pointer;
HD_Read : Word;
KStat : Boolean;
KStatTr : String[1];
ZlnMerk : Boolean;
NoBinMon : Boolean;
maxBefehl : Word;
RX_TX_Win : Boolean;
SplCountLines : Boolean;
BiosOut : Boolean;
MhKill : Boolean;
AltQFlag : Boolean;
V24Buffer : Array [0..MaxComBuf] of Byte;
BufferPos : Word;
Dir : ^Dir_Feld;
UserKilled, {filepos des zu l”schenden users (userdatenbank)}
DirSize : LongInt;
DirFiles : Word;
MailAnz,
UserAnz : longint;
MH : ^MH_Feld;
MHeard : ^MH_Feld;
MH_Anz : Byte;
maxMH : Byte;
FreqList : ^Freq_Ptr;
FreqPos,
FreqCount : Byte;
Lnk : ^Lnk_Ptr;
Lnk_Anz : Byte;
Hlp : ^Hlp_Ptr;
Hlp_Anz : Byte;
Hlp_ZlnNr : LongInt;
HoldDXC : Boolean;
HoldDXcStr : String[25];
KeyCheck : Boolean;
RecCheck : Boolean;
SETNr : Byte;
TicAnz : Byte;
ModMonFr : Boolean;
FiResult : Integer;
WeFlag : Boolean;
DirScroll : Boolean;
KeyOpt : Byte;
EraseChk : LongInt;
LogChk : LongInt;
SiAltD : Boolean;
SiAltK : Boolean;
TabFill : Boolean;
MoniStaAnz : Byte;
Idle : Boolean;
Idle_Pos : Boolean;
Idle_Anz : Word;
Idle_Count : Word;
Idle_Tout : Word;
Idle_TCount : Word;
Idle_TMerk : LongInt;
DelayCor : Real;
LockInt : Boolean;
BoxZaehl : Word;
(* ShowQTH, {> F<>r Rem.- und ESC-Befehl Show,}
ShowLoc : String[31]; {> hier solll der Kanal ja nicht beschrieben werden}*)
MailPolling : String; {hier werden alle Poll-Befehle abgelegt und ausgelesen}
PollStr : string; {Ersatz f<>r MeldeZeile in der IO}
MailPrompt_ : Str60; {Such-Prompt f<>r MailPolling [#?] }
MailSSTopPrompt_,
MailPWPrompt_ : str60;
MailBoxCall,
MailRXCall,
CRCNROM : Str9; {tarnung - ist CRC-pr<70>fungs-vari!}
MailSynonym : String[12];
BackupBremsen,
BackupJetzt : Boolean;
MailAusUDB : Boolean;
FWD_ : Boolean; {Anzeige, daá bereits MailPolling aktiv!}
MailPWWait : Boolean;
alte_Table : ^PSPtablePtr;
neue_Table : Array [1..maxTable] of Byte;
TabAdresse : ^Pointer;
TabLaenge : ^Word;
{ Comp_Key : Array [0..maxTable] of Boolean;}
Versi : str20; {VErsi-,Mail-Anzeige rein, um mit scan wechseln zu k”nnen}
Scan_,
KommtMail : Boolean; { Mail-Frame erkannt, warten auf MailJetzt }
MailJetzt : Byte; { Frame Z„hler: Wann kommt Info-Frame? }
_OnAct,
MailInBox, {f<>r flags}
inNodeListe, {um dateizugriff auf Netrom-geschichten w„hrend Listenaufenthalt zu verhindern}
InUdb, {f<>r Anzeigen in UDB, damit nicht im qso-schirm}
VIPG, {VIP-funkt. an/aus?}
SoZeichen : Boolean; {Sonderzeichen od. Inv. Groábuchstaben? }
{ UD : File of User_Typ2;}
TestDec,
TestCom:string;
NetRom,
MailFrFlag,
ESC_Call : boolean; {suchroutine bei ESC Call abschotten}
Mail : Mail_Typ;
LastLTCheck : Longint;
maxmsgs:integer; {anzahl zeilen in msgs z„hlen!}
tag_, monat_, jahr_, wotag_,
Stunde,Minute,Sekunde,
lminute : word;
gotLastHr,
gotlastdt : boolean; {letztes datum geholt}
{ TXZeit: byte;
TXoffen,
TXbed,
TXZMax,
TXSicher : Byte;
}
xbtest:boolean;
BackUpLauf,
BackUpProc,
wavfileopen : Boolean;
SoundFile : File;
{$IFDEF Sound}
WavStream : String;
{Variables available to the calling programme : }
Playing : Boolean; {True if currently playing a wave-file}
WaveError : Byte; {If an error has occurred, contains the error code}
WaveType : WType; {Contains wave-file information}
{Pointer to old IRQ handler}
OldIRQ,
{Pointer to old exit procedure}
OldEP : pointer;
{The SB base address}
Base : Word;
{What kind of card is installed}
Card,
{The IRQ level}
IRQ,
{The DMA channel currently used}
Channel : Byte;
{One DMA channel for 8bit, the other for 16bit}
DMA8, DMA16 : Byte;
{The sound buffer itself}
SoundBuffer : ^ThirtyTwoK;
{The amount of bytes already read}
SoundRead,
{If the amount of bytes to be played is not a multiple of 16384 (most
likely, it isn't), this is used to store the difference}
OverHead : LongInt;
{Which buffer is being played}
Upper,
{Should the sound buffer be release?}
FreeBuffer : Boolean;
{A handle to the sound file}
{ SoundFile : File;}
{The chunks that should be read from the file}
Header : HeaderChunk;
Wave : WaveChunk;
fmtH : fmtHeader;
fmt : fmtChunk;
dataC : DataChunk;
{$ENDIF}
Implementation
Var a : Byte;
Begin
MailPrompt_:='';
MailpwPrompt_:='';
MailPWWait:=false;
MailSynonym:='';
MailAusUDB:=false;
MailSSTopprompt_:='';
SoZeichen:= false;
VIPG := false;
{ShowQTH :=''; ShowLoc:='';}
PollStr:='';
MailInBox:=False;
MailJetzt:=0;
KommtMail:=false;
{For A:=1 to maxKanal do
begin
Comp_Key[A]:=false;
end;}
GetIntVec(TEI,Old2Bvec);
TopString := 'XP';
AT := (Mem[$F000:$FFFE] = 252);
HwHs := false;
HlpCompile := false;
Mstr := '';
CFGNr := 0;
ColNr := 0;
TncINr := 0;
CRC_PR_EXE := false;
OVRtoEMS := true;
OVRtoXMS := true;
Nutze_EMS := true;
Nutze_XMS := true;
use_Vdisk := true;
Vdisk_Exists := true;
if (Lo(LastMode) = 7) then VideoSeg := SegHGC
else VideoSeg := SegVGA;
Bild := Ptr(VideoSeg,0);
for A := 1 to 4 do with COM[A] do
begin
FillChar(COM[A],SizeOf(COM[A]),0);
BufferPos := 0;
Active := false;
FifoOn := false;
FifoCfg := 0;
Base := ComPortBase[A];
if A in [3,4] then if Base = 0 then Base := Default_Base[A];
Old_Vector := Nil;
IRQ_Nr := Default_IRQ[A];
end;
TFPC_installed := false;
DRSI_installed := false;
QUIET:=false;
Quiet_Uhr:=false;
OnlHelp:=False;
xbtest:=true;
{ TXZeit := 255;
TXoffen := 0;
TXbed := 0;
TXSicher := 2;
TXZMax := 5;
}
End.