- 1 -
V Kladně 3.6. 1988
Vážená redakce!
Protože se v záplavě různých programů, které uveřejňujete,nepří-
liš často objevuje značka SORD m.5, rozhodli jsme se, přispět i
my se svou troškou do mlýna.
Následuje příspěvek s přiloženými listingy programů:
Video ram disk pro assembler EDTASM
===================================
Každý uživatel, který píše programy ve strojovém kódu za pomoci
programu "EDTASMv80", potvrdí, že archivování zdrojových textů
na kazetě v takové formě, jak je produkuje EDTASM není příliš
efektivní a spolehlivé. Je-li pak ještě zdrojový text dostatečně
dlouhý, nelze program překládat přímo do paměti RAM, ale musí se
překládat na magnetofon s dálkovým ovládáním a odtud lze teprve
přemístit přeložený program do paměti RAM. Tyto dva základní ne-
dostatky odstraňuje nové zařízení "VRM:", které lze přirovnat k
disketové jednotce s kapacitou 10222 bytů s možností uložit jen
jeden datový soubor.EDTASM umí na disk překládat,zapisovat a umí
z něho samozřejmě i načítat.Obsah disku lze zaznamenat na magne-
tofon a zpětně jej z magnetofonu zaplnit,což lze srovnat s výmě-
nou diskety. Disk zaznamenaný na magnetofonu má formu souvislých
dat (.VM),což je oproti původnímu záznamu nesouvislých dat (.DT)
velká výhoda,především pak v délce záznamu.VRAM disk je umístěn,
jak už z jeho názvu vyplývá, v prostoru ve video paměti, který
není v režimu TEXT využit. To uživatele částečně omezuje - nesmí
používat režim jemné grafiky během práce s diskem. Této podmínce
lze ale snadno vyhovět.Protože lze předpokládat,že uživatel bude
chtít využívat většinu jemu nabízených možností práce, byl k ov-
ladači vytvořen také řídící program v jazyce Basic-F, který ve
spolupráci s ovladačem zařízení VRM předkládá uživateli MENU, ve
kterém mu nabízí šest základních funkcí.
První dvě funkce slouží ke vstupu do EDTASMu, další dvě funkce
umožňují výměnu pomyslné diskety,funkce 5 potom přesunuje přelo-
žený program do paměti RAM a funkce 6 slouží k zobrazení zdrojo-
vého textu.Obě poslední funkce pracují jak s diskem tak i s mag-
netofonem ( z magnetofonu lze zobrazit pouze soubor typu .DT ).
Dále bylo potřeba upravit vlastní EDTASM tak, aby nepřepisoval
tabulkami ovladač. Ručně to lze vyřešit tak,že se vždy po vstupu
do EDTASM zadá Usrorg=FBFF,nebo tak,že se do EDTASMu "napoukuje"
několik změn.
Basic-F umožňuje využívat u zařízení,které si nadefinuje progra-
mátor tyto funkce: OPEN, CLOSE, PUT, GET, PRINT, INPUT, APPEND a
FIND. Protože EDTASM z nich využívá jen první čtyři,je i ovladač
disku o něco chudší.Jelikož EDTASM ignoruje při zápisu přetečení
disku, hlásí jej přímo ovladač. Totéž platí i pro čtení z disku.
- 2 -
Postup práce
============
Nejprve si musíme vytvořit ovladač VRM pomocí stávajícího assem-
bleru.Použijeme-li k tomu EDTASMv80, musíme nejprve odeslat pří-
kaz 'O' a zadat 'FBFF' a teprve potom můžeme napsat a odladit
program.Pokud jsme opsali listing zdrojového textu bezchybně,mu-
sí souhlasit všechna návěstí v programu. Pokud je tomu tak, lze
(po nezbytném zazálohování na kazetu) provést vlastní test hand-
leru několika následujícími příkazy:
(Pozn. program je již přeložený v paměti a nalézáme se v basiku)
END - kvůli smazání proměnných
CALL &FC00 - na dotaz 'Initialize VRM: ?' odpovíme kladně.
LEN 12
OPEN "VRM:DATA" FOR OUTPUT AS #3:PUT #3 "POKUSNY TEXT":CLOSE #3
Nyní jsou ve VRAMDISKU zapsaná data. Přečteme je příkazem:
OPEN "VRM:?" FOR INPUT AS #3:GET #3 A$:PRINT A$:CLOSE #3
Musí se vytisknout 'Find "DATA.DT"' a na následující řádek data.
Při pokusu zapsat nebo načíst data pomocí příkazu PRINT a INPUT,
se musí vždy vypsat chybové hlášení. Dále vyzkoušíme vypisování
MENU příkazem CALL &FC03. MENU by mělo reagovat pouze na stisk
kláves 1 až 7 odchodem do basiku. Pokud je tedy vše jak má být,
vstoupíme opět do assembleru, zaarichivujeme si zdrojový text a
program znovu přeložíme do paměti ( to proto, aby se inicializo-
valy všechny jeho proměnné) a potom jej nahrajeme na kazetu prí-
kazem: SAVE "VRM hand",&FC00,&FEFF,&FC00. Nyní přistoupíme k vy-
tvoření řídícího programu v jazyce Basic-F. Před vlastním napsa-
ním programu odešleme nejprve příkazy TYPE INT a NEW. Máme-li
program napsaný, můžeme jej odladit. Po RUN se zkontrolují první
a poslední bajty programů ve strojovém kódu, EDTASMu a VRM hand-
leru. V případě neshody se nahrají z magnetofonu. Nahraje-li se
VRM handler,je uživatel dotázán na inicializaci disku.Kladná od-
pověď zaplní celý disk nulami a zařadí jej do tabulky zařízení,
záporná odpověď disk pouze zařadí do tabulky zařízení. Následuje
dotaz 'RF?' na nahrávací rychlost, s jakou se bude provádět pří-
padný záznam na magnetofon. Poté se vypíše MENU a uživatel musí
zadat jedno z čísel 1 az 7 ( 7 = odchod do basiku ). Při volbě 1
ještě musí odpovědět, zda-li si je tím jistý (úplná inicializace
assembleru EDTASM ). Je-li u některých zbývajících voleb dotázán
na jméno, stiskem samotného <RETURN> se dosadí za jméno "?". Pro
odladění doporučuji následující postup: volíme nejprve vstup do
EDTASMu (2). V assembleru máme stále ještě zdrojový text - nyní
jej zapíšeme na disk příkazem 'WVRM:VRMHND' . Opustíme assembler
( vypíše se MENU ) a zadáme volbu 6 - Listing.Na následující do-
taz odpovíme záporně - chceme výpis z 'VRM:' . Začne se provádět
listing zdrojového textu. Můžeme si jej kdykoli zastavit stiskem
klávesy <SPACE> a dalším stiskem ve výpisu pokračovat. Po skon-
čení výpisu počítač pípne a očekává stisk nějaké klávesy.
Dále doporučuji vyzkoušet volbu 3 a 4 a úplně nakonec volbu 1.
V "čistém" EDTASMu nyní zadáme příkaz 'LVRM:?' a z disku se nám
nahraje zdrojový text - v případě, že tam již není je ohlášeno
'Function canceld'. Jsme-li se svou prací spokojeni,nahrajeme si
- 3 -
tedy basický program příkazem SAVE"ASMVRMv80"#1.Nyní přistoupíme
k vlastní úpravě programu EDTASMv80.CM. Nahrajeme jej celý znovu
z kazety a aniž by byl spuštěn, odešleme následující příkazy:
POKE &83EA,0,0,0
POKE &83EE,0,0,0
POKE &8233,&FE,&FB,&FF,FB - Usrorg na &FBFF.
POKE &9319,86,82,77,58,63,63 - implicitní jméno je 'VRM:?'
POKE &845C,62 - prompt
POKEW &8408,&84B0 - pro vypsání úvodního hlášení
SAVE "ASMv&8000",&8000,&AE41 - zaznamenat
CALL &8000 - a spustit
Pokud jsme udělali vše správně, vytiskne se v této chvíli úvodní
hlášení firmy Microsoft a vypíše se prompt ">".Odesláním příkazu
assembleru 'O' se musí vypsat mezi následujícími sděleními i ta-
to - 'Last=FBFE' a 'Usrorg=FBFF'.Nyní nám už nezbývá než opustit
EDTASM a pomocí některého kopírovacího programu nahrát programy
za sebe v pořadí
1. ASMVRMv80.BF
2. ASMv&8000.CM
3. VRM hand.CM
a tím jsme hotovi.
Věřím, že "VRM handler" usnadní a zpříjemní mnohým uživatelům
práci a přispěje ke vzniku dalších užitečných programů na počí-
tač SORD m.5.
Poznámka:
Existuje i ovladač "VRAM DISK.CM", který má všechny výše uvedené
funkce nabízené Basikem-F,avšak neobsahuje v sobě MENU a hlášení
přetečení.
- 4 -
Výpis basického programu
========================
Poznámka: řídící znaky ( vložit pomocí CTRL+SHIFT+ZNAK ) jsou podtrženy
10rem
20 clear,&7FFF:on error gosub 180:poke &701A,145:len 9:print "TZTU":view:cls:
if peekw(&8000)<>&F6C3 or peekw(&AE3E)<>&BD67 then print "LOADING ASSEMBLER .
..W":old "ASM?":print
30 if peekw(&FC00)<>&0318 or peekw(&FEFB)<>&4C48 then print "WLOADING VRM: HA
NDLER ...W":old "VRM?":print
40$R:A$=right$(hex$(peek(&7019)),2):print "WRF? &";A;"ßß";:input,A$:
A=val("&"+A$):if A<&12 or A>&25 then goto 40 else poke &7019,A
50$A:call &FC03:A=val(chr$(peek(&FC02))):print"W":on A gosub 60,70,80,90,100,
130,190:goto 50
60 input "Are you sure" A$:if A$="Y" then call &8000:return
70 call &8003:return
80 gosub 150:vsave A$,0,vpeek(16)+256*vpeek(17):return
90 gosub 150:old A$:return
100 gosub 160:get #3 I$,D$,A:pokew &800A,A:goto 120
110 pokew &800D,A:get #3 I$,D$,A:print hex$(A),:if ascii(I$)=2 then close #3:
gosub 150:print "WSAVE";chr$(34);A$;chr$(34);",&";hex$(peekw(&800A));",&";hex
$(peekw(&800D));",&";hex$(A):end
120 for I=1 to ascii(D$)-2:get #3 K$:poke A,ascii(K$):A=A+1:next:goto 110
130 gosub 160:repeat:get #3 I$:print I$;:if inkey$=" " then repeat:
until inkey$<>""
140 until I$="Z":print "ZG":close #3:repeat:until inkey$<>"":return
150 input "WName" A$:return
160 input "From CMT: [Y] or VRM: [N] " A$:print:if A$="Y" then A$="CMT:?" els
e A$="VRM:?"
170 open A$ for input as #3:len 1:return
180 if errl$="R" then resume else if err=25 then A$="?":resume else if err=18
then print "WGTAPE ERROR!" else print "Err";err;"in";errl
190 pokew &73CF,0:end
ASSEMBLER Saturday 21-May-88 20:05:32 Page 1
; VRMHND Listing
1 ; *** VIDEO RAM DISK HANDLER ***
2 ; OVLADAC NOVEHO ZARIZENI "VRM:" ( "VRM hand.CM" )
3 ; PRIZPUSOBENY PRO PRACI S ASSEMBLEREM "EDTASMv80".
4 ; ZARIZENI VRM LZE OTEVRIT, ZAVRIT A LZE POUZIT
5 ; PRIKAZY PUT A GET. OSTATNI PRIKAZY POUZIT NELZE,
6 ; PROTOZE NEJSOU POTREBNE ( EDTASM JE NEPOUZIVA )
7 ; A TENTO OVLADAC SE SNAZI BYT CO NEJKRATSI.
8 ;
9 ; (C) LZR Soft, MAY 1988
10 ;
11 ORG 0FC00H
12 DSPLTA EQU 105CH ;TISK TEXTU
13 DSPLTB EQU 105BH
14 DSPCHB EQU 1082H ;TISK ZNAKU
15 PADVRM EQU 0E01H ;PLNENI VRAM
16 MVACS EQU 13DDH ;CURSOR(D,E)
17 STCCHR EQU 0E55H ;DEFINOVANI ZNAKU
18 VIEWP EQU 135CH ;NASTAVENI OKENKA
19 VIEWRS EQU 1353H
20 PB EQU 0010H ;PUT BYTE TO VRAM
21 GB EQU 0018H ;GET BYTE FROM VRAM
22 VRECORD EQU 5EE5H ;POUZE PRO FX:
23 VFIND EQU 6146H ;SEPARATORY V PRINT
24 FLAG EQU 708EH ;PRIZNAKY
25 TOP EQU 2800H ;POSLEDNI ADRESA DISKU
26 ACECHI EQU 0845H ;NACTENI ZNAKU
27 GTCAPC EQU 0085H ;KONVERZE NA VELKA PISMENA
28 ID EQU 7120H ;HLAVICKA SOUBORU
29 TPFILE EQU 73D1H ;IMPLICITNI SOUBOR
30 PRVNI EQU 18 ;PRVNI VOLNY BYTE VRAMDISKU
31 ;--------------------------------------------------
32 START1: JR INIT ;STUDENY START
33 ANSW: DB 0 ;ODPOVED PRO BASIC
34 START2: JR MENU ;HORKY START
35 INIT: LD HL,TXIN ;INICIALIZACE OBRAZOVKY
36 CALL DSPLTA ;A TISK UVODNI HLASKY
37 CALL ACECHI ;NACTENI ZNAKU
38 CALL GTCAPC
39 CP 32 ;NENI-LI TO RIDICI ZNAK,
40 CALL NC,DSPCHB ;TAK HO VYTISKNI
41 CP 'Y' ;INICIALIZACE?
42 LD A,0 ;CO
43 LD HL,0 ;ODKUD
44 LD BC,TOP ;KOLIK
45 CALL Z,PADVRM ;ZAPLN VRAM
46 JR INIST
47 MENU: LD HL,XINIT
48 CALL DSPLTA ;INICIALIZACE OBRAZOVEK
49 CALL DSPCHB ;TISK CTRL ZNAKU
50 PUSH HL ;USCHOVA ADRESY KDE TISK SKONCIL
51 LD BC,0501H
52 LD HL,XCHR
53 CALL STCCHR ;PREDEFINOVANI 5TI ZNAKU
54 LD HL,071FH
55 LD DE,0010H
56 CALL VIEWP ;NASTAVENI OKENKA
57 POP HL ;ODKUD TISKNOUT
58 CALL DSPLTA ;TISK MENU
59 PUSH HL
60 CALL VIEWRS ;ZRUSENI OKENKA
61 LD DE,0D10H
62 CALL MVACS ;UMISTENI KURZORU
63 POP HL
64 CALL DSPLTA ;TISK DOTAZU
65 MENU1: CALL ACECHI ;VOLBA
66 CP '1'
67 JR C,MENU1 ;MALO->ZPET
68 CP '8'
69 JR NC,MENU1 ;MOC->ZPET
70 LD (ANSW),A ;USCHOVA PRO BASIC
71 CALL DSPCHB ;TISK CISLICE 1 AZ 7
72 ;--------------------------------------------------
ASSEMBLER Saturday 21-May-88 20:05:32 Page 2
; VRMHND Listing
1 INIST: DI ;PRIPOJENI 'VRM:' K .BF
2 LD HL,DEFDEV
3 LD (73CFH),HL
4 RET
5 ;--------------------------------------------------
6 DEFDEV: DB 0 ;BEZNE ZARIZENI
7 DW 0 ;POSLEDNI ZARIZENI
8 DM 'VRM' ;JMENO ZARIZENI
9 ;
10 ; DEFINOVANI RUTIN PRO VYKONAVANI JEDNOTLIVYCH PRIKAZU
11 ;
12 DW VOPEN,VCLOSE,VPRINT,VPUT
13 DW VINPUT,VGET,VRECORD,VFIND
14 EPOI: DW 0 ;UKAZATEL KONCE DAT
15 COUNT: DW 0 ;POCITADLO DAT
16 ;------------------------------------------------------
17 ;
18 ; **** RUTINA 'OPEN' ****
19 ;
20 VOPEN: CALL CEPO ;OBNOVA EPOI
21 LD A,10H ;"FOR INPUT"
22 CALL SYSFMT
23 LD A,D ;"OPEN FOR..."
24 CP 22H ;"INPUT" ?
25 JR NZ,NOINP ;NE->VEN
26 LD HL,(EPOI)
27 LD A,H
28 OR L ;PRAZDNI DISK ?
29 LD A,170
30 SCF
31 RET Z ;ANO -> Err 170 in ...
32 LD A,40H ;POZADAVEK .DT
33 LD (TPFILE),A
34 LD HL,0
35 RST GB ;NAHRANY TYP
36 CALL 48D2H ;KONVERZE
37 LD C,A
38 LD A,(TPFILE)
39 AND C ;SROVNANI
40 OPERR: LD A,106
41 SCF
42 RET Z ;NENI .DT -> Err 106 in ...
43 CALL EXVMCM
44 LD HL,1 ;OD JMENA
45 LD DE,ID+18 ;KAM
46 PUSH DE
47 LD B,9 ;KOLIK
48 CALL 144BH ;VM --> CM
49 XOR A
50 LD (DE),A ;VZDY UKONCENE
51 POP DE ;1. JMENO
52 LD HL,ID+1 ;2. JMENO
53 CALL 1765H ;SROVNEJ
54 CALL EXVMCM ;VRAT JMENO
55 LD A,170
56 RET C ;"Err 170 in ..." MISTO "Skip ..."
57 CALL EXVMCM
58 CALL 6A4DH ;"Find ..."
59 CALL EXVMCM
60 JR OSET
61 NOINP: CP 31H ;"OUTPUT" ?
62 JR NZ,NOOUT ;NE->VEN
63 CALL TYPDT
64 JR Z,OPERR ;JINY NEZ .DT
65 CALL EXVMCM
66 LD HL,TOP ;K DISPOZICI JE
67 LD (EPOI),HL ;CELY DISK
68 LD HL,FLAG
69 RES 4,(HL) ;BYLO "FOR OUTPUT"
70 OSET: LD HL,PRVNI ;ZACATEK DAT
71 OZAP: LD (COUNT),HL ;DO CITACE
72 LD HL,0 ;JMENO VM --> CM
ASSEMBLER Saturday 21-May-88 20:05:32 Page 3
; VRMHND Listing
1 LD DE,ID
2 LD B,18
3 CALL 144BH
4 OR A
5 RET
6 NOOUT: ;NEBYLO ANI "FOR INPUT" ANI "FOR OUTPUT"
7 CHYPR: LD A,69H ;CHYBNY PRISTUP
8 SCF
9 RET ;Err 105 in ...
10 ;
11 ; **** RUTINA 'CLOSE' ****
12 ;
13 VCLOSE: LD A,(FLAG)
14 BIT 4,A ;BYL "INPUT" ?
15 JR NZ,NULSYS ;ANO
16 LD HL,(COUNT) ;KAM DOCITAL
17 CALL ZEPO ;ZAPISE
18 NULSYS: XOR A
19 LD (FLAG),A ;NOVE KOLO
20 RET
21 ZEPO: LD (EPOI),HL
22 CALL EXVMCM
23 LD (ID+16),HL ;ZA HLAVICKU
24 CALL EXVMCM
25 RET
26 CEPO: CALL EXVMCM
27 LD HL,(ID+16) ;VYBER
28 LD (EPOI),HL ;A ZAPIS
29 CALL EXVMCM
30 RET
31 SYSFMT: PUSH HL
32 LD HL,FLAG
33 OR (HL) ;SETOVANI BITU
34 LD (HL),A ;A ZAPIS BYTU
35 POP HL
36 RET
37 EXVMCM: EX AF,AF' ;ZAMENA JMENA V RAM A VRAM
38 EXX
39 LD B,18
40 LD HL,0
41 LD DE,ID
42 EVC: RST GB
43 LD C,A
44 LD A,(DE)
45 RST PB
46 LD A,C
47 LD (DE),A
48 INC HL
49 INC DE
50 DJNZ EVC
51 EXX
52 EX AF,AF'
53 RET
54 TYPDT: LD A,(ID) ;TEST TYPU SOUBORU
55 BIT 2,A
56 RET
57 ;
58 ; **** RUTINA 'PUT' ****
59 ;
60 VPUT: LD DE,(COUNT) ;KAM
61 CALL 6BE2H ;TEST "FOR..."
62 EX DE,HL
63 LD C,0 ;CM --> VM
64 CALL SPACE ;PRESUN
65 EX DE,HL
66 LD (COUNT),DE ;ZAPIS KONCE
67 RET
68 ;
69 ; **** RUTINA 'GET' ****
70 ;
71 VGET: LD DE,(COUNT) ;ODKUD
72 EX DE,HL
ASSEMBLER Saturday 21-May-88 20:05:32 Page 4
; VRMHND Listing
1 CALL 6BEAH ;TEST "FOR..."
2 LD C,1 ;VM --> CM
3 CALL SPACE ;PRESUN
4 LD (COUNT),HL ;ZAPIS KONCE
5 EX DE,HL
6 RET
7 ROZDIL: PUSH HL
8 PUSH BC
9 LD BC,(EPOI) ;MEZ
10 OR A
11 SBC HL,BC ;CY=CITAC<MEZ
12 POP BC
13 POP HL
14 RET
15 SPACE: CALL ROZDIL
16 JR NC,SP2 ;PRETEKL
17 BIT 0,C ;TEST SMERU
18 JR Z,SP1 ;PUT
19 RST GB
20 LD (DE),A
21 JR SP2
22 SP1: LD A,(DE)
23 RST PB
24 SP2: INC DE ;POSUN CITACU
25 INC HL
26 DJNZ SPACE
27 DEC HL ;KOREKCE
28 CALL ROZDIL ;TEST PRETECENI
29 INC HL ;NAVRACENI
30 CCF
31 RET NC ;VPORADKU
32 LD A,(FLAG)
33 BIT 7,A ;BYLO VYTISTENO?
34 RET NZ ;ANO
35 SET 7,A ;BUDE TISK
36 LD (FLAG),A
37 PUSH HL
38 LD HL,XOVE
39 CALL DSPLTA
40 POP HL
41 RET
42 ;
43 ; **** RUTINY 'INPUT' A 'PRINT' ****
44 ;
45 VINPUT: ;TYTO PRIKAZY HANDLER NEZNA
46 VPRINT: LD A,105
47 SCF
48 RET ;Err 105 in ...
49 XVOE: DB 'No space',13
50 TXIN: DB 20,26,20,21,23,23,24,'Initialize VRM: ? ',0
51 XINIT: DB 26,20,26,20,21,12,0,32,1,2,3,4,5,0
52 DB '+------------------------+',29,29,31,'|'
53 DB '| Initialize EDTASM 1 |',29,29,31,'|'
54 DB '| Into EDTASM',9,9,29,29,'2 |',29,29,31,'|'
55 DB '| Save VRM: to CMT: 3 |',29,29,31,'|'
56 DB '| Fill VRM: from CMT: 4 |',29,29,31,'|'
57 DB '| Make final .CM',9,29,29,'5 |',29,29,31,'|'
58 DB '| Listing',9,9,29,29,'6 |',29,29,31,'|'
59 DB '+------------------------+',0
60 DB 'Your choice ? ',0
61 XCHR: DB 0,8CH,80H,84H,0ECH,0,0,0,0DCH,90H,9CH,14H
62 DB 0D0H,0,0,0,4,84H,4,0,84H,0,0,0,0C0H,0,0DCH
63 DB 54H,0DCH,0,0,0,68H,48H,6CH,48H,4CH,0,0
64 ZZZZZ: ;
65 ;
66 ; ZNAKY V MENU '+' , '-' A '|' NAHRADTE GRAFICKYMI SYMBOLY
67 ;
68 END START
ASSEMBLER Saturday 21-May-88 20:05:32 Page 5
; VRMHND Symbol table
Name Address Type Name Address Type
ACECHI 0845 E ANSW FC02 L
CEPO FD27 L CHYPR FD04 L
COUNT FC84 L DEFDEV FC6C L
DSPCHB 1082 E DSPLTA 105C E
DSPLTB 105B E EPOI FC82 L
EVC FD46 L EXVMCM FD3C L
FLAG 708E E GB 0018 E
GTCAPC 0085 E ID 7120 E
INIST FC64 L INIT FC05 L
MENU FC25 L MENU1 FC53 L
MVACS 13DD E NOINP FCDA L
NOOUT FD04 L NULSYS FD15 L
OPERR FCAD L OSET FCF1 L
OZAP FCF4 L PADVRM 0E01 E
PB 0010 E PRVNI 0012 E
ROZDIL FD7E L SP1 FD97 L
SP2 FD99 L SPACE FD8A L
START1 FC00 L START2 FC03 L
STCCHR 0E55 E SYSFMT FD34 L
TOP 2800 E TPFILE 73D1 E
TXIN FDC5 L TYPDT FD53 L
VCLOSE FD08 L VFIND 6146 E
VGET FD6C L VIEWP 135C E
VIEWRS 1353 E VINPUT FBB8 L
VOPEN FC86 L VPRINT FDB8 L
VPUT FD59 L VRECORD 5EE5 E
XCHR FED7 L XINIT FDDF L
XVOE FDDC L ZEPO FD1A L
ZZZZZ FEFF L
*** Assembler statistics ***
Errors detected: 00000
Document lenght: 17CF/ 06095 Bytes
Working area: 2FBD/ 12221 Bytes
Final file size: 0300/ 00768 Bytes
Datum poslední editace: 3. 6. 1988
========== Článek napsal Roman Štec z teamu LZR Soft ===========