Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

This edelev13.c free text editor program is here

0 views
Skip to first unread message

ericmatteson...@hotmail.com

unread,
Sep 30, 2007, 8:08:57 PM9/30/07
to
This free edelev13.c text editor program is designed to work
directly with Linux.
An inverse header file is needed to compile this
on Microsoft Windows.
September 30th at 5:02 P.M.
This is edelev13.c free text editor program
in source code form */
// This is the first line of this program
// edelev13.c text editor program
// use
// gcc -Wall edelev13.c -lncurses -o edelev13.out
// ./edelev13.out
// to compile and run this program at Linux bash
// command prompt.
// changeing edelev12.c to edelev13.c by
// removing font and adding text cursor
// movers.
// Save THIS file as edelev13.c
// ncurses.h already includes stdio.h
#ifndef SKYWALKERLU
#ifndef SKYWALKERTE
#include <ncurses.h>
#endif
#endif
// This edelev13.c is written by Eric Matteson
// This edelev13.c text editor program uses ncurses.h to
// run on Linux. edelev13.c is written by Eric Matteson.
// summarize ncurses.h at beginning
// initscr() cbreak() noecho() keypad(stdscr,TRUE)
// ??? nodelay(stdscr,TRUE) ?? scrollok(stdscr,TRUE)
// start_color() init_pair(int,const int,const int)
// --
// for each character
// aintchr = getch() (aintchr != ERR)
// move(yz,xz) starting at (0,0)
// int COLOR_PAIR(int)
// attron(int) attroff(int)
// addch(ch)
// -----
// at end of every page to update
// display use refresh()
// at end of entire program use clear() endwin()
// --
// This edelev13.c text editor program source code
// is copyright C 2007 by Eric Matteson. Permission
// is hereby granted to copy this source code
// file edelev13.c and to publish it on
// the Internet and to use it at least
// for non-profit use.
// ....
// gcc -Wall edelev13.c -lncurses -o edelev13.out
// ./edelev13.out
// to compile and run edelev13.c for LINUX.
#ifdef SKYWALKERTE
// Not ncurses.h
// include Microsoft Windows Console App
// replacements for missing ncurses.h
// functions here if symbol SKYWALKERTE exists.
// This version of inverse ncurses.h is designed
// for Microsoft Windows.
#include<windows.h>
#include<stdio.h>
#include<conio.h>
int mcfgcolor[] = { 0,
FOREGROUND_RED,FOREGROUND_GREEN,0,
FOREGROUND_BLUE,0,0,0 };
int mcbgcolor[] = { 0,
BACKGROUND_RED,BACKGROUND_GREEN,0,
BACKGROUND_BLUE,0,0,0 };
int ncfgcolor[16];
int ncbgcolor[16];
int ncolorshift[2];
// ---------------------
int ERR = -1;
int COLOR_BLACK = 0;
int COLOR_RED = 1;
int COLOR_GREEN = 2;
int COLOR_YELLOW =3;
int COLOR_WHITE = 7;
int COLOR_BLUE = 4;
int COLOR_MAGENTA = 5;
int COLOR_CYAN = 6;
int lpncdword[4];
typedef struct ncurpo
{
int _maxx;
int _maxy;
int colortal[80];
char ncletters[4000];
int _cury;
int _curx;
};
struct ncurpo *stdscr;
struct ncurpo istdscr;
HANDLE nhansuse;
CONSOLE_SCREEN_BUFFER_INFO ncursuse;
void move(int sncurY,int sncurX)
{
istdscr._cury=sncurY;
istdscr._curx=sncurX;
}
void addch(int chsuse)
{
int lettersub;
lettersub=istdscr._cury;
lettersub=lettersub*80;
lettersub=lettersub+istdscr._curx;
istdscr.ncletters[lettersub]=(char)chsuse;
}
void initscr()
{
stdscr = & istdscr;
istdscr._maxx = 79;
istdscr._maxy = 24;
nhansuse = GetStdHandle(STD_OUTPUT_HANDLE);
// other initializations here
}
int COLOR_PAIR(int suscp)
{
int cpncnext,cpncright,cpncleft;
cpncleft=istdscr.colortal[suscp*2];
cpncright=istdscr.colortal[suscp*2 + 1];
cpncnext=0;
cpncnext=cpncnext+ncfgcolor[cpncleft];
cpncnext=cpncnext+ncbgcolor[cpncright];
if(suscp >= 2)
{
if(cpncnext != ncolorshift[1])
{
ncolorshift[0]=ncolorshift[1];
ncolorshift[1]=cpncnext;
}
}
if(suscp < 2)
{
ncolorshift[0]=ncolorshift[1];
ncolorshift[1]=cpncnext;
}
return 0;
}
void attron(int attoseek)
{
}
void attroff(int attfseek)
{
}
void init_pair(int ipncs,int ipncFG,int ipncBG)
{
istdscr.colortal[ipncs*2]=ipncFG;
istdscr.colortal[ipncs*2+1]=ipncBG;
}
void scrollok(struct ncurpo *nrp1101,int iz1101)
{
}
void keypad(struct ncurpo *nrp1103,int iz1103)
{
}
void start_color()
{
int ncscol;
ncscol=0;
while(ncscol < 80)
{
istdscr.colortal[ncscol]=0;
ncscol++;
}
ncscol=0;
while(ncscol < 4000)
{
istdscr.ncletters[ncscol]='\0';
ncscol++;
}
ncolorshift[0]=0;
ncolorshift[1]=0;
ncfgcolor[0]=mcfgcolor[0];
ncfgcolor[1]=mcfgcolor[1];
ncfgcolor[2]=mcfgcolor[2];
ncfgcolor[3]=mcfgcolor[2]+mcfgcolor[1];
ncfgcolor[4]=mcfgcolor[4];
ncfgcolor[5]=mcfgcolor[4]+mcfgcolor[1];
ncfgcolor[6]=mcfgcolor[4]+mcfgcolor[2];
ncfgcolor[7]=mcfgcolor[4]+mcfgcolor[2]+mcfgcolor[1];
ncbgcolor[0]=mcbgcolor[0];
ncbgcolor[1]=mcbgcolor[1];
ncbgcolor[2]=mcbgcolor[2];
ncbgcolor[3]=mcbgcolor[2]+mcbgcolor[1];
ncbgcolor[4]=mcbgcolor[4];
ncbgcolor[5]=mcbgcolor[4]+mcbgcolor[1];
ncbgcolor[6]=mcbgcolor[4]+mcbgcolor[2];
ncbgcolor[7]=mcbgcolor[4]+mcbgcolor[2]+mcbgcolor[1];
}
void refresh()
{
int ncrefctr,ncrebctr;
int ncref380;
char* lprefnc;
char onewrnc[1];
ncrefctr=0;
ncref380 = 80;
ncrebctr=0;
while(ncrefctr < 2000)
{
lprefnc=istdscr.ncletters+ncrefctr;
ncursuse.dwCursorPosition.Y = ncrebctr;
ncursuse.dwCursorPosition.X = 0;
SetConsoleCursorPosition(nhansuse,
ncursuse.dwCursorPosition);
if(ncrefctr >= 1920)ncref380 = 76;
FillConsoleOutputAttribute(nhansuse,ncolorshift[0],
ncref380,ncursuse.dwCursorPosition,lpncdword);
fwrite(lprefnc,ncref380,1,stdout);
ncrebctr = ncrebctr + 1;
ncrefctr = ncrefctr + 80;
}
ncursuse.dwCursorPosition.Y = istdscr._cury;
ncursuse.dwCursorPosition.X = istdscr._curx;
SetConsoleCursorPosition(nhansuse,
ncursuse.dwCursorPosition);
ncrefctr = istdscr._cury;
ncrefctr = ncrefctr * 80;
ncrefctr = ncrefctr + istdscr._curx;
onewrnc[0]=istdscr.ncletters[ncrefctr];
FillConsoleOutputAttribute(nhansuse,ncolorshift[1],
1,ncursuse.dwCursorPosition,lpncdword);
fwrite(onewrnc,1,1,stdout);
ncursuse.dwCursorPosition.Y = istdscr._cury;
ncursuse.dwCursorPosition.X = istdscr._curx;
SetConsoleCursorPosition(nhansuse,
ncursuse.dwCursorPosition);
}
void clear()
{
// needed
}
void endwin()
{
// CloseHandle(nhansuse);
// ***ERROR*** CloseHandle sets to top of list
// when I wanted bottom.
}
void noecho()
{
}
void cbreak()
{
}
// Bottom of conditional replacements for ncurses.h
#endif
// common edelev13.c for Linux resumes
// print delay prtretrace prtdouter prtinnerd
const int prtretrace = 80;
int prtdouter = 31;
int prtinnerd = 64;
// end of print delay
int vidrev = 0;
const int xxsv = 50;
const int xsv = 62;
// for Linux XWindows use
// nzudletter = 0
// nzbitflip = 1
// nzskip62 = 0
int nzudletter = 0;
int nzbitflip = 0;
int nzskip62 = 0;
const long isansihere = 0;
// four temporary variables to shorten
// long lines
int nclem,ncrim;
char cncle,cncri;
// ------
// needs to recieve variables that were relocated from
// subroutines here
// from regkey2176
char rkeychr,rkeytype;
// --
// from open2520
long alsel520,lval2520,yp2520,ikey;
char kelp2,keval2;
char* albase20;
// --
// from writez2754
long openselwd,ldalb,nine2754t,ten2754t;
char wfn2755[82];
char *wnine2754;
// --
// from ron52640
long opendell,ldal,lfdal;
long rcmdctr,commandgui;
long chctr40,chreqlen;
char* chlevbase;
char* chsixbase;
char* xxasub;
char* xxabase;
char keytype5,keychar5,keycmd5;
char chchr40;
char fn2641[82];
char wfn2756[82];
// end of relocated variables list
// needs regular global variables
int dagra,archkey,archtype,rahkctr,freddy;
// dagra jump now with key
// freddy is where next key goes
int pahdr[] = { 0102,0115,0376,0127,0,0,
0,0,0,0,076,0,0,0,050,0,0,0,
0100,02,0,0,070,01,0,0,01,0,
01,0,0,0,0,0,0300,0127,0,0,
0304,016,0,0,0304,016,0,0,0,0,
0,0,0,0,0,0,
0,0,0,0,0377,0377,0377,0 };
// edelev13.c needs a single pointer to all
// fixed text strings.
char weda2469[] = { '\015','\012' };
char litharg[] = "000568.."
// 62 35 63 30 64 68 65 23 66 39
// 67 48 68 60 69 69 70
"000000..000008..000016..000024.."
"000031..000038..000041..000043..000045.."
"000049..000053..000056..000061..000067..000072.."
"000078..000086..000088..000093.."
"000098..000102..000109..000114..000119..000126.."
"000129..000132..000136.."
"000141.."
// 000207 is 30th
"000207..000267..000327..000387..000447.."
"000507..000567..000627..000687..000747.."
"000807..000867..000927..000987..001047.."
"001107..001167..001227..001287..001347.."
"001407..001467.."
// 001608 is 53rd
"001527..001608..001648..001688.."
"001708..001748..001788..001818.."
"001878..001928..001982..002017..002047..002115"
"..002138..002177..002215..002275..002344.."
// 002177 is 67nth
// begin actual text at (last numbers line number+1)*8
// estimated starting offset is 568
"unknown command!insertb insert delete wc m k tof b"
"ot up down input quit print!replace v open save n"
"ew change find list inputc uc l"
"c gui guiy!"
"Vote to abolish compulsory jury duty. "
" .!"
"a.sAve.as........888.Zacks.Death.Star.is.helping.Linux..888!"
"b.Bot............888888888888888888888888888888888888888888!"
"c.list.Commands..888......8888888.88.....8888.88.edelev13.c!"
"d.set.bkgnD......888..88..88...88.88.....8888.8888888888888!"
"e.Exit...........888......88.8.88.8888.888888.8888....88888!"
"f.set.upleFt.....888..88..88.8..8.8888.888888.8888888888888!"
"g.set.lowriGht...888..88..88.88...8888.888888.8888.text.888!"
"h.rigHtmost......88888888888888888888888888888888.editor.88!"
"i.fInd...........888888888888888888888888888888888888888888!"
"l.Load...=.Hex...88...88888......88......88......88.....888!"
"m.upleft.Move....88.8...888.888..88..88..88..88888888.88888!"
"n.New............88.888.888......88......88.....88888.88888!"
"o.Open...........88.8...888.8..8888..88..88..88888888.88888!"
"p.upleft.coPy....88...88888.88...88..88..88..88888888.88888!"
"q.Quit...........888888888888888888888888888888888888888888!"
"r.Return....x.Xmarginset....y.Ylinenumber..................!"
"t.Tof...............EVEN.IF.THERE.IS.A.WAR.NOW.............!"
"u.Uppercase.........VOTE.TO.ABOLISH.THE.US.MILITARY.DRAFT..!"
"v.edelev13.c.........AND.ITS..REGISTRATION...NOW...........!"
"w.edluke13.c....by.voting.for.an.all.volunteer.jury.system.!"
"line.21.....8...in.every.court.in.your.state.and.U.S.......!"
"line.22..edelev13.c..for.Linux.ncurses.h..September.+-.2007!"
"HOME GETS MENU ANTI-DRAFT EDELEV13.C "
" xxx yyyyyyy vv lllllll HOME GETS MENU!"
"Enter filename to be saved by save as!"
"Enter filename to be saved by exit!"
"Save file first y !"
// save as 53 exit 54 55 exit save question
// 56 bkgnd 57 open 58 load 59 find
"enter one character for background!"
"Enter filename to be opened for reading!"
"Enter filename to be loaded!"
"Enter leftmost portion of line to find exce"
"pt blanks!Enter line"
" number between 1 and last line!"
"Enter a command from the list of comma"
"nds above .!"
"Enter line to be inserted before!"
"Enter line to be inserted!"
"input mode. Press enter twice in a row"
" (zero length line) when done!"
"is to be replaced with!"
"is zero length line correct ? (y or n)!"
"change leftmost portion except blanks!"
// 67 change
"press just enter to continue or "
" h enter to halt list!"
"inputc mode. Press enter twice in a row "
"(zero length line) when done!";
// edelev13.c
// Eric Matteson.
// five years after CS936.
// edelev05.cpp required ansi.sys in config.sys
// 41A0 41A8 41B0 41B8
// 41C0 41C8 41D0 41D8
// 41E0 41E8 41F0 41F8
const char grucursor[] = { '\0','\174','\01','\170',
'\03','\160','\07','\140','\17','\100','\37','\0',
'\76','\0','\174','\0',
'\0','\070','\00','\060',
'\01','\140','\03','\100','\07','\00','\16','\0',
'\34','\0','\70','\0' };
long array939[1024];
int wbe2469;
int edhanb;
int edhanw;
int ncurdey;
long x,y,xp,yp;
long prindiff,prinjill,moux,mouy;
long insel,curcommand,howmanycmd;
// 4200 edhanb 4208 edhanw 4210 x 4218
// 4220 y 4228 4230 xp 4238
// 4240 yp 4248 4250 prindiff 4258
// 4260 prinjill 4268 4270 moux 4278 mouy
// 4280 insel 4288 curcommand 4290 howmanycmd
// 4298 alsel
// 42A0 ytaelon 42A8 nzerror 42B0 a80w
// 42B8 afilelen
// 42C0 ypheight 42C8 cmdheight 42D0 42D8
long alsel,ytaelon,nzerror,a80w;
long afilelen;
long ypheight,cmdheight;
long chnext,chdoc,ch,insertype;
long inspg,marginselect,alocalh;
long findbase,findlen;
long prindiffprv,uprighty,lowlefty;
long tnymouxprv,tnymouyprv;
long mouallowlocal,mouallowglobal;
// 42E0 chnext
// 42E8 chdoc 42F0 ch 42F8 insertype
// 4300 inspg 4308 marginselect
// 4310 alocalh 4318
// 4320 findbase 4328 findlen
// 4330 prindiffprv 4338 uprighty
// 4340 lowlefty 4348 tnymouxprv
// 4350 tnymouyprv 4358
// 4360 mouallowlocal 4368 mouallowglobal
// 4370 4378
// 4380 yre 4388 4390 jysrc
// 4398 tzby
// 43A0 jyheight 43A8 yyectr 43B0 jydiff
// 43B8 lowleftc
// 43C0 jydest 43C8 uprightx
// 43D0 lowleftx 43D8 bkgnd
// 43E0 helpfindtest 43E8 jxwidth
// 43F0 xe 43F8
// 4400 jxdiff 4408 readfnskipzur
// 4410 lowleftb 4418 uppercase
// 4420 comeofdelay 4428 afilelenprv
// 4430 moubutprv 4438 mouctr
long yre,jysrc,tzby,jyheight;
long yyectr,jydiff;
long lowleftc,jydest;
long uprightx,lowleftx,bkgnd;
long helpfindtest,jxwidth;
long xe,jxdiff,readfnskipzur;
long lowleftb,uppercase,comeofdelay;
long afilelenprv,moubutprv,mouctr;
long jynext,yjn,jyctr,tzrx,xxjctr;
long prevfound;
long rep0;
long evdk;
long eofi;
long fp04;
int fp14;
long fl06;
long hv0c;
long pose;
char one2;
// 4440 jynext 4448 yjn
// 4450 jyctr 4458 tzrx
// 4460 xxjctr 4468 prevfound
// 4470 4478
// 4480 rep0 4488 evdk
// 4490 eofi 4498 fp04
// 44A0 fl06 44A8 hv0c
// 44B0 pose 44B8 one2
// 44C0 44C8
// 44D0 44D8
// 44E0 *elevrd 44E8 44F0 44F8
char* elevrd;
long wordctra;
// the next two numbers should be equivelant
const long zoar = 24990310;
char aptivus[24990310];
// -----------------------------------------
const long hiskwid = 16;
char hiskrba[16];
// -----------------------------------------
int iidk512[512];
char ceescreen[2080];
int nzshift;
int iswid72;
struct powercur
{
int neutx;
int neuty;
};
int sf;
long* ttr939;
char* sqlef965;
char* sqrgt965;
struct powercur hottyx;
int scnum,scrdepth,xwolop,tinyoar;
int zandtogm,rjkey,ckey,xwxwid,xwyhgt;
int color132,color133,color134;
char* adn = NULL;
int prevmode,runmode;
char crz0160[16383];
// in crz0160 (a80w)*(subscript-1) points to
// 1 mainline 2 secondline 3 delline
// 4 insertline
// 5 prnline 6 findline
// 7 tempfilename 8 permfilename
// 9 homegetsmenuline 10 not used in c++
// 11 command line input line.
// 12-55 is 44 lines of upside down data.
// need reedstruct rs in main.
// initialization needed for
// fileposlh04 repeat00 handlevalue0c
// maxreclen1c
// list subroutines
// top of keep #1
void reedline();
void readone();
void arbcopy(char*,char*);
void kfcopy(char*,char*);
void prtx(char*,char*);
char* alselset(char*,long);
void aptwrite(char*,long);
void aptread(char*,long);
void numberprn(char*,long,long,long,long);
void rprline(long,long,char*,long,long);
void cvgcline(char*,long,long,long);
void chrvgapage(char*,long);
void clearline(char*);
void aptdelete();
void aptinsert(char*);
void lalocal12(char*);
void laput12(char*);
long clenval(char*);
// command line section
long cmdlen(char*);
void cmdhmcur();
void kfclev(char*);
void aptlocloc(char*,char*,long);
void commandprn();
// void commandkey();
void deletemany(long);
void fn1113();
// end of command line section
void ikx1864(char*,long,long);
void iek2000(char*,long);
void gek2040(char*,long);
void dkx2050(char*,long);
void regkey2176();
void cls2330();
void clralocal2346();
void kfcdark(long,char*);
void kfcl(long,char*);
void kfc2398();
long posdigit(char,char*);
long numberget(char*,long,long,long);
char* litrlc(char*,long);
void read2426(char*,long);
void llpriz(char*,long);
void lpriz();
void write2470();
void open2520(char*,long);
void new2608();
char sixcase(char);
void writez2754(char*);
long find2822(char*,long,long);
void john2880(char*,long,long,long);
void john2938(char*);
// cut
void zahexline(char* zbbelevt,int zathiswid,
int zaelevw);
void zahexgroup(char* zaz55ptr,int gclinesel,
int gcelevwid);
// rejoin
void delefthh(char* absathh,long lenlhh,long hhone);
long lefmowid(char* abslmw,long lenlmw);
long wordslin(char* wclinlp,long wclinwid);
void ron52640(char*,char);
// end list subroutines edelev02.cpp
// beginning of DPMS939 **** within edelev13.c
void gettwoforone(long*,long*,long*);
long onefromtwo(long,long);
void get16from8(long*,long*);
void get8from16(long*,long*);
long subtract256(long*,long*,long*);
long add256(long*,long*,long*);
long shifr256(long*,long*);
void mov88(long*,long*);
void mpy256(long*,long*,long*);
void posdiv256(long*,long*,long*);
long findahandle(long*);
long ansrdigit(char*,char*);
long ansrinta(char*,long,long,long);
void dpms939(long*);
// end of keep #1
// end of edelev05.c listing of subroutines 0362
int sockeyline(int,int,int*,char*);
// next four need fixing
void draw1712(int x1712,int y1712,char c1712);
void draw80(int y80);
void draw2080(int cpx2080,int cpy2080);
void draw2083(struct powercur* yottx);
// ....
void powscroll(char* sow2080);
void powdraw(struct powercur* rottyx,
char* cow2080,char net80);
void powcline(char* owcrec,int iwclen);
void powposition(struct powercur* pcuu,
int ppcx,int ppcy);
// ..-------------..----------------------
// system specific for LINUX
int redcst(int rdspos,int rdswid,
int rdsbase,char* rdsjc);
void iktmany(int* imxt);
void ilinemake(int* iixt,char* xxdd);
int iidoskey(int kkll,int kshifb,
int* ixkeyhold,const char* klinuxcm);
int gagetch(int nzwait);
void print3248();
void print3250(char* cpt3250,int len3250,
FILE* han3250);
// -------------------------------------
int sockeyline(int dagval,int ankey,
int* anthroctr,char* anthline)
{
int sagwood,socx,tankey;
char* alkwood;
sagwood=dagval;
alkwood=alselset(anthline,11);
tankey=ankey & 255;
if(((sagwood&1)==0)&&(sagwood>=26518)&&(sagwood<=28959))
{
if(*anthroctr == 0)
{
clearline(alkwood);
}
if((*anthroctr<80)&&(tankey>31)&&(tankey<127))
{
*(alkwood + (*anthroctr))=(char)tankey;
(*anthroctr)=(*anthroctr)+1;
}
if(((*anthroctr)>0)&&(ankey==8))
{
if((*anthroctr)<80)
{
*(alkwood + (*anthroctr))=(char)32;
}
(*anthroctr)=(*anthroctr)-1;
*(alkwood + (*anthroctr))=(char)32;
}
if((*anthroctr) >= 80)sagwood=dagval+1;
if(ankey == 13)sagwood=dagval+1;
if(ankey == 10)sagwood=dagval+1;
if(ankey == 27)sagwood=dagval+1;
socx=x;
x=(*anthroctr)+1;
cvgcline(anthline,11,(ypheight+1),1);
x=socx;
}
return sagwood;
}
// DPMS939 memory called array939 IS NEXT
// dpms939 requires include <stdio.h> <conio.h>
// **WARNING** set this array to 0 before
// first call to DPMS939
// 00-40h is registers to pass to DOS
// 000 edi 004 esi
// 008 ebp 00C reserved
// 010 ebx 014 edx
// 018 ecx 01C eax
// 020 eip or 0 024 CS: or 0
// 028 eflags 02C esp or 0
// 030 SS: or 0 034 ES: or 0
// 038 DS: or 0 03C reserved
// 040 Reserved 044
// 048 keyupctr 04C ansictrnz
// actual DOS ONLY DPMS is below offset 044h.
// 44 and above is beyond traditional DOS
// 050 - 05F is ansi command storage line
// 060 80 byte line of text console display buffer
// At least the unusedifzero4
// elements must be set to zero
// before first call to DPMS939
// 0b0 handle collection of 64 8 byte handles
// (handle4,unusedifzero4) 0b0-2cf
// 2b0
// 300 collection of 4 32 byte registers for
// 256 bit integer arithmetic
// 300 320 340 360
// 380-39C is registers to pass to 32-bit DPMS
// that do not go to DOS
// 380 edi 384 esi 388 ebp 38C reserved
// 390 ebx 394 edx 398 ecx 39C eax
// 3A0-3AC are used by applications
// 3A0 shold 3A4 3A8 3AC
// 480 484 488 48C
// 490 WM_KEYUPIFZERO 494 WM_KEYVALUE
// 498 reserved 49C reserved
// 4A0-6FF reserved for system use
// 700
// DPMS939 is a pattern to allow 32-bit programs to
// call something that is similar to DOS
// Eric Matteson
// begin subroutines that are called by DPMS939
void gettwoforone(long* dmsw,long* dlsw,long* sdw)
{
long sdwtfo;
sdwtfo = *sdw;
*dlsw = sdwtfo & 65535;
*dmsw = (sdwtfo >> 16) & 65535;
}
long onefromtwo(long ofth,long oftl)
{
return ((ofth << 16) | (oftl & 65535));
}
void get16from8(long* des16,long* src8)
{
long zte16c,zfr8c;
zte16c=0;
zfr8c=0;
while(zfr8c<8)
{
gettwoforone((des16+(zte16c+1)),(des16+zte16c),(src8+zfr8c));
zfr8c=zfr8c+1;
zte16c=zte16c+2;
}
}
void get8from16(long* des8,long* src16)
{
long zte8c,zfr16c;
zte8c=0;
zfr16c=0;
while(zte8c < 8)
{
*(des8+zte8c)=onefromtwo(*(src16+(zfr16c+1)),*(src16+zfr16c));
zte8c ++;
zfr16c = zfr16c + 2;
}
}
long subtract256(long* resus,long* bigs,long* tinys)
{
// returns 32 bit flag code oring
// 80 sign 40 zero 01 carry
long flagzs,carryjs,ctr16ys,bigrzs;
long aesus[16];
long aigs[16];
long ainys[16];
flagzs=70;
carryjs=0;
get16from8(aigs,bigs);
get16from8(ainys,tinys);
ctr16ys=0;
while(ctr16ys < 16)
{
bigrzs=aigs[ctr16ys] - ainys[ctr16ys];
bigrzs=bigrzs-carryjs;
aesus[ctr16ys] = bigrzs & 65535;
carryjs=0;
if((bigrzs & 65536) != 0)carryjs=1;
if(aesus[ctr16ys] != 0)flagzs=6;
ctr16ys=ctr16ys+1;
}
if((bigrzs & 32768) != 0)flagzs=flagzs+128;
if(carryjs != 0)flagzs=flagzs+1;
get8from16(resus,aesus);
return flagzs;
}
long add256(long* resua,long* biga,long* tinya)
{
// returns 32 bit flag code oring
// 80 sign 40 zero 01 carry
long flagza,carryja,ctr16ya,bigrza;
long aesua[16];
long aiga[16];
long ainya[16];
flagza=70;
carryja=0;
get16from8(aiga,biga);
get16from8(ainya,tinya);
ctr16ya=0;
while(ctr16ya < 16)
{
bigrza=aiga[ctr16ya] + ainya[ctr16ya];
bigrza=bigrza+carryja;
aesua[ctr16ya] = bigrza & 65535;
carryja=0;
if((bigrza & 65536) != 0)carryja=1;
if(aesua[ctr16ya] != 0)flagza=6;
ctr16ya=ctr16ya+1;
}
if((bigrza & 32768) != 0)flagza=flagza+128;
if(carryja != 0)flagza=flagza+1;
get8from16(resua,aesua);
return flagza;
}
long shifr256(long* destr,long* srcr)
{
long shifrctr,shifrcyo,shifrcyi,shifrcyd,shifzz;
long destrr[16];
long srcrr[16];
shifzz=70;
shifrctr=15;
shifrcyo=0;
get16from8(srcrr,srcr);
while(shifrctr >= 0)
{
shifrcyi=shifrcyo;
shifrcyd = *(srcrr+shifrctr);
shifrcyo=0;
if((shifrcyd & 1) != 0)shifrcyo=32768;
shifrcyd = shifrcyd >> 1;
shifrcyd=shifrcyd+shifrcyi;
(*(destrr+shifrctr))=shifrcyd;
if(shifrcyd != 0)shifzz=6;
shifrctr=shifrctr-1;
}
get8from16(destr,destrr);
return shifzz;
}
void mov88(long* dest88,long* src88)
{
long ctr88v;
long ashen88[8];
ctr88v=0;
while(ctr88v < 8)
{
ashen88[ctr88v] = *(src88+ctr88v);
ctr88v=ctr88v+1;
}
ctr88v=0;
while(ctr88v < 8)
{
(*(dest88+ctr88v)) = ashen88[ctr88v];
ctr88v=ctr88v+1;
}
}
void mpy256(long* prod,long* slfac,long* srfac)
{
long mpyxctr;
long slfaca[8];
long srfaca[8];
mpyxctr=6;
mov88(slfaca,slfac);
mov88(srfaca,srfac);
subtract256(prod,prod,prod);
while((mpyxctr & 64) == 0)
{
if((srfaca[0] & 1) != 0)add256(prod,prod,slfaca);
mpyxctr=shifr256(srfaca,srfaca);
add256(slfaca,slfaca,slfaca);
}
}
void posdiv256(long* frac,long* numer,long* denom)
{
long divctr,negctr,dshlcy;
long donstzero[8];
long donstone[8];
long divsubtrest[8];
long numerdd[8];
long denomdd[8];
long bignumber[8];
divctr=0;
negctr=0;
mov88(numerdd,numer);
mov88(denomdd,denom);
subtract256(donstzero,donstzero,donstzero);
subtract256(donstone,donstone,donstone);
donstone[0]=1;
mov88(bignumber,donstzero);
mov88(frac,donstzero);
if((*(numer+7))<0)
{
subtract256(numerdd,donstzero,numer);
negctr=negctr+1;
}
if((*(denom+7))<0)
{
subtract256(denomdd,donstzero,denom);
negctr=negctr+1;
}
while(divctr<256)
{
add256(frac,frac,frac);
dshlcy=add256(numerdd,numerdd,numerdd);
add256(bignumber,bignumber,bignumber);
if((dshlcy&1)!=0)add256(bignumber,bignumber,donstone);
dshlcy=subtract256(divsubtrest,bignumber,denomdd);
if((dshlcy & 1) == 0)
{
mov88(bignumber,divsubtrest);
add256(frac,frac,donstone);
}
divctr=divctr+1;
}
if((negctr & 1)!=0)subtract256(frac,donstzero,frac);
}
// i/o subroutines are next
long findahandle(long* dptrh939)
{
long ahctr9,ahres9,ahsub9,ahwhn;
ahwhn=0;
ahres9=0-1;
ahctr9=5;
while((ahctr9 < 64) && (ahwhn == 0))
{
ahsub9=((ahctr9*2)+1)+44;
// handle32 goes to 176+(ahres*2)+0 at open
// and 1 goes to next
// 0 goes to 176+(ahres*2)+4 at close
if(*(dptrh939+ahsub9) == 0)
{
ahres9=ahctr9;
ahwhn=1;
}
ahctr9=ahctr9+1;
}
return ahres9;
}
long ansrdigit(char* ansa,char* ansl32)
{
// ansl32 points to "0123456789ABCDEF0123456789abcdef"
long ansctr,ansvotal;
ansctr=0;
ansvotal=1024;
while(ansctr < 32)
{
if (*ansa == *(ansl32+ansctr))ansvotal=ansctr;
ansctr=ansctr+1;
}
if((ansvotal>15)&&(ansvotal<33))ansvotal=ansvotal-16;
return ansvotal;
}
long ansrinta(char* ansb,long anstar,
long answid,long ansbase)
{
long anbctr,anboff,anbchk,anbint;
anbctr=0;
anbint=0;
anbchk=1024;
while((anbctr < answid) && (anbchk==1024))
{
anboff=anbctr+anstar-1;
anbctr=anbctr+1;
anbchk=ansrdigit((ansb+anboff),
"0123456789ABCDEF0123456789abcdef!!!!");
}
anbctr=anbctr-1;
anbchk = 0;
while((anbctr < answid) && (anbchk < 16))
{
anboff=anbctr+anstar-1;
anbctr=anbctr+1;
anbchk=ansrdigit((ansb+anboff),
"0123456789ABCDEF0123456789abcdef!!!!");
if(anbchk < 16)
{
anbint=anbint*ansbase;
anbint=anbint+anbchk;
}
}
return anbint;
}
// renumbering register offsets for C++ pointers
// 00 edi 01 esi 02 ebp 03 reserved
// 04 ebx 05 edx 06 ecx 07 eax
// 10 eflags 18 keyupcounter
// begin DPMS939
void dpms939(long* ptr39)
{
FILE* file939;
long axres939,axhan939,axreb939,axred939;
long* ptr940;
long* ptr941;
long* ptr942;
char* cptr939;
axres939 = *(ptr39+7);
(*(ptr39+10))=70;
// dpms uses eax=0103h and ebx=0021h and ecx=0 with
// eax in 39c ecx in 398
// ebx in 390h to call dos
if((*(ptr39+(924/4))==259)&&(*(ptr39+(912/4))==33))
{
if((*(ptr39+7)==(6*256))&&(*(ptr39+5)==255))
{
(*(ptr39+10))=70;
(*(ptr39+18)) ++;
axres939=0;
if(*(ptr39+18)>14)
{
(*(ptr39+18))=0;
(*(ptr39+10))=6;
// axres939=getch();
axres939=42;
// getch is no longer available
axres939=(axres939 & 255)+0;
if(axres939 == 224)axres939 = 0;
if(axres939 == 0) (*(ptr39+18))=14;
}
}
if(*(ptr39+7) == (60*256))
{
file939=fopen((char*)(*(ptr39+5)),"wb");
if(file939 == NULL) (*(ptr39+10))=61;
axres939=(int)file939;
axhan939=findahandle(ptr39);
(*(ptr39+(44+(axhan939*2))))=axres939;
(*(ptr39+(44+(axhan939*2)+1)))=1;
axres939=axhan939;
}
if(*(ptr39+7) == (61*256))
{
file939=fopen((char*)(*(ptr39+5)),"rb");
if(file939 == NULL) (*(ptr39+10))=61;
axres939=(int)file939;
axhan939=findahandle(ptr39);
(*(ptr39+(44+(axhan939*2))))=axres939;
(*(ptr39+(44+(axhan939*2)+1)))=1;
axres939=axhan939;
}
if(*(ptr39+7) == ((61*256)+1))
{
file939=fopen((char*)(*(ptr39+5)),"rb+");
if(file939 == NULL) *(ptr39+10)=61;
axres939=(int)file939;
axhan939=findahandle(ptr39);
*(ptr39+(44+(axhan939*2)))=axres939;
*(ptr39+(44+(axhan939*2)+1))=1;
axres939=axhan939;
}
if(*(ptr39+7) == (62*256))
{
axreb939 = *(ptr39+4);
axhan939 = *(ptr39+((axreb939*2)+44));
*(ptr39+((axreb939*2)+44+1))=0;
file939=(FILE*)axhan939;
fclose(file939);
}
if(*(ptr39+7) == (63*256))
{
axreb939 = *(ptr39+4);
axhan939 = *(ptr39+((axreb939*2)+44));
if(axreb939 > 4)file939=(FILE*)axhan939;
if(axreb939 == 0)goto dio00661;
axreb939 = *(ptr39+5);
cptr939 = (char*)axreb939;
axres939 = *(ptr39+6);
fread(cptr939,axres939,1,file939);
dio00661: axres939 = *(ptr39+6);
}
if(*(ptr39+7) == (64*256))
{
axreb939 = *(ptr39+4);
axhan939 = *(ptr39+((axreb939*2)+44));
if(axreb939 > 4)file939=(FILE*)axhan939;
if(axreb939 == 1)file939 = stdout;
if((axreb939 != 1) || ((*(ptr39+19)) == 0))
{
axred939 = *(ptr39+5);
cptr939 = (char*)axred939;
if((axreb939!=1)||(*cptr939!='\33')||(isansihere!=0))
{
// ----
axres939 = *(ptr39+6);
if(axreb939 != 1)
{
fwrite(cptr939,axres939,1,file939);
}
if((axreb939==1)&&(*cptr939!='\33')&&(isansihere==0))
{
powcline(cptr939,axres939);
}
// ----
}
}
if(((*(ptr39+19)) != 0) && (isansihere == 0))
{
axreb939 = *(ptr39+4);
if((axreb939 == 1) && ((*(ptr39+19)) < 16))
{
axres939 = *(ptr39+5);
cptr939 = (char*)axres939;
axreb939 = *cptr939;
axres939 = (long)ptr39;
axres939 = axres939 + 80 + (*(ptr39+19));
cptr939 = (char*)axres939;
*cptr939 = axreb939;
(*(ptr39+19)) ++;
if((axreb939 & 255) == 'H')
{
(*(ptr39+19)) = 0;
axres939 = (long)ptr39;
cptr939 = (char*)axres939;
// needs to read stored ascii digits
// y is first followed by x
axreb939=ansrinta(cptr939,82,3,10);
axres939=ansrinta(cptr939,85,4,10);
// 0636 is top of Windows set console
// text cursor position
// (pretend ansi.sys)
powposition(&hottyx,axres939,axreb939);
// 0643 is bottom of Windows set
// console text cursor position
}
if((axreb939 & 255) == 'm')
{
(*(ptr39+19)) = 0;
axres939 = (long)ptr39;
cptr939 = (char*)axres939;
// needs to read stored ascii digits
axreb939=ansrinta(cptr939,82,3,10);
axres939=ansrinta(cptr939,85,4,10);
}
}
}
axreb939=(*(ptr39+4));
if((axreb939==1)&&(isansihere==0)&&((*(ptr39+19))== 0))
{
axreb939=(*(ptr39+5));
cptr939 = (char*)axreb939;
if(*cptr939 == '\33')
{
(*(ptr39+19)) = 1;
}
}
// --
axres939=(*(ptr39+6));
}
if(*(ptr39+7) == ((66*256)+0))
{
axreb939 = *(ptr39+4);
axhan939 = *(ptr39+((axreb939*2)+44));
file939=(FILE*)axhan939;
axreb939 = *(ptr39+6);
axreb939 = axreb939 << 16;
axreb939 = axreb939 + (*(ptr39+5) & 65535);
fseek(file939,axreb939,SEEK_SET);
axreb939 = ftell(file939);
axres939 = axreb939 & 65535;
axreb939 = axreb939 >> 16;
*(ptr39+5)=axreb939;
}
if(*(ptr39+7) == ((66*256)+1))
{
axreb939 = *(ptr39+4);
axhan939 = *(ptr39+((axreb939*2)+44));
file939=(FILE*)axhan939;
axreb939 = *(ptr39+6);
axreb939 = axreb939 << 16;
axreb939 = axreb939 + (*(ptr39+5) & 65535);
fseek(file939,axreb939,SEEK_CUR);
axreb939 = ftell(file939);
axres939 = axreb939 & 65535;
axreb939 = axreb939 >> 16;
*(ptr39+5)=axreb939;
}
if(*(ptr39+7) == ((66*256)+2))
{
axreb939 = *(ptr39+4);
axhan939 = *(ptr39+((axreb939*2)+44));
file939=(FILE*)axhan939;
axreb939 = *(ptr39+6);
axreb939 = axreb939 << 16;
axreb939 = axreb939 + (*(ptr39+5) & 65535);
fseek(file939,axreb939,SEEK_END);
axreb939 = ftell(file939);
axres939 = axreb939 & 65535;
axreb939 = axreb939 >> 16;
*(ptr39+5)=axreb939;
}
*(ptr39+7)=axres939;
}
// 256 bit arithmetic uses dx result bx big si tiny
// 394h 390h 384h
// 229 228 225
// arithmetic uses eax > 010bh but less than 0200h at
// [039ch] or 231
if(*(ptr39+231)==(256+42))
// 2a * 42
{
ptr940=(long*)(*(ptr39+229));
ptr941=(long*)(*(ptr39+228));
ptr942=(long*)(*(ptr39+225));
mpy256(ptr940,ptr941,ptr942);
}
if(*(ptr39+231)==(256+43))
// 2b + 43
{
ptr940=(long*)(*(ptr39+229));
ptr941=(long*)(*(ptr39+228));
ptr942=(long*)(*(ptr39+225));
*(ptr39+10)=add256(ptr940,ptr941,ptr942);
}
if(*(ptr39+231)==(256+45))
// 2d - 45
{
ptr940=(long*)(*(ptr39+229));
ptr941=(long*)(*(ptr39+228));
ptr942=(long*)(*(ptr39+225));
*(ptr39+10)=subtract256(ptr940,ptr941,ptr942);
}
if(*(ptr39+231)==(256+47))
// 2f / 47
{
ptr940=(long*)(*(ptr39+229));
ptr941=(long*)(*(ptr39+228));
ptr942=(long*)(*(ptr39+225));
posdiv256(ptr940,ptr941,ptr942);
}
if(*(ptr39+231)==(256+61))
// 3d = 61
{
ptr940=(long*)(*(ptr39+229));
ptr941=(long*)(*(ptr39+228));
mov88(ptr940,ptr941);
}
}
// renumbering DPMS939 array for scaled
// by 4 C++ in base ten
// **WARNING** set this array to 0 before
// first call to DPMS939
// 00-63 is registers to pass to DOS
// 00 edi 01 esi
// 02 ebp 03 reserved
// 04 ebx 05 edx
// 06 07 eax
// 08 eip or 0 09 CS: or 0
// 10 eflags 11 esp or 0
// 12 SS: or 0 13 ES: or 0
// 14 DS: or 0 15 reserved
// 16 Reserved 17
// 18 keyupctr 19 ansictrnz
// actual DOS ONLY DPMS is below offset 17
// 17 and above is beyond traditional DOS
// 20 - 23 is ansi command storage line
// 24 20 word line of text console display buffer
// At least the unusedifzero4 elements
// must be set to zero
// before first call to DPMS939
// 44 handle collection of 64 2 word handles
// (handle4,unusedifzero4) 44-171
// 172
// 192 collection of 4 8 word registers for 256 bit
// integer arithmetic
// 192 200 208 216
// 224-231 is registers to pass to 32-bit DPMS that
// do not go to DOS
// 224 edi 225 esi 226 ebp 227 reserved
// 228 ebx 229 edx 230 ecx 231 eax
// 232-235 are used by applications
// 232 shold 233 234 235
// 288 289 290 291
// 292 WM_KEYUPIFZERO 293 WM_KEYVALUE 294 reserved
// 295 reserved 296-447 reserved for system use
// 448
// DPMS939 is a pattern to allow 32-bit programs
// to call something that is similar to DOS
// end of DPMS939 ********************** 1028
void reedline()
{
long ctrd04;
long ctra06;
long ctrzz;
char bund;
char rund;
ctrd04=0;
ctra06=0;
ctrzz=0;
reedloop: if (ctra06 < a80w) goto chkrep;
goto afterloop;
chkrep: if(rep0 != 0) goto crepeat;
readone();
// readone redefines one2
crepeat: bund=one2;
rep0 = 0;
cmpxc: rund = bund;
if (bund == '\314') goto cmpxa;
if (bund >= '\040') goto yreedu;
rund = '\040';
if (bund == '\015') goto cmpxd;
if (bund == '\000') goto cmpxd;
if (bund == '\012') goto cmpxa;
if (bund == '\032') goto cmpxa;
// 015.001101.0d 032.011010.1a 012.001010.0a
// 314.11001100.cc 040.100000.20 176.1111110.7e
*(elevrd + ctra06) = rund;
ctra06 = ctra06 + 1;
if (hv0c < 5) goto chkrev;
xreedj: goto reedloop;
chkrev: if(bund != '\10') goto xreedj;
ctra06 = ctra06 - 1;
if (ctra06 == 0) goto xreedj;
ctra06 = ctra06 - 1;
goto xreedj;
yreedu: *(elevrd + ctra06) = rund;
ctra06 = ctra06 + 1;
goto reedloop;
cmpxd: goto afterlined;
cmpxa: goto afterlinea;
afterlined: goto afterlinea;
aftquit: goto blanright;
afterlinea: if (bund == '\012') goto aftquit;
if (bund == '\032') goto aftquit;
if (bund == '\314') goto aftquit;
dfirst: if (hv0c >= 5) goto dseek;
// if ((evdk % 2) == 0) goto dseek;
if((evdk & 1) == 0)goto dseek;
goto aftquit;
dseek: if (bund == '\015') goto dloopp;
if (bund == '\000') goto dloopp;
rep0 = 4;
goto aftquit;
dloopp: if (eofi == 0) goto dloop;
goto aftquit;
dloop: readone();
// readone redefines one2
bund=one2;
xtafterlinea: ctrd04 = ctrd04 + 1;
if (ctrd04 < 4) goto atafterlinea;
if (bund == '\000') goto reefixdz;
if (bund == '\015') goto reefixdz;
goto atafterlinea;
reefixdz: goto aftquit;
atafterlinea: goto afterlinea;
blanright: ctrzz = ctra06;
blanlop: if (ctra06 >= a80w) goto rpopline;
*(elevrd + ctra06)='\040';
ctra06 = ctra06 + 1;
goto blanlop;
rpopline: rund=rep0;
goto reedret;
afterloop: if(eofi == 0) goto alproca;
goto aftquit;
alproca: if (hv0c >=5) goto alprocb;
goto aftquit;
alprocb: readone();
bund=one2;
if (eofi == 0) goto rtafterlinea;
ctrzz=8;
rtafterlinea: goto afterlinea;
reedret: ctrzz=0;
}
void readone()
{
long rdha,rdhb,diskreclen;
char honeb;
// readone redefines one2 fp04
rdha=1;
rdhb=1;
if(hv0c<5)goto noteof27;
roteof2: if(fp04 < fl06)goto rnoteof;
eofi=1;
honeb = '\40';
goto yrnoteol;
yreof: eofi=1;
yrnoteof: honeb=hiskrba[pose];
pose = pose + 1;
yrnoteol: one2=honeb;
goto ybrlnc;
rnoteof: diskreclen=hiskwid;
if((fl06-fp04) > hiskwid)goto bigleftnoteof;
diskreclen=fl06-fp04;
bigleftnoteof: if(pose < hiskwid)goto xbnc;
pose=0;
noteof2: rdha=diskreclen;
// rem 292 fread(hiskrba,rdha,rdhb,edhanb);
array939[(16/4)]=edhanb;
array939[(20/4)]=(int)hiskrba;
array939[(24/4)]=diskreclen;
array939[(28/4)]='\x3F';
array939[(28/4)]=array939[(28/4)]*256;
dpms939(array939);
xbnc: fp04 = fp04 + 1;
ylnc: if(fp04 < fl06)goto yrnoteof;
yxrlnc: goto yreof;
// rem noteof27: fread(&honeb,1,1,stdin);
noteof27: array939[(16/4)]=1;
// *** ERROR *** handle of one is no longer
// available
array939[(20/4)]=(int)(&honeb);
array939[(24/4)]=1;
array939[(28/4)]='\x3F';
array939[(28/4)]=array939[(28/4)]*256;
dpms939(array939);
goto yrnoteol;
ybrlnc: rdhb=1;
}
// end of void readone() 1165
void arbcopy(char *ardest, char *arsrc)
{
long bctr,blen;
char *irdest,*irsrc;
bctr=a80w - 1;
bclop: if (bctr < 0) goto bcbot;
irsrc=arsrc+bctr;
if ( *irsrc != '\040') goto bcbot;
bctr -- ;
goto bclop;
bcbot: blen = bctr + 1;
bctr=0;
bcgop: if ( bctr < blen ) goto bcgopp;
goto bcbog;
bcgopp: irsrc=arsrc+bctr;
irdest=ardest+bctr;
*irdest = *irsrc;
bctr ++;
goto bcgop;
bcbog: irdest=ardest+bctr;
*irdest = '\0';
}
void kfcopy(char *kfdest, char *cokfsrc)
{
long legctr,leglen;
char *ifdest,*iokfsrc;
char chixpie;
leglen=78;
legctr=0;
sandwich: iokfsrc=cokfsrc+legctr;
chixpie = *iokfsrc;
if (chixpie == '!') goto piecrust;
if (chixpie == '\0')goto piecrust;
ifdest=kfdest+legctr;
*ifdest = chixpie;
legctr ++ ;
if (legctr < leglen) goto sandwich;
piecrust: ifdest=kfdest+legctr;
// not used to write to blank lines *ifdest = '\0';
}
void prtx(char *prtline, char *prtcrtype)
{
long prtctr,prtlim,prtjim;
char *irtline;
char princhar;
char endprt[] = { '\15','\12','\40','\40'};
prtctr=0;
prtjim=80;
prtlim=prtjim-2;
prtloopt: irtline=prtline+prtctr;
princhar = *irtline;
prtctr ++ ;
if(princhar == '\0') goto prtloopb;
// use cio32 cout << princhar;
if(prtctr < prtjim) goto prtloopt;
prtloopb: prtjim = 2;
if(prtctr > prtlim) goto prtbot;
prtctr=0;
if(*prtcrtype == '+') goto prtbox;
prtjim=0;
prtbox: irtline = &endprt[0] + prtjim;
princhar = *irtline;
prtjim ++ ;
prtctr ++ ;
// delete for screen cout << princhar;
if(prtctr < 2) goto prtbox;
prtbot: prtctr=0;
}
char* alselset(char* alray, long alsubscript)
{
// uses crz0160 in argument list for *alray
long aldisp;
char* ptral;
aldisp=((alsubscript-1)*a80w)+0;
ptral=alray+aldisp;
return ptral;
}
void aptwrite(char* wrtlineabs,long wrsub)
// use aptwrite(alselset(crz0160,locallinenumber),ytaelon)
{
long wrdisp,wlopct;
if ((wrsub < tinyoar) && (1 <= wrsub))
{
wrdisp = a80w*(wrsub-1);
wlopct=0;
while (wlopct < a80w)
{
aptivus[wrdisp+wlopct] = *(wrtlineabs+wlopct);
wlopct = wlopct+1;
}
wlopct=0;
if(uppercase == 97)
{
while(wlopct < a80w)
{
aptivus[wrdisp+wlopct]=sixcase(*(wrtlineabs+wlopct));
wlopct = wlopct + 1;
}
}
}
if ((wrsub >= tinyoar) || (1 > wrsub))nzerror=1;
}
void aptread(char* rddlineabs,long rddsub)
{
long rrdisp,rrlopct;
rrdisp=a80w*(rddsub-1);
rrlopct=0;
if (rddsub<1) goto aptrrblank;
if (rddsub>afilelen) goto aptrrblank;
if (rddsub>=tinyoar) goto aptrrblank;
if (uppercase == 97)goto breadok;
areadok: while(rrlopct < a80w)
{
*(rddlineabs+rrlopct) = aptivus[rrdisp+rrlopct];
rrlopct ++;
}
goto aptreadbot;
breadok: while(rrlopct < a80w)
{
*(rddlineabs+rrlopct)=sixcase(aptivus[rrdisp+rrlopct]);
rrlopct ++;
}
goto aptreadbot;
aptrrblank: if(rrlopct >= a80w) goto aptreadbot;
*(rddlineabs+rrlopct) = '\40' ;
rrlopct ++ ;
goto aptrrblank;
aptreadbot: rrlopct=0;
}
void numberprn(char* stnuwa,long startsu,long width,
long basew,long nuhl)
{
// use alselset(&crz0160[0],linenumber) for stnuwa
// when to a numbered line.
long ctr,numer,nufrac,nurem,nuprod;
numer=nuhl;
ctr=width-1;
nuwlop: if(ctr<0) goto nuwbot;
nufrac=numer/basew;
goto nuwtwo;
nuwshrink: nufrac --;
nuwtwo: nuprod=basew*nufrac;
nurem=numer-nuprod;
if(nurem<0)goto nuwshrink;
numer = nufrac;
if(nurem > 9)
{
nurem = nurem + 7;
}
*(stnuwa+((startsu-1)+ctr)) = nurem + '\60';
ctr --;
goto nuwlop;
nuwbot: ctr=0;
}
// esc [ 88;888H is cursor position
// esc [ 88;88;8m is color setting
void rprline(long z80w,long lily,char* ptrtocharline,
long curpos,long rpc)
{
// lily is tiny y position on screen
long rprsub;
long rprctr;
long rprlencmp;
char* ptrelem;
char rpray[58];
char rprelem;
rprctr=0;
ptrelem = &rprelem;
// rprlencmp = clenval(ptrtocharline) + 5;
rprlencmp = a80w - 4;
rpray[0] = '\33';
rpray[1] = '[';
numberprn(rpray,3,2,10,lily);
rpray[4] = ';';
numberprn(rpray,6,3,10,1);
rpray[8] = 'H';
rpray[9]=rpray[0];
rpray[10]=rpray[1];
numberprn(rpray,12,2,10,33);
rpray[13]=rpray[4];
numberprn(rpray,15,2,10,44);
rpray[16]=rpray[4];
numberprn(rpray,18,1,10,0);
rpray[18] = 'm';
rpray[19] = '!';
rprone: rprelem=rpray[rprctr];
rprctr ++;
if(rprelem == '!')goto rprtwo;
// rem 496 fwrite(ptrelem,1,1,stdout);
array939[(16/4)]=1;
array939[(20/4)]=(int)ptrelem;
array939[(24/4)]=1;
array939[(28/4)]=64*256;
// 40h write to handle number one
dpms939(array939);
goto rprone;
rprtwo: rprsub=0;
rprthree: rprelem = *(ptrtocharline+rprsub);
rprsub ++;
if(lily < (ypheight+1))goto rprfour;
if(rprsub > rprlencmp)goto rprfive;
// delete above overcheck when promoting to graphics
// rem 527 rprfour: fwrite(ptrelem,1,1,stdout);
rprfour: array939[(16/4)]=1;
array939[(20/4)]=(int)ptrelem;
array939[(24/4)]=1;
array939[(28/4)]=64*256;
// 40h write to handle one
dpms939(array939);
if(rprsub<z80w)goto rprthree;
rprfive: rprctr = 21;
rpray[21]=rpray[0];
rpray[22]=rpray[1];
numberprn(rpray,24,2,10,lily);
rpray[25]=rpray[4];
numberprn(rpray,27,3,10,curpos);
rpray[29]=rpray[8];
rpray[30]=rpray[0];
rpray[31]=rpray[1];
numberprn(rpray,33,2,10,33);
rpray[34]=rpray[4];
numberprn(rpray,36,2,10,rpc);
rpray[37]=rpray[4];
numberprn(rpray,39,1,10,0);
rpray[39] = 'm';
rpray[40] = '!';
if(curpos < 1)goto rprnine;
rprsix: rprelem=rpray[rprctr];
rprctr ++;
if(rprelem == '!')goto rprseven;
// rem 554 fwrite(ptrelem,1,1,stdout);
array939[(16/4)]=1;
array939[(20/4)]=(int)ptrelem;
array939[(24/4)]=1;
array939[(28/4)]=64*256;
// 40h write to handle one
dpms939(array939);
goto rprsix;
rprseven: rprelem= *(ptrtocharline+(curpos-1));
// fwrite(ptrelem,1,1,stdout);
array939[(16/4)]=1;
array939[(20/4)]=(int)ptrelem;
array939[(24/4)]=1;
array939[(28/4)]=64*256;
dpms939(array939);
// 40h write to handle one
rpray[41]=rpray[0];
rpray[42]=rpray[1];
numberprn(rpray,44,2,10,lily);
rpray[45]=rpray[4];
numberprn(rpray,47,3,10,curpos);
rpray[49]=rpray[8];
rpray[50]=rpray[19];
rprctr=41;
rpreight: rprelem=rpray[rprctr];
rprctr ++;
if(rprelem == '!')goto rprnine;
// fwrite(ptrelem,1,1,stdout);
array939[(16/4)]=1;
array939[(20/4)]=(int)ptrelem;
array939[(24/4)]=1;
array939[(28/4)]=64*256;
dpms939(array939);
// 40h write to handle one
goto rpreight;
rprnine: rprctr=0;
}
void cvgcline(char* cvgcptr,long sslsel,
long spos,long howmany)
{
// sslsel is 5 for aptivus array read with aptread
// sslsel <> 5 for local read of crz0160
// spos is screen vertical position
// when sslsel = 5 additional checking is
// done on howmany = {0,1,2,>2}
// howmany={0 align prindiff only,1 print y& only,
// 2 print even if <>y&
// howmany > 2 nocursors
// temp ypplh=prindiff32+spos
long moucursorpos;
long mcp;
long shift;
long z80widthx;
long yzz;
long xzz;
long ypplh;
long concolor;
moucursorpos=0;
mcp=0;
shift=spos;
concolor=0;
if(sslsel != 5)goto cvgnonfiv;
cvgcsd: if(prindiff < 0)prindiff=0;
cvgcse: prinjill=y-prindiff;
if(ypheight<prinjill)prindiff=y-ypheight;
zwr1784: if(prinjill<1)prindiff=y-1;
zwr1786: ypplh=prindiff+spos;
if(howmany == 0)goto cvgcquit;
cvgcyone: if(y != ypplh)goto cvgcnotya;
if(howmany > 2)goto cvgcnotya;
mcp=x;
concolor=46;
if(insertype != 0)concolor=45;
goto cvgcnotyb;
cvgcnotya: if(howmany<2)goto cvgcquit;
cvgcnotyb: ytaelon=ypplh;
aptread(alselset(cvgcptr,sslsel),ytaelon);
if(howmany > 2)goto cvgcskipmo;
if(mouallowglobal == 0)goto cvgcskipmo;
mouy=mouy+(prindiff-prindiffprv);
prindiffprv=prindiff;
if(ypplh != mouy)goto cvgcskipmo;
if(mouallowlocal == 0)goto cvgcskipmo;
if(moux<1)goto cvgcskipmo;
// moucursorpos=moux+5a00h
// mouse disabled in this version.
cvgcskipmo: goto cvgcprcom;
cvgnonfiv: if(howmany > 2)goto cvgcprcom;
if(sslsel == 11)goto cvgcaltcur;
if(sslsel > 8)goto cvgcprcom;
if(sslsel < 6)goto cvgcprcom;
cvgcaltcur: mcp=x;
concolor=44;
cvgcprcom: rprline(a80w,
shift,alselset(cvgcptr,sslsel),mcp,concolor);
cvgcquit: concolor = 0;
}
// ghowmany = {0,1,2,>2}
// =0 align prindiff only
// =1 print line at Y only
// =2 print all lines
// >2 no cursor
void chrvgapage(char* guberptr,long ghowmany)
{
long sposctr;
long cstfiv;
sposctr=0;
cstfiv=5;
chrvgatop: sposctr ++;
if(ypheight < sposctr)goto chrvgabot;
cvgcline(guberptr,cstfiv,sposctr,ghowmany);
goto chrvgatop;
chrvgabot: cstfiv=0;
}
void clearline(char* clearptr)
{
long clearcutrush;
clearcutrush=0;
while(clearcutrush < a80w)
{
*(clearptr+clearcutrush)= '\40';
clearcutrush ++;
}
}
void aptdelete()
{
long yelctrl,yelctrh;
char aptdeleteline[80];
yelctrl=y;
de1570: yelctrh=yelctrl+1;
if(yelctrh>afilelen)goto de1586;
aptread(aptdeleteline,yelctrh);
aptwrite(aptdeleteline,yelctrl);
yelctrl=yelctrh;
goto de1570;
de1586: if(afilelen >= y) afilelen --;
}
// use alselset(crz0160,insel) for inserad
void aptinsert(char* inserad)
{
long yil,yih;
char aptinline[80];
yil=afilelen;
in1598: yih=yil+1;
if(yil < y)goto in1614;
aptread(aptinline,yil);
aptwrite(aptinline,yih);
yil --;
goto in1598;
in1614: afilelen ++;
aptwrite(inserad,y);
y++;
}
void lalocal12(char* crzload)
{
// crzload is &crz0160[0] . uses y
long ycmp;
ycmp=y+1;
if(y<0)goto la1662;
if(ycmp>afilelen)goto la1662;
aptread(alselset(crzload,2),ycmp);
goto la1664;
la1662: clearline(alselset(crzload,2));
la1664: if(y>afilelen)goto la1674;
if(y<1)goto la1674;
aptread(alselset(crzload,1),y);
goto la1676;
la1674: clearline(alselset(crzload,1));
la1676: ycmp=0;
}
void laput12(char* crzput)
{
// crzput is &crz0160[0] . uses y
long putae;
if(y<1)goto put1814;
if(chnext==0)goto put1808;
putae=y+1;
aptwrite(alselset(crzput,2),putae);
if(putae>afilelen)afilelen=putae;
put1808: aptwrite(alselset(crzput,1),y);
if(y>afilelen)afilelen=y;
put1814: ch=0;
chnext=0;
}
long clenval(char* lenabsad)
{
// use alselset(&crz0160[0],linenumber)
// for argument of clenval
long llval;
char lcmp;
llval=a80w;
le1849: lcmp = *(lenabsad+llval-1);
if(lcmp == '\40')goto le1860t;
if(lcmp == '\00')goto le1860t;
goto le1860;
le1860t: llval --;
if(llval>0)goto le1849;
le1860: lcmp = '\40';
return llval;
}
long cmdlen(char* cmdsaml)
{
long cmdctr;
char cmdparyy;
cmdctr=0;
cmdldop: cmdparyy = *(cmdsaml + cmdctr);
if(cmdparyy == '\40')goto cmdlshort;
if(cmdparyy == '\41')goto cmdlshort;
cmdctr ++;
if(cmdctr < 254)goto cmdldop;
cmdlshort: cmdparyy = '!';
return cmdctr;
}
void cmdhmcur()
{
long lenleven,lbigleven,lenstep;
long threectr,tinyhctr,hdmoffset;
char* elevbase;
char* stepbase;
curcommand=0;
tinyhctr=1300;
howmanycmd=1;
elevbase=alselset(crz0160,11);
lbigleven=clenval(elevbase);
lenleven=cmdlen(elevbase);
if(lenleven < 1)goto nocurcommand;
if((lbigleven-lenleven) < 2)goto nohowmanycmd;
hdmoffset=lenleven+2;
howmanycmd=numberget(elevbase,
hdmoffset,((lbigleven-hdmoffset)+1),10);
nohowmanycmd: threectr=3;
olopcur: if(threectr > 28)goto nocurcommand;
stepbase=litrlc(litharg,threectr);
lenstep=cmdlen(stepbase);
threectr=threectr+1;
if(lenstep != lenleven)goto olopcur;
tinyhctr=0;
// stuck at 1656
ilopcur: cncle = *(elevbase + tinyhctr);
cncri = *(stepbase + tinyhctr);
if(cncle != cncri)goto olopcur;
tinyhctr=tinyhctr+1;
if(tinyhctr<lenleven)goto ilopcur;
curcommand=threectr-1;
nocurcommand: threectr=0;
}
// bottom of cmdhmcur
void kfclev(char* levsrc)
{
char* levsrcy;
levsrcy=levsrc;
clearline(alselset(crz0160,11));
kfcopy(alselset(crz0160,11),levsrcy);
}
void aptlocloc(char* destal,char* srcal,long aptrl)
{
long aptoctt;
aptoctt=0;
tigloc: *(destal+aptoctt) = *(srcal + aptoctt);
aptoctt ++;
if(aptoctt < aptrl)goto tigloc;
}
void commandprn()
{
long cmxshifctr,upcmdljj;
// shift up from array(11) starting at top
// then print in reverse order
cmxshifctr=ypheight+12;
cmxxyb: if(cmxshifctr < 11)goto cmxshifulr;
aptlocloc(alselset(crz0160,(cmxshifctr+1)),
alselset(crz0160,cmxshifctr),a80w);
cmxshifctr --;
goto cmxxyb;
// if ypheight == 4 15 1
// 14 2
// 13 3
// 12 4
// 11 5
cmxshifulr: cmxshifctr = ypheight + 11;
upcmdljj=1;
clearline(alselset(crz0160,11));
cmdshifxlr: if(cmxshifctr < 11)goto cmdprndot;
cvgcline(crz0160,cmxshifctr,upcmdljj,4);
cmxshifctr --;
upcmdljj ++;
goto cmdshifxlr;
cmdprndot: upcmdljj=0;
}
// void commandkey()
// {
// long rahkctr,rahxsave;
// char* raheleven;
// char rahtype,rahkey,filtkey;
// rahkctr=0;
// raheleven=alselset(crz0160,11);
// clearline(raheleven);
// rahreadk: if(rahkctr >= a80w)goto rahkeybot;
// rahxsave=x;
// x=rahkctr+1;
// cvgcline(crz0160,11,(ypheight+1),1);
// x=rahxsave;
// rahzzedu: conkey(&rahtype,&rahkey);
// conkey 1453 within 1440 commandkey
// if(rahtype != '0')goto rahzzedu;
// rahzzedb: conkey(&rahtype,&rahkey);
// conkey 1456 within 1440 commandkey
// if(rahtype == '0')goto rahzzedb;
// if(rahkey == '\15')goto rahkeybot;
// if(rahkey == '\12')goto rahkeybot;
// filtkey=rahkey;
// if(rahkey < '\40')filtkey = '\40';
// *(raheleven+rahkctr)=filtkey;
// rahkctr ++;
// if(rahkey != '\10')goto rahreadk;
// rahkctr --;
// if(rahkctr == 0)goto rahreadk;
// rahkctr --;
// *(raheleven+rahkctr)=filtkey;
// goto rahreadk;
// rahkeybot: rahkctr=0;
// }
void deletemany(long howmany)
{
long delwid,limdel,yelctrl,delmanytemp;
char dmany[164];
delwid=howmany;
yelctrl=y;
limdel=(afilelen+1)-y;
if(limdel < 0)goto nondeletec;
goto delrsize;
nondeletec: goto quitdelpop;
delrsize: if((delwid-limdel)<0)goto skipwidlim;
delwid=limdel;
skipwidlim: delmanytemp=yelctrl+delwid;
if((afilelen-delmanytemp)<0)goto shrinkafnd;
aptread(dmany,delmanytemp);
aptwrite(dmany,yelctrl);
yelctrl=yelctrl+1;
goto skipwidlim;
shrinkafnd: afilelen=afilelen-delwid;
quitdelpop: delmanytemp=0;
}
void fn1113()
{
long biglen13,istlen13,ctr13;
long ctr11,size13;
char* fn13ad;
char* fn11ad;
fn13ad=alselset(crz0160,13);
fn11ad=alselset(crz0160,11);
biglen13=clenval(fn13ad);
istlen13=cmdlen(fn13ad);
size13=(biglen13-istlen13)-1;
if(size13 < 1)goto skipfnt13;
ctr11=0;
ctr13=istlen13+1;
loopfn13: *(fn11ad+ctr11) = *(fn13ad+ctr13);
ctr11 ++;
ctr13 ++;
if(ctr11 < size13)goto loopfn13;
skipfnt13: ctr13=0;
}
// ikx1864 is critical
void ikx1864(char* rayloc1,
long keychr1,long alselone)
{
// rayloc1.is.&crz0160[0].uses.argument.alselone.
// changes alsel.
char* albase1;
char* iisubc;
long lval1,filtkeychr,cc1;
alsel=alselone;
if(alsel==1)
{
clearline(alselset(rayloc1,2));
chdoc=1;
}
ikx1873: inspg=0;
albase1=alselset(rayloc1,alsel);
iisubc=albase1+x-1;
ch=1;
// *ERROR* chnext=1 is not used in edrandy.
// use chnext=0.
chnext=0;
lval1=clenval(alselset(rayloc1,alsel));
if(insertype!=0)goto z1886;
z1880: filtkeychr=keychr1;
if(keychr1 > 127)filtkeychr=keychr1-128;
if(filtkeychr < 32)filtkeychr=32;
zay1880: *iisubc=filtkeychr;
x ++;
if(alsel>5)goto z1885;
laput12(rayloc1);
z1885: goto z1990;
z1886: if(alsel>5)goto z1896;
if(((a80w-1)-lval1)<0) goto z1928;
// use jns z1892 then jmp(s) z1928
z1892: if(((a80w-1)-x)<0)goto z1960;
// use jns z1896 then jmp(s) z1960
z1896: cc1=lval1;
z1900: if(x>cc1)goto z1924;
iisubc=albase1+cc1-1;
*(iisubc+1) = *iisubc;
cc1 --;
goto z1900;
z1924: goto z1880;
z1928: iek2000(rayloc1,255);
inspg=1;
z1960: if(a80w>x)goto z1896;
filtkeychr=keychr1;
if(keychr1>127)filtkeychr=keychr1-128;
if(filtkeychr<32)filtkeychr=32;
z1963: *iisubc=filtkeychr;
z1978: gek2040(rayloc1,2);
insel=1;
clearline(alselset(rayloc1,1));
aptinsert(alselset(rayloc1,insel));
y --;
inspg=1;
z1990: lval1=0;
}
// ikx1864 was checked on 03/14/2003
// with edrandy.926
void iek2000(char* rayloc2,long nzkey)
{
// rayloc2 is &crz0160[0]
long erd,erxsub,erchk,ercmp;
char *albase2;
erd=a80w;
erxsub=x-1;
clearline(alselset(rayloc2,2));
alsel=1;
albase2=alselset(rayloc2,alsel);
erchk=0;
z2006: ercmp = *(albase2+erxsub);
// bund2 is not used in edrandy
// if(ercmp>255)ercmp=127 is not used in edrandy
// ??? is 255 a valid number here ??
// if(ercmp<32)ercmp=32 is not used in edrandy
if(ercmp!=32)erchk=1;
z2012: *(albase2+erd)=ercmp;
*(albase2+erxsub)='\40';
erd ++;
erxsub ++;
if(erxsub < a80w)goto z2006;
// jns z2020bt jmp(s) z2006
z2020bt: if(nzkey==0)goto z2022;
z2020: if(erchk==0)goto z2036;
z2022: y ++;
insel=2;
aptinsert(alselset(rayloc2,insel));
if(clenval(alselset(rayloc2,insel))==0)goto z2027;
marginselect=1;
z2027: clearline(alselset(rayloc2,2));
y-=2;
alsel=1;
albase2=alselset(rayloc2,alsel);
z2036: erd=0;
}
// iek2000 was checked by edrandy on 03/14/2003
void gek2040(char* rayloc3,long zurtwo)
{
long rr2040;
if(zurtwo!=0)goto gek2042;
iek2000(rayloc3,0);
gek2042: chnext=0;
laput12(rayloc3);
x=1;
y ++;
rr2040=y;
skipgekup: goto gek2048;
if((afilelen-y)>=0)goto gek2048;
clearline(alselset(rayloc3,3));
insel=3;
y=afilelen+1;
aptinsert(alselset(rayloc3,insel));
gek2048: rr2040=0;
}
// errors were found in edrandy in areas that
// were not referenced in gek2040
void dkx2050(char* ray4,long deltype44)
{
// ray4 is &crz0160[0]
long tnydeltype,deltype,lval4,ix4,deldisp,cc4,dd4;
char* albase4;
char* iisub4;
char* isi4;
// deltype44.does.not.change.alsel.except.deltype=???0
// deltype44 lst hex digit matches replacement line
// numbers last digit.
// 2050 delete key at x (make alsel = 1)
// 2054 undefined alsel 2055 undefined inspg
// 2156 backwards delete (make alsel = 1)
// 2158 undefined alsel
// edrandy equivelences ix with ix4. replace ix
// with ix4 [bp+08h]
deltype=deltype44;
tnydeltype=deltype;
dkxr2050: if(tnydeltype<16)goto dkxy2050;
tnydeltype-=16;
goto dkxr2050;
dkxy2050: if(tnydeltype<0)goto dkxq;
if(tnydeltype==0)goto zy2050;
dkxnz: if(tnydeltype==4)goto z2054;
dkxnf: if(tnydeltype==5)goto z2055;
dkxnfv: if(tnydeltype==6)goto z2156;
dkxns: if(tnydeltype==8)goto z2158;
dkxq: goto zxz2142;
zy2050: alsel=1;
z2054: inspg=0;
z2055: ch=1;
albase4=alselset(ray4,alsel);
chnext=0;
iisub4=albase4+x-1;
if(alsel>5)goto z2070;
if(insertype!=0)goto z2070;
*iisub4='\40';
z2067: if(alsel>5)goto zxz2142;
// js z2068 jz z2068 jmp(>) zxz2142
z2068: laput12(ray4);
goto zxz2142;
z2070: lval4=clenval(alselset(ray4,alsel));
if(alsel>5)goto z2076;
z2074: if(deltype>63)goto z2076;
// was test word [bp+022h],040h jnz z2076
if(lval4 < x)goto z2096;
// jns z2076 jmp(s) z2096
z2076: ix4=x;
z2080: isi4=albase4+ix4-1;
if(ix4 >= lval4)goto z2090;
z2084: *isi4 = *(isi4+1);
ix4 ++;
goto z2080;
z2090: *isi4 = '\40';
goto z2067;
z2096: deldisp=1+a80w-x;
alsel=1;
albase4=alselset(ray4,alsel);
ix4=x;
z2100: cc4=ix4-1;
dd4=cc4+deldisp;
if(cc4<a80w)goto z2106;
goto z2112;
z2106: isi4=albase4+dd4;
*(albase4+cc4) = *isi4;
ix4 ++;
goto z2100;
z2112: ix4=deldisp;
z2114: isi4=albase4+cc4;
*isi4 = '\40';
cc4 ++;
ix4 --;
if(ix4 != 0)goto z2114;
z2120: ix4=0;
z2122: cc4=a80w+ix4;
isi4=albase4+cc4;
if( *isi4 == '\40' )goto z2130;
inspg=1;
chnext=1;
goto z2067;
z2130: ix4 ++;
if(ix4<a80w)goto z2122;
y ++;
z2136: aptdelete();
inspg=1;
y --;
goto z2067;
zxz2142: goto zxzz2142;
z2156: alsel=1;
chdoc=1;
if(y > 1)goto z2158;
if(x < 2)goto zxz2142;
z2158: x --;
inspg=0;
albase4=alselset(ray4,alsel);
if(x<1)goto z2162;
z2161: goto z2054;
z2162: inspg=1;
if(y > 1)goto z2167;
x=1;
y=1;
goto z2055;
z2167: y --;
lalocal12(ray4);
lval4=clenval(alselset(ray4,alsel));
x=lval4+1;
deltype=tnydeltype;
if(x<a80w)goto z2174;
x=a80w;
z2174: goto z2055;
zxzz2142: ix4=0;
}
// dkx2050 replace ix with ix4 and fix to
// match edrandy on 03/14/2003
void regkey2176()
{
// -- rkeychar rkeytype already moved
char* rptrkc;
char* rptrtype;
long rlkey;
rptrkc = &rkeychr;
rptrtype = &rkeytype;
// ?? freddy=dagra;
if((dagra & 3) == 1)goto arz2176;
if((dagra & 3) == 3)goto zfix1773;
arz2176: freddy=dagra+2;
// 1 start 3 reenter with a key
z2176: if(y>afilelen)y=afilelen+1;
if(y<1)y=1;
z2180: if(x>a80w)x=a80w;
if(x<1)x=1;
z2188: lalocal12(crz0160);
chrvgapage(crz0160,2);
z2190: if(y>afilelen)y=afilelen+1;
if(y<1)y=1;
if(x>a80w)x=a80w;
if(x<1)x=1;
lalocal12(crz0160);
cvgcline(crz0160,5,(y-prindiff),0);
numberprn(alselset(crz0160,9),42,3,10,x);
numberprn(alselset(crz0160,9),46,7,10,y);
numberprn(alselset(crz0160,9),54,2,10,(y-prindiff));
if(afilelen >= 1)
{
numberprn(alselset(crz0160,9),58,7,10,afilelen);
}
if(afilelen == 0)
{
numberprn(alselset(crz0160,9),58,7,10,tinyoar);
}
// add key diagnostic for ncurdey
if(ncurdey != (0-11))
{
numberprn(alselset(crz0160,9),17,10,16,ncurdey);
}
// end key diagnostic ncurdey
cvgcline(crz0160,9,(ypheight+1),4);
cvgcline(crz0160,5,(y-prindiff),2);
zfix2191d: goto ubotkey2176;
zfix1773: *rptrtype=archtype;
*rptrkc=archkey;
if(rkeytype == '0')goto zfix2191d;
lalocal12(crz0160);
if(rkeychr != '\10')goto t2192;
goto z2294;
t2192: if(rkeychr == '\12')goto y2194;
if(rkeychr != '\33')goto t2193;
goto z2228;
t2193: if(rkeychr != '\15')goto z2200;
y2194: gek2040(crz0160,0);
chdoc=1;
zfix2197: x=marginselect;
// set x to marginselect above.
z2198: goto z2176;
// remz2198: goto ubotkey2176;
z2200: if(rkeytype != '1')goto z2216;
z2201: if(rkeychr < '\40')rkeychr = '\40';
if(rkeychr > '\177')rkeychr = '\40';
rlkey=rkeychr;
z2203: ikx1864(crz0160,rlkey,1);
// not found in edrandy if(clenval(alselset(crz0160,
// not found in edrandy 1))<1)goto z2212;
if(y>afilelen)goto z2210;
goto z2212;
z2210: afilelen ++;
// z2212: if(inspg == 0)goto z2190;
z2212: if(inspg == 0)goto zu1828;
z2214: goto z2176;
z2216: if(rkeychr == 'P')goto z2231;
if(rkeychr == 'H')goto z2234;
if(rkeychr == 'I')goto z2238;
if(rkeychr == 'Q')goto z2242;
if(rkeychr == 'M')goto z2246;
// P 50 H 48 I 49 Q 51 M 4D
// K 4B O 4F R 52 S 53 G 47
if(rkeychr == 'K')goto z2252;
if(rkeychr == 'O')goto z2263;
if(rkeychr == 'R')goto z2274;
if(rkeychr == 'S')goto z2290;
if(rkeychr == 'G')goto z2228;
z2227: goto z2176;
// home gets menu
z2228: goto z2298;
// down arrow P z2231 up arrow H z2234
z2231: y ++ ;
goto z2176;
// goto ubotkey2176;
z2234: y -- ;
goto z2176;
// goto ubotkey2176;
// page up I z2238 page down Q z2242
z2238: y=(4+y)-ypheight;
goto z2176;
// goto ubotkey2176;
z2242: y=(y+ypheight)-4;
goto z2176;
// goto ubotkey2176;
// z2246 right arrow M
z2246: x ++ ;
if(x>a80w)goto z2249;
// goto z2190;
// 1828
zu1828: if(y>afilelen)y=afilelen+1;
if(y<1)y=1;
if(x>a80w)x=a80w;
if(x<1)x=1;
lalocal12(crz0160);
cvgcline(crz0160,5,(y-prindiff),0);
numberprn(alselset(crz0160,9),42,3,10,x);
numberprn(alselset(crz0160,9),46,7,10,y);
numberprn(alselset(crz0160,9),54,2,10,(y-prindiff));
if(afilelen >= 1)
{
numberprn(alselset(crz0160,9),58,7,10,afilelen);
}
if(afilelen == 0)
{
numberprn(alselset(crz0160,9),58,7,10,tinyoar);
}
// add key diagnostic for ncurdey
if(ncurdey != (0-11))
{
numberprn(alselset(crz0160,9),17,10,16,ncurdey);
}
// end key diagnostic ncurdey
cvgcline(crz0160,9,(ypheight+1),4);
cvgcline(crz0160,5,(y-prindiff),2);
goto ubotkey2176;
z2249: x=1;
goto z2231;
// z2252 left arrow K
z2252: x -- ;
// if(x>0)goto z2190;
if(x>0)goto zu1828;
if(y<2)goto z2256;
y -- ;
z2256: lalocal12(crz0160);
x=clenval(alselset(crz0160,1))+1;
if(x >= a80w)x=a80w;
z2261: goto z2176;
// z2261: goto ubotkey2176;
// 2263 end key O
z2263: if(x==1)goto z2267;
x=1;
// goto z2190;
goto zu1828;
z2267: if(y>afilelen)goto z2270;
y=afilelen+1;
goto z2176;
// goto ubotkey2176;
z2270: y=1;
goto z2176;
// goto ubotkey2176;
// z2274 insert key R 2290 delete key S
z2274: insertype = 1 - insertype;
// goto z2190;
goto zu1828;
z2290: dkx2050(crz0160,0);
chdoc=1;
goto z2212;
z2294: dkx2050(crz0160,(6+64));
chdoc=1;
goto z2212;
z2298: rlkey=0;
freddy=dagra-1;
// freddy = 1 start 3 got a key
// 2 done with regkey2176
ubotkey2176: rlkey=0;
}
// regkey2176.partially.fixed.by.edrandy.on.03/14/2003
void cls2330()
{
long ctr2330;
clearline(alselset(crz0160,2));
clearline(alselset(crz0160,1));
ctr2330=0;
z2336: if(ctr2330 > ypheight)goto z2343;
ctr2330 ++;
cvgcline(crz0160,2,ctr2330,4);
goto z2336;
z2343: ctr2330 = 1;
}
void clralocal2346()
{
long ctr2346;
ctr2346=0;
z2348: ctr2346 ++;
if(ctr2346 > 55)goto z2353;
clearline(alselset(crz0160,ctr2346));
goto z2348;
z2353: ctr2346=0;
cls2330();
}
void kfcdark(long darposition, char* darsrc)
{
char* darpass;
darpass=alselset(crz0160,darposition);
clearline(darpass);
kfcopy(darpass,darsrc);
}
void kfcl(long enepos,char* darlene)
{
kfcdark(3,darlene);
cvgcline(crz0160,3,enepos,4);
clearline(alselset(crz0160,3));
}
void kfc2398()
{
// kfc2398 is print page of options
cls2330();
// t.tmp
kfcl(1,litrlc(litharg,30));
kfcl(2,litrlc(litharg,31));
kfcl(3,litrlc(litharg,32));
kfcl(4,litrlc(litharg,33));
kfcl(5,litrlc(litharg,34));
kfcl(6,litrlc(litharg,35));
kfcl(7,litrlc(litharg,36));
kfcl(8,litrlc(litharg,37));
kfcl(9,litrlc(litharg,38));
kfcl(10,litrlc(litharg,39));
kfcl(11,litrlc(litharg,40));
kfcl(12,litrlc(litharg,41));
kfcl(13,litrlc(litharg,42));
kfcl(14,litrlc(litharg,43));
kfcl(15,litrlc(litharg,44));
kfcl(16,litrlc(litharg,45));
kfcl(17,litrlc(litharg,46));
kfcl(18,litrlc(litharg,47));
kfcl(19,litrlc(litharg,48));
kfcl(20,litrlc(litharg,49));
kfcl(21,litrlc(litharg,50));
kfcl(22,litrlc(litharg,51));
// is more needed here ??
}
long posdigit(char dcmpchr,char* digitslist)
{
long tposdigit,rtposdigit;
char rcmpchr;
tposdigit=0;
rtposdigit=1023;
digfindloop: rcmpchr = *(digitslist + tposdigit);
if(rcmpchr == '!')goto nondigit;
if(rcmpchr == dcmpchr)goto matchchk;
tposdigit ++;
goto digfindloop;
matchchk: rtposdigit=tposdigit;
if(tposdigit>15)rtposdigit=tposdigit-16;
nondigit: tposdigit=rtposdigit;
return tposdigit;
}
long numberget(char* absi,long startx,
long widthx,long basex)
{
// use alselset(crz0160,linenumber) instead
// of simple pointer when
// reading number from a line in crz0160.
long nget,ngctr,ngdigit;
char ddcmp;
nget=0;
ngctr=0;
// ***ERROR*** initially forgot to include startx
ngdaa: ddcmp = *(absi+(ngctr+startx-1));
ngctr ++;
ngdigit=posdigit(ddcmp,
"0123456789ABCDEF0123456789abcdef!!!!");
if(ngdigit<16)goto ngdac;
if(ngctr < widthx)goto ngdaa;
goto ngetbot;
ngdac: ngctr --;
ngdbb: ddcmp = *(absi+(ngctr+startx-1));
ngctr ++;
ngdigit=posdigit(ddcmp,
"0123456789ABCDEF0123456789abcdef!!!!");
if(ngdigit>15)goto ngetbot;
nget *= basex;
nget += ngdigit;
if(ngctr<widthx)goto ngdbb;
ngetbot: ngctr=0;
return nget;
}
char* litrlc(char* beginlis, long litwhich)
{
long rlcpos, rlcvase, rlczos;
char* litbase;
litbase=beginlis;
rlcvase=numberget(litbase,1,8,10);
rlcpos=litwhich;
rlczos=rlcpos+rlcpos;
rlcpos=rlczos+rlczos;
rlczos=rlcpos+rlcpos+1;
rlcpos=numberget(litbase,rlczos,8,10);
rlczos=rlcpos+rlcvase+0;
litbase=beginlis+rlczos;
return litbase;
}
void read2426(char* xy2426,long readsel126)
{
// after checking repeat determine end of file.
long delay2426,insel2426;
char* rtranchr;
// ***ERROR*** previously forgot to initialize
// eofi before reading.
eofi=0;
pose=hiskwid;
fp04=0;
rep0=0;
one2 = '*';
hv0c=6;
evdk=0;
insel2426=11;
rtranchr=alselset(xy2426,insel2426);
delay2426=0;
rd2428loop: if(rep0 != 0)goto rd2430;
if(delay2426 != 0)goto rd2458;
rd2430: reedline();
if(eofi == 0)goto rd2432;
delay2426 = 1;
rd2432: aptinsert(rtranchr);
goto rd2428loop;
rd2458: x=1;
}
void llpriz(char* wrtloc,long wrtmany)
{
long wwrtctr;
char wwchr;
char* awwchr;
awwchr = &wwchr;
wwrtctr=0;
while (wwrtctr < wrtmany)
{
*awwchr = *(wrtloc + wwrtctr);
// 1365 rem fwrite(awwchr,1,1,edhanw);
array939[(16/4)]=edhanw;
array939[(20/4)]=(int)awwchr;
array939[(24/4)]=1;
array939[(28/4)]=64*256;
// 40h write to file handle
dpms939(array939);
wwrtctr = wwrtctr + 1;
}
}
void lpriz()
{
long wrx,lenvalb,wra2469;
char wrtar[84];
char *prsrc;
prsrc=alselset(crz0160,3);
wrx=0;
lenvalb=clenval(prsrc);
while(wrx < lenvalb)
{
wrtar[wrx] = *(prsrc + wrx);
wrx = wrx + 1;
}
wra2469 = wbe2469;
while(wra2469 < 2)
{
*(wrtar + wrx) = *(weda2469 + wra2469);
wrx=wrx+1;
lenvalb=lenvalb+1;
wra2469 = wra2469 + 1;
}
llpriz(wrtar,lenvalb);
}
void write2470()
{
y=0;
loop2472: y ++;
if(y > afilelen)goto z2514;
aptread(alselset(crz0160,3),y);
lpriz();
goto loop2472;
z2514: x=1;
}
void open2520(char* xy2520,long opensel8)
{
// variables already relocated
// ?? freddy=dagra;
if((dagra & 3) == 1)goto aopend2082;
if((dagra & 3) == 3)goto z2533;
aopend2082: alsel520=opensel8+6;
// 1 start 3 reenter with a key
freddy=dagra+2;
insertype=1;
ikey = '*';
if(opensel8 > 1)goto z2526;
clearline(alselset(xy2520,alsel520));
z2526: lval2520=clenval(alselset(xy2520,alsel520));
x=lval2520+1;
yp2520=10;
goto az2531;
z2530: yp2520=10;
az2531: cvgcline(xy2520,alsel520,yp2520,2);
z2532d: goto opend2145;
z2533: keval2=archkey;
kelp2=archtype;
prevfound=ikey;
ikey=(keval2 & 255);
alsel520=opensel8+6;
albase20=alselset(xy2520,alsel520);
if((keval2=='\15')||(keval2=='\12'))goto z2584;
if(keval2 == '\10')goto z2546;
if(kelp2 != '1')goto z2564;
if(opensel8 < 1)goto z2543;
if(keval2 > '\177')goto z2542;
if(keval2 < '\00')goto z2542;
if(keval2 < '\40')goto z2542;
z2541: goto z2543;
z2542: keval2 = '\40';
z2543: if(x>a80w)goto z2545;
ikx1864(xy2520,ikey,alsel520);
z2545: goto z2548;
z2546: if(x<2)goto z2548;
z2547: alsel=alsel520;
dkx2050(xy2520,8);
z2548: cvgcline(xy2520,alsel520,yp2520,2);
goto z2530;
z2560: alsel=alsel520;
dkx2050(xy2520,4);
goto z2548;
z2564: if(keval2 == 'S')goto z2560;
if(keval2 == 'M')goto z2574;
if(keval2 == 'K')goto z2580;
if(keval2 == 'R')goto z2577;
if(keval2 == 'O')goto rr2571;
goto z2548;
rr2571: x=1;
goto z2548;
z2574: x++;
if(x>a80w)x=a80w;
goto z2548;
z2577: insertype = 1 - insertype;
goto z2548;
z2580: x --;
if(x<1)x=1;
goto z2548;
z2584: alsel520=opensel8+6;
lval2520=clenval(alselset(xy2520,alsel520));
// is error in c++ findbase=albase20;
findlen=lval2520;
if(opensel8 < 1)goto z2600;
// not used in this
// version arbcopy(rs[opensel8-1].rfn,albase20);
// 1104
// 1105
// 1106
z2600: x=1;
freddy=dagra-1;
opend2145: if(x < 1)x=1;
// freddy = 1 start 3 get next key
// 2 done with open2520
}
void new2608()
{
ypheight=24;
ypheight=(*(stdscr))._maxy;
if(ypheight > 24)ypheight=24;
a80w=80;
cmdheight=9;
// unused variable rs[0].maxreclen1c=a80w;
// unused variable rs[1].maxreclen1c=a80w;
nzshift=0;
iktmany(iidk512);
x=1;
y=1;
// xp,yp;
prindiff=0;
prinjill=0;
// moux,mouy insel alsel,ytaelon,
nzerror=0;
tinyoar=(zoar / a80w)-3;
afilelen=0;
chnext=0;
chdoc=0;
ch=0;
insertype=1;
inspg=0;
marginselect=1;
alocalh=0;
// findbase,findlen;
prindiffprv=0;
uprighty=0;
lowlefty=1;
tnymouxprv=0;
tnymouyprv=0;
mouallowlocal=0;
mouallowglobal=0;
yre=1;
xe=1;
// jysrc,tzby,jyheight yyectr,jydiff
// lowleftc,jydest
uprightx=0;
lowleftx=1;
bkgnd='\40';
// helpfindtest,jxwidth xe,jxdiff,
// readfnskipzur lowleftb,
uppercase=0;
// comeofdelay afilelenprv,moubutprv,mouctr;
evdk=0;
eofi=0;
pose=hiskwid;
rep0=0;
elevrd = alselset(crz0160,11);
hv0c=0;
clralocal2346();
kfcopy(alselset(crz0160,9),litrlc(litharg,52));
aptlocloc(alselset(crz0160,9),litrlc(litharg,52),a80w);
//edelev04.cpp
}
char sixcase(char ulchr)
{
char ucval6;
// 020h.40 061h.141 07ah.172 07eh.176
ucval6=ulchr;
if((ulchr < '\40')||(ulchr> '\176'))ucval6='\40';
if((ulchr>'\140')&&(ulchr<'\173'))ucval6=ulchr-'\40';
return ucval6;
}
void writez2754(char* wstart0160)
{
// variables have already been relocated
if((dagra & 3) == 1)goto zd2754;
if((dagra & 3) == 3)goto z2762;
zd2754: openselwd=2;
if(afilelen < 1)goto z2772;
yp=4;
// cls2330();
// kfcl(yp,"enter filename to be saved !");
yp=12;
z2762: open2520(wstart0160,openselwd);
if((freddy & 3) == 2)goto a2765;
goto arcb2754;
a2765: ldalb=clenval(alselset(wstart0160,(openselwd+6)));
if(ldalb < 1)goto z2772;
arbcopy(wfn2755,(alselset(wstart0160,(openselwd+6))));
if(openselwd < 2)goto ww2767;
// top of fn to nine
wnine2754=alselset(wstart0160,9);
nine2754t=0;
w2766: *(wnine2754+nine2754t) = '\40';
nine2754t ++;
if(nine2754t < 16)goto w2766;
nclem=0;
if(clenval(alselset(wstart0160,(openselwd+6)))>15)
{
nclem=2;
}
if(nclem > 1)goto ww2767;
kfcopy(wnine2754,wfn2755);
// bottom of fn to nine fn
// 1507 rem ww2767: edhanw = fopen(wfn2755,"wb");
ww2767: array939[(20/4)]=(int)wfn2755;
array939[(24/4)]=32;
array939[(28/4)]=60*256;
dpms939(array939);
// 3ch create file of name wfn2755
edhanw=array939[(28/4)];
// rz2766: wrtprni(% is undefined symbol)==1
// for diskette
z2768: write2470();
// rem 1510 fclose(edhanw);
array939[(16/4)]=edhanw;
array939[(28/4)]=62*256;
// 3eh close file of edhanw
dpms939(array939);
z2772: yp=12;
arcb2754: ten2754t=0;
}
long find2822(char* ptr160f,long fln,long fw2823)
{
// compare line fln with local line 6; returns
// zero if equal;
long findres,bfindctr,loclen;
long sixlen,finddisp,cfindctr;
char* findsixbase;
char* findsixptr;
char findcmp;
char findloca[160];
findres=1;
finddisp=0;
zg2822: aptread(findloca,fln);
loclen=clenval(findloca);
cfindctr=6;
findsixbase=alselset(ptr160f,cfindctr);
sixlen=clenval(findsixbase);
if(sixlen<1)goto z2838;
z2835: if(afilelen<y)goto z2838;
if(loclen<sixlen)goto z2838;
finddisp=0;
z2837: goto z2840;
z2838: findres=1;
goto z2856;
z2840: bfindctr=0;
z2841: cfindctr=bfindctr+finddisp;
if(cfindctr<a80w)goto z2842;
goto z2838;
z2842: findsixptr=findsixbase+bfindctr;
findcmp = *findsixptr;
if(findcmp == '\40')goto z2853;
if(findcmp != findloca[cfindctr])goto z2855;
z2853: bfindctr ++;
z2854: if(bfindctr<sixlen)goto z2841;
findres=0;
goto z2856;
z2855: findres=1;
finddisp ++;
if(finddisp < fw2823)goto z2837;
z2856: cfindctr=0;
return findres;
}
void john2880(char* xy2880, long aysrc,
long aydest, long aywidth)
{
// john2880 is animation with just one line
char* rindbase;
char* one2880;
char* hqsuba;
char* hxright;
long hxctr;
za2880: alsel=6;
rindbase=alselset(xy2880,alsel);
clearline(rindbase);
alsel=1;
one2880=alselset(xy2880,alsel);
z2889: aptread(one2880,aysrc);
z2890: hxctr=0;
z2892: hqsuba=rindbase+hxctr;
z2894: hxright=one2880+(hxctr+lowleftx-1);
*hqsuba = *hxright;
hxctr=hxctr+1;
z2902: if(hxctr < aywidth)goto z2892;
z2910: aptread(one2880,aydest);
// z2914 skip incrementing filelength, reassign
// filelength enlarging to caller
z2916: hxctr=0;
z2918: hqsuba=rindbase+hxctr;
hxright=one2880+(hxctr+lowleftb-1);
*hxright = *hqsuba;
hxctr=hxctr+1;
if(hxctr<aywidth)goto z2918;
// source line offset by lowleftx XXXXXXX
// XXXXXXX sixline offset by zero
// destination line offest by lowleftb XXXXXXX
z2932: aptwrite(one2880,aydest);
}
// z2936 rem john2938 copy animation rectangle
void john2938(char* xy2938)
{
long nextcalen;
zc2938: jxwidth=(0+uprightx-lowleftx);
nextcalen=afilelen;
z2939: lowleftc=y;
jyheight=(0+uprighty-lowlefty);
jynext=lowleftc+jyheight;
z2942: jydiff=lowleftc-lowlefty;
// 2943 rem jydiff < 0 start small decrease
// 2944 rem jydiff >=0 start big increase
z2949: lowleftb=x;
z2950: jxdiff=lowleftb-lowleftx;
z2951: if(jxwidth<0)goto z2984;
z2952: if(jyheight<0)goto z2984;
z2953: jxwidth=jxwidth+1;
jyheight=jyheight+1;
if(jydiff<0)goto z2972;
z2956: jysrc=uprighty;
yjn=0-1;
jydest=jynext;
goto z2976;
z2972: jysrc=lowlefty;
yjn=1;
jydest=lowleftc;
z2976: jyctr=0;
z2977: jyctr=jyctr+1;
z2978: john2880(xy2938,jysrc,jydest,jxwidth);
if(nextcalen < jydest)nextcalen=jydest;
z2979: jysrc=jysrc+yjn;
z2980: jydest=jydest+yjn;
z2982: if(jyctr < jyheight)goto z2977;
z2984: afilelen=nextcalen;
}
void zahexline(char* zbbelevt,int zathiswid,
int zaelevw)
{
int zatwctr,zatwbase,zatgterm;
long zatlterm;
zatwctr=0;
while(zatwctr < zaelevw)
{
*(zbbelevt + zatwctr) = '\40';
zatwctr=zatwctr+1;
}
zatwctr=0;
zatwbase=5;
*(zbbelevt + zatwbase) = 'D';
*(zbbelevt + (zatwbase + 1)) = 'B';
zatwbase=zatwbase+4;
*(zbbelevt + 61) = '\073';
while(zatwctr < zathiswid)
{
*(zbbelevt + (zatwbase + 3)) = 'H';
*(zbbelevt + (zatwbase + 4)) = ',';
readone();
zatlterm = (long)one2;
zatgterm = (int)zatlterm;
if(zatgterm < 0)zatgterm = zatgterm + 256;
zatlterm = (long)zatgterm;
numberprn(zbbelevt,(long)(zatwbase+1),
(long)3,(long)16,zatlterm);
zatwbase=zatwbase+6;
*(zbbelevt + (63 + zatwctr)) = '.';
if((zatgterm > 31)&&(zatgterm < 127))
{
*(zbbelevt+(63 + zatwctr))= (char)zatgterm;
}
zatwctr=zatwctr+1;
}
fp14=fp14+zathiswid;
}
void zahexgroup(char* zaz55ptr,int gclinesel,
int gcelevwid)
{
int zahgwid,zahgallow;
char* zaz56ptr;
zaz56ptr = alselset(zaz55ptr,gclinesel);
eofi=0;
fp04=0;
rep0=0;
one2=0;
hv0c=6;
fp14=0;
zahgallow = 1;
if(gcelevwid < 73)zahgallow=0;
while(zahgallow > 0)
{
zahgwid = fl06 - fp14;
if(zahgwid > 8)zahgwid = 8;
zahexline(zaz56ptr,zahgwid,gcelevwid);
if(zahgwid > 0)
{
aptinsert(zaz56ptr);
}
if((fl06 - fp14) <= 0)zahgallow = 0;
}
x=1;
}
// end of zahexgroup
void delefthh(char* absathh,long lenlhh,long hhone)
{
long lenlhj,dehhc,derhc;
lenlhj=lenlhh-hhone;
if(lenlhj < 0)lenlhj=0;
if(lenlhj > lenlhh)lenlhj=lenlhh;
dehhc=0;
derhc=dehhc+hhone;
while(dehhc < lenlhj)
{
derhc=dehhc+hhone;
*(absathh + dehhc) = *(absathh + derhc);
dehhc=dehhc+1;
}
if(hhone > 0)
{
while(derhc >= lenlhj)
{
if((derhc >= 0)&&(derhc < lenlhh))
{
*(absathh + derhc) = '\40';
}
derhc=derhc-1;
}
}
}
long lefmowid(char* abslmw,long lenlmw)
{
long lemores,lmooa,lmfirsta,lmwdc;
long lemoctr;
lmfirsta=1;
lmooa=1;
lemores=0;
lemoctr=0;
while(lmfirsta != 0)
{
lmwdc=(long)(*(abslmw + lemoctr));
if(lmwdc != 32)lmfirsta=0;
if(lmfirsta > 0)
{
lemoctr=lemoctr+1;
if(lemoctr >= lenlmw)lmfirsta=0;
}
}
if(lemoctr >= lenlmw)lmooa=0;
delefthh(abslmw,lenlmw,lemoctr);
while(lmooa > 0)
{
lmwdc=(long)(*(abslmw + lemores));
if(lmwdc == 32)lmooa=0;
if(lmooa > 0)
{
lemores=lemores+1;
if(lemores >= lenlmw)lmooa=0;
}
}
return lemores;
}
// end of lefmowid
long wordslin(char* wclinlp,long wclinwid)
{
long wrdslctr,wrdslcmp;
wrdslctr=0;
wrdslcmp=40;
while(wrdslcmp > 0)
{
wrdslcmp=lefmowid(wclinlp,wclinwid);
delefthh(wclinlp,wclinwid,wrdslcmp);
if(wrdslcmp > 0)
{
wrdslctr=wrdslctr+1;
if(wrdslctr >= wclinwid)wrdslcmp=0;
}
}
return wrdslctr;
}
// end of wordslin
void ron52640(char* z5ptr,char rosel)
{
if(dagra == 1505)goto zzl52640;
// variables have already been relocated
if((dagra>=26518)&&(dagra<=28959))goto roncmd38;
ron23389: if(dagra == 12643)goto r12643;
if(dagra == 12651)goto r12651;
if(dagra == 12735)goto r12735;
if(dagra == 12743)goto r12743;
if(dagra == 12779)goto r12779;
if(dagra == 12793)goto r12793;
if(dagra == 12799)goto r12799;
if(dagra == 12863)goto r12863;
if(dagra == 13075)goto r13075;
zzl52640: xe=1;
yre=1;
x=1;
y=1;
goto z52648;
// rem z52642 loop regular key regkey2176
// cls2330 clear screen
// z52642 R
z52642: cls2330();
x=xe;
y=yre;
z52645: freddy=12641;
dagra=freddy;
r12643: regkey2176();
if((freddy & 3) == 2)goto r52647;
goto ronbot40;
// 2349 regkey2176 within 2324 ron52640
r52647: xe=x;
yre=y;
z52648: kfc2398();
z52650d: freddy=12651;
goto ronbot40;
r12651: keytype5=archtype;
keychar5=archkey;
// conkey(&keytype5,&keychar5);
// call conkey 2356 within 2324 ron52640
// if(keytype5 == '0')goto z52650d;
if(keytype5 == '1')goto z52661;
// check for non-menu special keys
goto z52648;
z52661: if(keychar5 == '\15') goto z52642;
if(keychar5 == '\12') goto z52642;
if(keychar5 == '\33') goto z52800;
// insert char sixcase(char ulchr) before this
keycmd5=sixcase(keychar5);
z52662: if(keycmd5 == 'R')goto z52642;
if(keycmd5 != 'N')goto z52678;
z52674: new2608();
// z52674 N NEW
goto z52642;
z52678: if(keycmd5 == 'W')goto z52674;
// ***ERROR*** z52678 assigns same width
// to new wide as new .
z52679: if(keycmd5 == 'O')goto z52733;
z52680: if(keycmd5 == 'P')goto z52988;
z52681: if(keycmd5 == 'X')goto zxtog;
z52682: if(keycmd5 == 'L')goto z52736;
if(keycmd5 == '=')goto z52736;
z52683: if(keycmd5 == 'Z')goto zchgchk;
z52684: if(keycmd5 == 'A')goto z52776;
z52685: if(keycmd5 == 'U')goto zupcase;
z52686: if(keycmd5 == 'E')goto z52782;
z52687: if(keycmd5 == 'Q')goto z52800q;
z52688: if(keycmd5 == 'F')goto z52804;
z52689: if(keycmd5 == 'G')goto z52814;
z52690: if(keycmd5 == 'C')goto zcmdlineg;
z52691: if(keycmd5 == 'M')goto z53000;
z52692: if(keycmd5 == 'T')goto z52708;
z52693: if(keycmd5 == 'B')goto z52714;
// z52694: if(keycmd5 == 'V')goto zzl52640.CHANGE
z52695: if(keycmd5 == 'D')goto z52720;
z52696: if(keycmd5 == 'I')goto z52860;
z52697: if(keycmd5 == 'Y')goto z53072;
// gap in numbers 52698 to 52704
z52705: if(keycmd5 == 'H')goto z53054;
z52706: goto z52642;
// z52708 TOF z52714 BOT
// z52708 T
z52708: yre=1;
xe=1;
goto z52642;
// z52714 B
z52714: yre=afilelen+1;
xe=1;
goto z52642;
// z52720 D bkgnD
z52720: bkgnd=32;
// ***ERROR*** unable to resolve llpriz(?) or 2462();
// substituting kfcl(int,char*);
cls2330();
yp=4;
kfcl(yp,litrlc(litharg,56));
yp=10;
// rr52730u: conkey(&keytype5,&keychar5);
// cancel conkey 2413 within ron52640
// if(keytype5 != '0')goto rr52730u;
rr52730d: freddy=12735;
goto ronbot40;
r12735: keytype5=archtype;
keychar5=archkey;
keycmd5=sixcase(keychar5);
bkgnd=keycmd5;
goto z52642;
// z52733 O z52733 open
z52733: y=afilelen+1;
cls2330();
yp=4;
kfcl(yp,litrlc(litharg,57));
opendell=2;
goto z52738;
// z52736 L load
z52736: opendell=1;
cls2330();
yp=4;
kfcl(yp,litrlc(litharg,58));
z52738: yp=10;
z52742: freddy=12741;
dagra=freddy;
r12743: open2520(z5ptr,opendell);
if((freddy & 3) == 2)goto r12742;
goto ronbot40;
r12742: commandgui=1;
// begin common read at z52743
z52743: ldal=clenval(alselset(z5ptr,(opendell+6)));
if (ldal < 1) goto z52749;
arbcopy(fn2641,(alselset(z5ptr,(opendell+6))));
if(opendell < 2)goto z52744;
// top of fn to nine
xxabase=alselset(z5ptr,9);
fl06=0;
uu2754: *(xxabase+fl06) = '\40';
fl06 ++;
if(fl06 < 16)goto uu2754;
nclem=clenval(alselset(z5ptr,(opendell+6)));
if(nclem > 15)goto z52744;
kfcopy(xxabase,fn2641);
// bottom of fn to nine fn
// rem 1737 z52744: edhanb = fopen(fn2641,"rb");
z52744: array939[(20/4)]=(int)fn2641;
array939[(28/4)]=61*256;
dpms939(array939);
edhanb=array939[(28/4)];
// rem 1738 if(edhanb == NULL) goto z52749;
if((array939[(40/4)] & 1) != 0) goto z52749;
// rem 1739 fseek(edhanb,0,SEEK_END);
array939[(16/4)]=edhanb;
array939[(20/4)]=0;
array939[(24/4)]=0;
array939[(28/4)]=(66*256)+2;
// 42h get file pointer
dpms939(array939);
// rem 1740 fl06 = ftell(edhanb);
array939[(928/4)]=array939[(20/4)] << 16;
ncrim = array939[(28/4)] & 65535;
array939[(928/4)]=array939[(928/4)]+ncrim;
fl06=array939[(928/4)];
// rem 1741 fseek(edhanb,0,SEEK_SET);
array939[(16/4)]=edhanb;
array939[(20/4)]=0;
array939[(24/4)]=0;
array939[(28/4)]=66*256;
// 42h get file pointer
dpms939(array939);
if(afilelen == 0)goto z52746;
chdoc=1;
z52746: fp14=0;
if((keycmd5=='L')||(keycmd5=='O')||(commandgui==2))
{
read2426(z5ptr,opendell);
}
if((keycmd5=='=')&&(opendell==1)&&(commandgui==1))
{
zahexgroup(z5ptr,11,a80w);
}
// rem 1743 fclose(edhanb);
array939[(16/4)]=edhanb;
array939[(28/4)]=62*256;
// 3eh close file
dpms939(array939);
z52749: fl06 = 0;
hv0c = 0;
if(commandgui == 1)goto vv52749;
goto commandloop;
vv52749: yre=y;
// decide here how to exit read z52750 is gui
z52750: goto z52642;
// z52776 A
// z52774 rem z52776 save as 2776
z52776: cls2330();
yp=4;
kfcl(yp,litrlc(litharg,53));
yp=10;
freddy=12777;
dagra=freddy;
r12779: writez2754(z5ptr);
if((freddy & 3) == 2)goto z52778;
goto ronbot40;
z52778: chdoc=0;
// 2674 fix freddy
z52779: goto z52642;
// z52780: rem z52782 exit
// z52782 E
z52782: if(chdoc == 0)goto z52800;
z52784: yp=8;
cls2330();
yp=6;
kfcl(yp,litrlc(litharg,55));
yp=12;
// z52792u: conkey(&keytype5,&keychar5);
// cancel conkey 2508
// if(keytype5 != '0')goto z52792u;
z52792d: freddy=12793;
goto ronbot40;
r12793: keytype5=archtype;
keychar5=archkey;
// key not yet pressed if keytype5 still == 0
keycmd5=sixcase(keychar5);
z52794: if(keycmd5 == 'N')goto z52800;
if(keycmd5 == 'Y')goto z52797;
z52796: goto zzl52640;
z52797: cls2330();
yp=4;
kfcl(yp,litrlc(litharg,54));
yp=10;
freddy=12797;
dagra=freddy;
r12799: writez2754(z5ptr);
if((freddy & 3) == 2)goto r12798;
goto ronbot40;
r12798: chdoc=0;
// z52798: rem z52800 quit
// z52800 Q
goto z52800;
z52800q: ncurdey=0-9;
z52800: cls2330();
freddy=14040;
goto z53098;
// z52802: REM z52804 lowleftx lowlefty
// z52804 F set upleFt
z52804: lowleftx=xe;
lowlefty=yre;
z52808: goto z52642;
// z52810: rem z52814 uprightx uprighty
// z52814 G set upright
z52814: uprightx=xe;
uprighty=yre;
z52818: goto z52642;
// z52858: rem z52860 FIND
// z52860 I
z52860: yp=4;
cls2330();
yp=4;
kfcl(yp,litrlc(litharg,59));
yp=6;
opendell=0;
freddy=12861;
dagra=freddy;
r12863: open2520(z5ptr,opendell);
if((freddy & 3) == 2)goto r12862;
goto ronbot40;
r12862: lfdal=1;
if(prevfound != '\040')goto z52868;
lfdal=a80w;
z52868: if(find2822(z5ptr,y,lfdal) == 0)goto z52878;
y++;
yre=y;
if(y < (afilelen+1))goto z52868;
z52876: goto z52648;
// z52877: rem found z52878;
z52878: goto z52642;
// z52986 REM z52988 copy block lower left
// asking z52988 P coPy block lower left
// in if tree above
z52988: john2938(z5ptr);
z52990: lowleftx=lowleftb;
lowlefty=lowleftc;
uprighty=uprighty+jydiff;
uprightx=uprightx+jxdiff;
chdoc=1;
z52997: goto z52642;
// z52998: rem z53000 move block lower left
// z53000 M
z53000: john2938(z5ptr);
chdoc=1;
if(jxwidth<1)goto z52642;
z53003: if(jyheight<1)goto z52642;
z53004: if(lowleftx != lowleftb)goto z53008;
z53005: if(lowlefty == lowleftc)goto z52642;
z53008: tzrx=uprightx+jxdiff;
tzby=uprighty+jydiff;
yyectr=lowlefty;
z53020: xxjctr=lowleftx;
alsel=1;
z53026: xxabase=alselset(z5ptr,alsel);
aptread(xxabase,yyectr);
z53028: xxasub=xxabase+(xxjctr-1);
if(xxjctr<lowleftb)goto z53040;
if(xxjctr>tzrx)goto z53040;
if(yyectr<lowleftc)goto z53040;
if(yyectr>tzby)goto z53040;
goto z53042;
z53040: *xxasub = bkgnd;
z53042: xxjctr=xxjctr+1;
z53043: aptwrite(xxabase,yyectr);
z53046: if(xxjctr<(uprightx+1))goto z53028;
yyectr=yyectr+1;
if(yyectr<(uprighty+1))goto z53020;
z53050: goto z52990;
// z53053 rem z53054 undefined or incomplete
// z53054 H rightmost
z53054: alsel=1;
xxabase=alselset(z5ptr,alsel);
aptread(xxabase,yre);
ldal=clenval(xxabase);
xe=ldal+1;
if(x == xe)goto x53067;
if(xe<=a80w)goto z53068;
x53067: xe=a80w;
z53068: clearline(xxabase);
x=xe;
goto z52642;
// z53072 attempting to add y Ylinenumber at Y z53072
// on March 26, 2003
z53072: cls2330();
yp=4;
kfcl(yp,litrlc(litharg,60));
yp=6;
opendell=0;
freddy=13073;
dagra=freddy;
r13075: open2520(z5ptr,opendell);
if((freddy & 3) == 2)goto r13074;
goto ronbot40;
r13074: y=0;
y=numberget(alselset(z5ptr,(opendell+6)),1,8,10);
if(afilelen < y)y=afilelen+1;
if(y < 1)y=1;
yre=y;
goto z52642;
zupcase: uppercase = (97 - uppercase);
goto z52642;
zxtog: marginselect = (8 - marginselect);
goto z52642;
zchgchk: if(chdoc == 0)goto znochg;
goto z52648;
znochg: goto z52642;
// zcmdlineg is c list commands
zcmdlineg: rcmdctr=ypheight+12;
xe=x;
yre=y;
zcmdlindg: if(rcmdctr<11)goto zcmdlincg;
clearline(alselset(crz0160,rcmdctr));
rcmdctr --;
goto zcmdlindg;
zcmdlincg: goto commandloop;
cmderror: kfclev(litrlc(litharg,1));
commandprn();
commandloop: if(y<1)y=1;
if(afilelen<y)y=afilelen+1;
commandprn();
numberprn(alselset(crz0160,11),18,7,10,y);
commandprn();
kfclev(litrlc(litharg,3));
commandprn();
kfclev(litrlc(litharg,16));
commandprn();
kfclev(litrlc(litharg,29));
commandprn();
kfclev(litrlc(litharg,61));
commandprn();
freddy=26518;
goto ronbot40rh;
ron26519: cmdhmcur();
commandprn();
numberprn(alselset(crz0160,11),4,2,10,curcommand);
numberprn(alselset(crz0160,11),8,7,10,howmanycmd);
numberprn(alselset(crz0160,11),18,7,10,y);
commandprn();
// begin curcommand if section
tokrah3: if(curcommand != 3)goto tokrah4;
// 3 is insertb
kfclev(litrlc(litharg,62));
insertbc: commandprn();
freddy=26648;
goto ronbot40rh;
ron26649: aptinsert(alselset(crz0160,11));
commandprn();
y-- ;
chdoc=1;
goto commandloop;
tokrah4: if(curcommand != 4)goto tokrah5;
// 4 is insert
kfclev(litrlc(litharg,63));
if(afilelen < y)goto insertbc;
y ++;
goto insertbc;
tokrah5: if(curcommand != 5)goto tokrah6;
// 5 is delete
deletemany(howmanycmd);
chdoc=1;
goto commandloop;
tokrah6: if(curcommand != 6)goto tokrah7;
// 6 is af or wc
wordctra=0;
rcmdctr=0;
wcctop07: rcmdctr=rcmdctr+1;
if(rcmdctr > afilelen)goto wcdbot07;
aptread(alselset(crz0160,3),rcmdctr);
wordctra=wordctra+wordslin(alselset(crz0160,3),a80w);
goto wcctop07;
wcdbot07: if(wordctra < 1)goto cmderror;
numberprn(alselset(crz0160,11),18,9,10,wordctra);
commandprn();
goto commandloop;
tokrah7: if(curcommand != 7)goto tokrah8;
// 7 is m mright
rcmdctr=0;
if(y>afilelen)y=y-cmdheight;
rahm7: aptread(alselset(crz0160,11),(y+rcmdctr));
commandprn();
rcmdctr=rcmdctr+1;
if(rcmdctr < cmdheight)goto rahm7;
y=y+rcmdctr;
goto commandloop;
tokrah8: if(curcommand != 8)goto tokrah9;
// 8 is k kleft
rcmdctr=0;
rahm8: aptread(alselset(crz0160,11),(y+rcmdctr));
commandprn();
rcmdctr=rcmdctr+1;
if(rcmdctr < cmdheight)goto rahm8;
y=y-rcmdctr;
goto commandloop;
tokrah9: if(curcommand != 9)goto tokrah10;
// 9 is tof
y=1;
tofbotprn: if(y<1)y=1;
if(y>afilelen)y=afilelen+1;
aptread(alselset(crz0160,11),y);
commandprn();
goto commandloop;
tokrah10: if(curcommand != 10)goto tokrah11;
// 10 is bot
y=afilelen;
goto tofbotprn;
tokrah11: if(curcommand != 11)goto tokrah12;
// 11 is up
y=y-howmanycmd;
goto tofbotprn;
tokrah12: if(curcommand != 12)goto tokrah13;
// 12 is down
y=y+howmanycmd;
goto tofbotprn;
tokrah13: if(curcommand != 13)goto tokrah14;
// 13 is input
kfclev(litrlc(litharg,64));
y=afilelen+1;
commandprn();
// skip y=afilelen+1 in inputc
inputloop: freddy=27298;
goto ronbot40rh;
ron27299: rcmdctr=clenval(alselset(crz0160,11));
if(rcmdctr == 0)goto inputloov;
aptinsert(alselset(crz0160,11));
commandprn();
chdoc=1;
goto inputloop;
inputloov: goto commandloop;
// bottom of duplicate section
tokrah14: if(curcommand != 14)goto tokrah15;
// 14 is quit
if(howmanycmd != 0)y=howmanycmd;
ncurdey=0-11;
aptread(alselset(crz0160,11),y);
cvgcline(crz0160,11,(ypheight+1),5);
// rem 14 quit
freddy=14040;
goto z53098;
tokrah15: if(curcommand != 15)goto tokrah16;
// 15 is print (not supported in non-dos systems)
if(chdoc != 0)goto cmderror;
print3248();
goto commandloop;
tokrah16: if(curcommand != 16)goto tokrah17;
// 16 is replace
aptread(alselset(crz0160,11),y);
commandprn();
kfclev(litrlc(litharg,65));
commandprn();
freddy=27558;
goto ronbot40rh;
// commandprn();
ron27559: rcmdctr=clenval(alselset(crz0160,11));
if(rcmdctr != 0)goto fastreplace;
kfclev(litrlc(litharg,66));
commandprn();
freddy=27628;
goto ronbot40rh;
// commandprn();
ron27629: cncle=sixcase(*alselset(crz0160,11));
if(cncle != 'Y')goto skipreplace;
clearline(alselset(crz0160,11));
fastreplace: aptwrite(alselset(crz0160,11),y);
chdoc=1;
skipreplace: commandprn();
goto commandloop;
tokrah17: if(curcommand != 17)goto tokrah18;
// 17 is v
rcmdctr=0;
rahmv: aptread(alselset(crz0160,11),(y+rcmdctr));
commandprn();
rcmdctr=rcmdctr+1;
if(rcmdctr < cmdheight)goto rahmv;
goto commandloop;
tokrah18: if(curcommand != 18)goto tokrah19;
// 18 is open
commandgui=2;
fn1113();
if(clenval(alselset(crz0160,11))!=0)goto cmdreadrdy;
kfclev(litrlc(litharg,57));
commandprn();
freddy=27868;
goto ronbot40rh;
ron27869: nclem = clenval(alselset(crz0160,11));
if(nclem != 0)goto cmdreadrdy;
goto cmderror;
cmdreadrdy: aptlocloc(alselset(crz0160,8),
alselset(crz0160,11),a80w);
commandprn();
opendell=2;
goto z52743;
// z52743 is common read
tokrah19: if(curcommand != 19)goto tokrah20;
// 19 is save
commandgui=2;
wbe2469 = 1;
fn1113();
if(clenval(alselset(crz0160,11))!=0)goto cmdwriterdy;
if(clenval(alselset(crz0160,8))==0)goto cmdwrlev;
aptlocloc(alselset(crz0160,11),
alselset(crz0160,8),a80w);
goto cmdwriterdy;
cmdwrlev: kfclev(litrlc(litharg,54));
commandprn();
freddy=28058;
goto ronbot40rh;
ron28059: nclem=clenval(alselset(crz0160,11));
if(nclem != 0)goto cmdwriterdy;
goto cmderror;
cmdwriterdy: arbcopy(wfn2756,alselset(crz0160,11));
// edhanw=fopen(wfn2756,"wb");
array939[(20/4)]=(int)wfn2756;
// array939[(20/4)]=reinterpret_cast<int>(wfn2756);
array939[(24/4)]=32;
array939[(28/4)] = 60 * 256;
dpms939(array939);
// 3ch create file
edhanw=array939[(28/4)];
write2470();
// 2055 rem fclose(edhanw);
array939[(16/4)] = edhanw;
array939[(28/4)] = 62*256;
dpms939(array939);
// 3eh close file
freddy=14040;
goto z53098;
tokrah20: if(curcommand != 20)goto tokrah21;
// 20 is new
new2608();
goto commandloop;
tokrah21: if(curcommand != 21)goto tokrah22;
// 21 is change
aptread(alselset(crz0160,6),y);
kfclev(litrlc(litharg,67));
commandprn();
aptlocloc(alselset(crz0160,11),
alselset(crz0160,6),a80w);
commandprn();
freddy=28358;
goto ronbot40rh;
ron28359: chreqlen=clenval(alselset(crz0160,11));
chlevbase=alselset(crz0160,11);
chsixbase=alselset(crz0160,6);
chctr40=0;
changerah: if(chctr40 >= chreqlen)goto skipchanget;
chchr40 = *(chlevbase+chctr40);
if(chchr40 == '\40')goto skipchanger;
*(chsixbase+chctr40)=chchr40;
skipchanger: chctr40=chctr40+1;
goto changerah;
skipchanget: commandprn();
aptwrite(alselset(crz0160,6),y);
chdoc=1;
aptlocloc(alselset(crz0160,11),
alselset(crz0160,6),a80w);
clearline(alselset(crz0160,6));
commandprn();
goto commandloop;
tokrah22: if(curcommand != 22)goto tokrah23;
// 22 is find
fn1113();
nclem=clenval(alselset(crz0160,11));
if(nclem != 0)goto cmdfindmid;
kfclev(litrlc(litharg,59));
commandprn();
freddy=28608;
goto ronbot40rh;
cmdfindmid: aptlocloc(alselset(crz0160,6),
alselset(crz0160,11),a80w);
commandprn();
cmdfindchk: if(find2822(crz0160,y,1)==0)goto cmdfound;
y ++;
if(afilelen < y)goto cmdnotfound;
goto cmdfindchk;
cmdfound: aptread(alselset(crz0160,11),y);
commandprn();
goto commandloop;
cmdnotfound: goto cmderror;
tokrah23: if(curcommand != 23)goto tokrah24;
// 23 is list
if(afilelen < 1)goto cmdnotfound;
chctr40=1;
listouter: rcmdctr=0;
listinner: if(chctr40 > afilelen)goto cmdlisbyot;
aptread(alselset(crz0160,11),chctr40);
chctr40 ++;
commandprn();
rcmdctr ++;
if(rcmdctr < cmdheight)goto listinner;
kfclev(litrlc(litharg,68));
commandprn();
freddy=28858;
goto ronbot40rh;
ron28859: cncle=sixcase(*(alselset(crz0160,11)));
if(cncle == 'H')goto cmdlisbyot;
goto listouter;
cmdlisbyot: goto commandloop;
// 23 is list
tokrah24: if(curcommand != 24)goto tokrah25;
// 24 is inputc
kfclev(litrlc(litharg,69));
commandprn();
inputcloop: freddy=28958;
goto ronbot40rh;
ron28959: rcmdctr=clenval(alselset(crz0160,11));
if(rcmdctr == 0)goto inputcboov;
if(y>afilelen)goto inputczool;
y ++;
inputczool: aptinsert(alselset(crz0160,11));
chdoc=1;
commandprn();
y=y-1;
goto inputcloop;
inputcboov: goto commandloop;
// bottom of duplicate section
tokrah25: if(curcommand != 25)goto tokrah26;
// 25 is uc
uppercase=97;
goto commandloop;
tokrah26: if(curcommand != 26)goto tokrah27;
// 26 is lc
uppercase=0;
goto commandloop;
tokrah27: if(curcommand != 27)goto tokrah28;
// rem 27 gui
x=xe;
y=yre;
// rem 28 guiy
goto z52642;
tokrah28: if(curcommand != 28)goto tokrah29;
xe=x;
yre=y;
goto z52642;
tokrah29: goto cmderror;
// z53098 extended quit or q
z53098: ldal=1;
goto ronbot40;
roncmd38: ldal=2;
if(dagra == 26519)goto ron26519;
if(dagra == 26649)goto ron26649;
if(dagra == 27299)goto ron27299;
if(dagra == 27559)goto ron27559;
if(dagra == 27629)goto ron27629;
if(dagra == 27869)goto ron27869;
if(dagra == 28059)goto ron28059;
if(dagra == 28359)goto ron28359;
if(dagra == 28609)goto cmdfindmid;
if(dagra == 28859)goto ron28859;
if(dagra == 28959)goto ron28959;
goto ron23389;
ronbot40rh: nclem=0;
// fix ronbot40 at line 3389
ncrim = x;
clearline(alselset(crz0160,11));
x=1;
cvgcline(crz0160,11,(ypheight + 1),1);
x = ncrim;
ronbot40: nclem=2;
if((freddy & 1) != 0)nclem=0;
if(freddy < 26518)nclem=0;
if(freddy > 28959)nclem=0;
if(nclem > 1)rahkctr=0;
}
// end of ron52640 3401
void draw1712(int x1712,int y1712,char c1712)
{
int base1712,sub1712,ctr1712,get1712,ic1712;
int ncx1712,ncy1712,ncc1712,nca1712;
int xgb1712,xrb1712;
struct powercur spcx1712;
nca1712=131072-131072;
xgb1712=((x1712-1) >> 3)*7;
xrb1712=(x1712 -1) & 7;
ncx1712=x1712-1;
ic1712=(int)c1712;
if(ic1712 < 0)ic1712=ic1712+256;
get1712=(ic1712*256)+(2*xrb1712);
if(nzudletter > 0)
{
base1712=((26 - 1) - (y1712 - 1))*12*iswid72;
base1712=base1712+62+xgb1712+xrb1712;
if(nzskip62 == 0)base1712=base1712-62;
sub1712=base1712+(11*iswid72);
}
if(nzudletter == 0)
{
base1712=(y1712 - 1)*12*iswid72;
base1712=base1712+62+xgb1712+xrb1712;
if(nzskip62 == 0)base1712=base1712-62;
sub1712=base1712;
}
ncy1712=y1712-1;
powposition(&spcx1712,x1712-1,y1712-1);
ctr1712=0;
ncc1712=ic1712+nca1712;
// ncurses.h reposition then print character
move(ncy1712,ncx1712);
attron(COLOR_PAIR(color132));
addch(ncc1712);
attroff(COLOR_PAIR(color132));
}
// end of draw1712
void draw80(int y80)
{
int x80,ctr80,sub80,nca80wid;
char chu80;
sub80=(y80-1)*a80w;
ctr80=0;
nca80wid=a80w;
// if(y80 > 24)nca80wid=a80w-4;
if(y80 > ypheight)nca80wid=a80w-4;
while(ctr80 < nca80wid)
{
x80=ctr80+1;
chu80=ceescreen[sub80];
draw1712(x80,y80,chu80);
sub80=sub80+1;
ctr80=x80;
}
// draw80 calls draw1712
}
// end of draw80
void draw2080(int cpx2080,int cpy2080)
{
int cpxb2080,cpxr2080,ol2080,os2080;
int lef2080,rht2080,rht2081,limit2080;
int ncx2080,ncy2080,nchr2080,ncub2080;
int nca2080;
struct powercur sqa2080;
nca2080=131072-131072;
ol2080=0;
powposition(&sqa2080,cpx2080-1,cpy2080-1);
os2080=ol2080+62;
if(nzskip62 == 0)os2080=ol2080;
limit2080=iswid72 * xwyhgt;
ol2080=0;
while(ol2080 < (ypheight+1))
{
os2080=ol2080+1;
draw80(os2080);
ol2080=os2080;
}
// reposition cursor at sqa2080.neutx,sqa2080.neuty
rht2081=0;
if(insertype == 0)rht2081=16;
ncx2080=sqa2080.neutx;
ncy2080=sqa2080.neuty;
move(ncy2080,ncx2080);
ncub2080=((cpy2080-1)*a80w)+cpx2080-1;
nchr2080=(int)ceescreen[ncub2080];
if(nchr2080 < 0)nchr2080=nchr2080+256;
if(insertype == 0)nca2080=262144-262144;
nchr2080=nchr2080+nca2080;
if(insertype != 0)
{
attron(COLOR_PAIR(color133));
addch(nchr2080);
move(ncy2080,ncx2080);
attroff(COLOR_PAIR(color133));
}
if(insertype == 0)
{
attron(COLOR_PAIR(color134));
addch(nchr2080);
move(ncy2080,ncx2080);
attroff(COLOR_PAIR(color134));
}
// ------
// move(ncy2080,ncx2080);
}
// end of draw2080
void draw2083(struct powercur* yottx)
{
int x2083,y2083;
int wid2083,hgt2083,allow832;
allow832=2;
wid2083=0-1;
hgt2083=0-1;
wid2083=((*(stdscr))._maxx)+1;
hgt2083=((*(stdscr))._maxy)+1;
if(wid2083 < 80)allow832=0;
if(hgt2083 < (ypheight + 1))allow832=0;
ypheight = hgt2083 - 1;
if(ypheight > 24)ypheight=24;
if(hgt2083 < (ypheight + 1))allow832=0;
if(hgt2083 < 19)allow832=0;
if(allow832 > 1)
{
x2083 = (*(yottx)).neutx;
y2083 = (*(yottx)).neuty;
draw2080(x2083,y2083);
}
refresh();
}
// end of draw2083
void powscroll(char* sow2080)
{
int sowo,sowi,sowsub;
sowo=0;
while(sowo < 24)
{
sowi=0;
while(sowi < a80w)
{
sowsub=(sowo * a80w) + sowi;
*(sow2080+sowsub) = *(sow2080+(sowsub+a80w));
sowi=sowi+1;
}
sowo=sowo+1;
}
sowi=0;
while(sowi < a80w)
{
*(sow2080 + ((24 * a80w) + sowi)) = '\040';
sowi=sowi+1;
}
}
// end of powscroll
void powdraw(struct powercur* rottyx,
char* cow2080,char net80)
{
int powx,powy,powsub,scrollallow;
scrollallow=1;
powx = (*(rottyx)).neutx;
powy = (*(rottyx)).neuty;
if((powx >= 1)&&(powx <= a80w))
{
if((powy >= 1)&&(powy <= (ypheight+1)))
{
powsub=((powy - 1)*a80w)+(powx-1);
// depth = 3
*(cow2080 + powsub)=net80;
if(net80 == '\15')
{
powsub=((powy - 1)*a80w)+(powx-1);
*(cow2080 + powsub) = '\040';
}
// depth = 3
if(net80 == '\12')
{
while(powx <= a80w)
{
powsub=((powy - 1)*a80w)+(powx-1);
*(cow2080 + powsub) = '\040';
// if((powy >= 25)&&(powx < a80w))scrollallow = 0;
// depth = 5
powx=powx+1;
}
powx=a80w-1;
}
powx=powx+1;
(*(rottyx)).neutx = powx;
// depth = 3
if(powx > a80w)
{
(*(rottyx)).neutx = 1;
if((powy >= 25)&&(scrollallow > 0))
{
powscroll(cow2080);
}
if(powy < (ypheight+1))
{
// depth = 5
(*(rottyx)).neuty=powy+1;
}
}
}
}
}
// end of powdraw
void powcline(char* owcrec,int iwclen)
{
int piwctr;
char yet80;
piwctr=0;
while(piwctr < iwclen)
{
yet80 = *(owcrec + piwctr);
powdraw(&hottyx,ceescreen,yet80);
piwctr=piwctr+1;
}
}
// end of powcline
void powposition(struct powercur* pcuu,
int ppcx,int ppcy)
{
(*(pcuu)).neutx = ppcx;
(*(pcuu)).neuty = ppcy;
}
int redcst(int rdspos,int rdswid,
int rdsbase,char* rdsjc)
{
int tedrst;
long ledrst,ldspos,ldswid,ldsbase;
ldspos=(long)rdspos;
ldswid=(long)rdswid;
ldsbase=(long)rdsbase;
ledrst=numberget(rdsjc,ldspos,ldswid,ldsbase);
tedrst=(int)ledrst;
return tedrst;
}
void ilinemake(int* iixt,char* xxdd)
{
int xsspos,xssmany,xssbase,xssctr,xsssub,xsstw;
int xssterm,xtssub;
// xsspos 999 xssbase-1 F xssmany 99 xsstw 9
// 9 f 5
xsspos=redcst(1,3,10,xxdd);
xssbase=redcst(4,1,16,xxdd);
xssmany=redcst(5,2,10,xxdd);
xssctr=0;
if((xssbase == 9)||(xssbase == 15))
{
xsstw = redcst(7,1,16,xxdd);
while(xssctr < xssmany)
{
xsssub = (xssctr * xsstw) + 8;
xtssub = xssctr + xsspos;
xssterm=redcst(xsssub,xsstw,(xssbase+1),xxdd);
*(iixt + xtssub) = xssterm;
xssctr=xssctr+1;
}
}
if(xssbase == 5)
{
while(xssctr < xssmany)
{
xsssub = xssctr + 6;
xtssub = xssctr + xsspos;
xssterm = (int)(*(xxdd + xsssub));
*(iixt + xtssub)=xssterm;
xssctr = xssctr+1;
}
}
}
void iktmany(int* imxt)
{
int iktmanyctr;
iktmanyctr=0;
while(iktmanyctr < 512)
{
*(imxt + iktmanyctr)=131065;
iktmanyctr=iktmanyctr+1;
}
// -------------------------------------------
ilinemake(imxt,"079F0423738392D");
ilinemake(imxt,"083F0423435362B");
ilinemake(imxt,"087F052313233302E");
ilinemake(imxt,"097F04324724824924B");
ilinemake(imxt,"102F06324D24F250251252253");
// -------------------------------------------
ilinemake(imxt,"063F0122A");
ilinemake(imxt,"112F0122F");
ilinemake(imxt,"050F01210");
ilinemake(imxt,"062901216");
ilinemake(imxt,"022F01208");
ilinemake(imxt,"009F0121B");
ilinemake(imxt,"023F01209");
// --
ilinemake(imxt,"0105101234567890");
ilinemake(imxt,"024510qwertyuiop");
ilinemake(imxt,"038509asdfghjkl");
ilinemake(imxt,"052507zxcvbnm");
// --
ilinemake(imxt,"0369013013");
ilinemake(imxt,"108F0120D");
ilinemake(imxt,"0659013032");
ilinemake(imxt,"020F0222D3D");
ilinemake(imxt,"051F0125C");
ilinemake(imxt,"034F0225B5D");
ilinemake(imxt,"047F0223B27");
ilinemake(imxt,"059F0322C2E2F");
ilinemake(imxt,"049F01260");
// ----------------------------------------------------
ilinemake(imxt,"305F0127E");
ilinemake(imxt,"2669103033064035036037094038042040041");
ilinemake(imxt,"280510QWERTYUIOP");
ilinemake(imxt,"294509ASDFGHJKL");
ilinemake(imxt,"308507ZXCVBNM");
// -------------
ilinemake(imxt,"276F0225F2B");
ilinemake(imxt,"307F0127C");
ilinemake(imxt,"290F0227B7D");
ilinemake(imxt,"303F0223A22");
ilinemake(imxt,"315F0323C3E3F");
// --
}
// LINUX KEYBOARD TRANSLATOR TOP
// lreadc redcst
// need xxkeyhold next
int iidoskey(int kkll,int kshiftb,int ixkeyhold[],
const char* klinuxcm)
{
int klinuxmm,zandtogi;
int lidoskrs,lidoslr;
int wasdkeyused;
// x=120 v=118
char clinuxcm;
clinuxcm = *klinuxcm;
klinuxmm = (int)clinuxcm;
lidoskrs=131072;
wasdkeyused=0;
if(klinuxmm == 120)
{
// *klinuxcm == 'x' for xwindows key conversion
lidoslr = kkll;
if((lidoslr >= 0)&&(lidoslr < 256))
{
if(kshiftb == 1)lidoslr=kkll+256;
lidoskrs = ixkeyhold[lidoslr];
wasdkeyused=1;
}
}
if(klinuxmm == 118)
{
// klinuxcm=="v"for int vga_getkey() within <vga.h>
zandtogi=1;
if(kkll < redcst(1,2,16,"00"))zandtogi=0;
if(kkll > redcst(1,2,16,"7E"))zandtogi=0;
if(zandtogi == 1)
{
lidoskrs=kkll;
}
if(kkll == redcst(1,2,16,"7F"))lidoskrs=8;
// -------------------------------------------------
if(kkll==redcst(1,8,16,"1B5B317E"))lidoskrs=512+71;
if(kkll==redcst(1,8,16,"001B5B41"))lidoskrs=512+72;
if(kkll==redcst(1,8,16,"1B5B357E"))lidoskrs=512+73;
if(kkll==redcst(1,8,16,"001B5B44"))lidoskrs=512+75;
if(kkll==redcst(1,8,16,"001B5B43"))lidoskrs=512+77;
if(kkll==redcst(1,8,16,"1B5B347E"))lidoskrs=512+79;
if(kkll==redcst(1,8,16,"001B5B42"))lidoskrs=512+80;
if(kkll==redcst(1,8,16,"1B5B367E"))lidoskrs=512+81;
if(kkll==redcst(1,8,16,"1B5B327E"))lidoskrs=512+82;
if(kkll==redcst(1,8,16,"1B5B337E"))lidoskrs=512+83;
// -------------------------------------------------
wasdkeyused=1;
}
if(wasdkeyused == 0)lidoskrs=klinuxmm;
return lidoskrs;
}
// end of int iidoskey(int,int,int[],const char*)
// ----------------------------------------------
int gagetch(int nzwait)
{
// change gagetch from vga_getkey() to getch()
// ncurses.h version of int getch()
int gares,gaterm,gatermy;
int gapage,gagres,gagpr;
gapage=0;
gares=0;
gagpr=0-1;
gagres=0-1;
gaterm=0;
if(nzwait == 0)goto zeekeep;
zeukeep: gaterm=0;
// gaterm=(vga_getkey() & 255);
gaterm=getch();
// if(gaterm == 0)goto zeekeep;
if(gaterm == ERR)goto zeekeep;
// if(gaterm != 0)goto zeukeep;
if(gaterm != ERR)goto zeukeep;
zeekeep: gaterm=0;
// gaterm=(vga_getkey() & 255);
gaterm=getch();
if(nzwait == 0)
{
gares=gaterm;
if((gares >= 0)&&(gares <= 126))gagres=gares;
}
if(nzwait == 0)goto zeekbot;
// if(gaterm == 0)goto zeekeep;
if(gaterm == ERR)goto zeekeep;
// zeenext: gares = gares * 256;
zeenexty: gares=0;
gares = gares + gaterm;
gaterm=0;
// gaterm=(vga_getkey() & 255);
gaterm=getch();
// if(gaterm == 0)goto zeekbot;
if(gaterm == ERR)goto zeekbot;
// goto zeenext;
zeekbot: gatermy=gares;
if(nzwait == 0)
{
if((gares == 0)||(gares == 224))
{
gatermy=0-1;
while(gatermy == (0-1))
{
gatermy=getch();
gapage=2;
}
if(gatermy == 71)gagpr=redcst(1,8,16,"1B5B317E");
if(gatermy == 72)gagpr=redcst(1,8,16,"001B5B41");
if(gatermy == 73)gagpr=redcst(1,8,16,"1B5B357E");
if(gatermy == 75)gagpr=redcst(1,8,16,"001B5B44");
if(gatermy == 77)gagpr=redcst(1,8,16,"001B5B43");
if(gatermy == 79)gagpr=redcst(1,8,16,"1B5B347E");
if(gatermy == 80)gagpr=redcst(1,8,16,"001B5B42");
if(gatermy == 81)gagpr=redcst(1,8,16,"1B5B367E");
if(gatermy == 82)gagpr=redcst(1,8,16,"1B5B327E");
if(gatermy == 83)gagpr=redcst(1,8,16,"1B5B337E");
// 71G home 72H uparrow 73I pageup
// 75K leftarrow 77M rightarrow 79O end
// 80P downarrow 81Q pagedown 82R insert
// 83S delete
// DOS table here 3825
}
}
if(gapage == 0)
{
// add inverse translation here
if((gatermy >= 0)&&(gatermy <= 126))
{
gares=gatermy;
gagres=gatermy;
}
if(gatermy == 8)gagpr=redcst(1,8,16,"0000007F");
if(gatermy == 263)gagpr=redcst(1,8,16,"0000007F");
if(gatermy == 262)gagpr=redcst(1,8,16,"1B5B317E");
if(gatermy == 259)gagpr=redcst(1,8,16,"001B5B41");
if(gatermy == 339)gagpr=redcst(1,8,16,"1B5B357E");
if(gatermy == 260)gagpr=redcst(1,8,16,"001B5B44");
if(gatermy == 261)gagpr=redcst(1,8,16,"001B5B43");
if(gatermy == 360)gagpr=redcst(1,8,16,"1B5B347E");
if(gatermy == 258)gagpr=redcst(1,8,16,"001B5B42");
if(gatermy == 338)gagpr=redcst(1,8,16,"1B5B367E");
if(gatermy == 331)gagpr=redcst(1,8,16,"1B5B327E");
if(gatermy == 330)gagpr=redcst(1,8,16,"1B5B337E");
// end of inverse translation
}
if(gagpr > 0)gagres=gagpr;
return gagres;
}
// bottom of gagetch
void print3248()
{
char line3248[84];
char* three3248;
FILE* han3249;
int allow3248,ctr3248,len3248;
int ilop3248,ilop3249;
allow3248=2;
three3248=alselset(crz0160,3);
ctr3248=1;
han3249 = stdout;
// han3249=popen("lpr\0","wb");
while(allow3248 > 1)
{
if(ctr3248 > afilelen)allow3248 = 0;
if(allow3248 > 1)
{
aptread(three3248,ctr3248);
len3248=clenval(three3248);
ilop3248=0;
while(ilop3248 < len3248)
{
cncri = *(three3248 + ilop3248);
*(line3248 + ilop3248) = cncri;
ilop3248=ilop3248+1;
}
ilop3249=wbe2469;
while(ilop3249 < 2)
{
cncri = *(weda2469 + ilop3249);
*(line3248 + len3248)=cncri;
len3248=len3248+1;
ilop3249=ilop3249+1;
}
print3250(line3248,len3248,han3249);
ctr3248=ctr3248+1;
}
}
// pclose(han3249);
}
// end of print3248
void print3250(char* cpt3250,int len3250,
FILE* han3250)
{
int ctr3250,rectr3250,olop3250,prod3250;
int ilop3250;
char one3250[1];
ctr3250=0;
while(ctr3250 < len3250)
{
*(one3250 + 0) = *(cpt3250 + ctr3250);
fwrite(one3250,1,1,han3250);
// copyable delay
olop3250=0;
while(olop3250 < prtdouter)
{
ilop3250=0;
while(ilop3250 < prtinnerd)
{
prod3250=prtretrace*prtdouter;
ilop3250=ilop3250+1;
}
olop3250=olop3250+1;
}
// end of delay loops
ctr3250=ctr3250+1;
}
rectr3250=0;
while(rectr3250 < prtretrace)
{
// copyable delay
olop3250=0;
while(olop3250 < prtdouter)
{
ilop3250=0;
while(ilop3250 < prtinnerd)
{
prod3250=prtretrace*prtdouter;
ilop3250=ilop3250+1;
}
olop3250=olop3250+1;
}
// end of delay loops
rectr3250=rectr3250+1;
}
}
// end of print3250
int main(int argd,char** argsa)
{
ncurdey=0-11;
color132=2;
color133=3;
color134=4;
wbe2469 = 0;
initscr();
cbreak();
noecho();
keypad(stdscr,TRUE);
// not used nodelay(stdscr,TRUE);
start_color();
init_pair(1,COLOR_WHITE,COLOR_BLACK);
init_pair(2,COLOR_WHITE,COLOR_BLUE);
init_pair(3,COLOR_WHITE,COLOR_MAGENTA);
init_pair(4,COLOR_GREEN,COLOR_RED);
scrollok(stdscr,TRUE);
// end of ncurses.h initialization
// depth = 2.0
jyctr=0;
while(jyctr < 1024)
{
array939[jyctr]=0;
jyctr=jyctr+1;
}
jyctr=0;
while(jyctr < 2080)
{
ceescreen[jyctr]='\052';
jyctr=jyctr+1;
}
jyctr=0;
freddy=1505;
dagra=freddy;
ttr939 = &array939[0];
array939[224]=(long)ttr939;
array939[228]=33;
array939[231]=259;
hottyx.neutx=0;
hottyx.neuty=0;
archtype=0;
rahkctr=0;
archkey=0;
new2608();
ron52640(crz0160,'Q');
draw2083(&hottyx);
// command tail section is next
// after first partial draw
jyctr=0;
if(argd == 2)
{
rjkey = (int)'o';
archtype=48;
archkey=rjkey & 255;
if((rjkey>=512)&&(rjkey<=767))archkey=archkey+1024;
if((archkey<=255)&&(archkey>=0))archtype=49;
if(archkey > 1023)archtype=50;
dagra=sockeyline(freddy,archkey,&rahkctr,crz0160);
if((dagra & 1) != 0)
{
ron52640(crz0160,'Q');
}
// depth = 3.0
draw2083(&hottyx);
while(jyctr < 40)
{
rjkey = (int)(*(*(argsa + 1)+jyctr));
if(rjkey < 32)
{
rjkey = 13;
jyctr=129;
}
archtype=48;
archkey=rjkey & 255;
if((rjkey>=512)&&(rjkey<=767))archkey=archkey+1024;
if((archkey<=255)&&(archkey>=0))archtype=49;
if(archkey > 1023)archtype=50;
dagra=sockeyline(freddy,archkey,&rahkctr,crz0160);
if((dagra & 1) != 0)
{
ron52640(crz0160,'Q');
}
// depth = 3.0
draw2083(&hottyx);
jyctr=jyctr+1;
}
}
jyctr=0;
xwolop=1;
while(xwolop == 1)
{
// depth = 3.0
ckey=gagetch(0);
// top of keyboard callback
if(ckey >= 0)
{
ncurdey=ckey;
archtype=48;
rjkey=iidoskey(ckey,nzshift,iidk512,"v");
archkey=rjkey & 255;
if((rjkey>=512)&&(rjkey<=767))archkey=archkey+1024;
if((archkey <= 255)&&(archkey >= 0))archtype=49;
if(archkey > 1023)archtype=50;
iswid72=(xwxwid + 7) >> 3;
if(((freddy & 1) == 0)&&(archtype == 50))
{
dagra=sockeyline(freddy,32,&rahkctr,crz0160);
}
dagra=sockeyline(freddy,archkey,&rahkctr,crz0160);
if((dagra & 1) != 0)
{
ron52640(crz0160,'Q');
}
// depth = 3.0
draw2083(&hottyx);
if(freddy == 14040)xwolop=0;
if(nzerror == 1)xwolop=0;
}
// bottom of keyboard callback
}
color132=1;
color133=1;
color134=1;
cls2330();
draw2083(&hottyx);
if(ncurdey > (0 - 8))
{
kfc2398();
}
if(ncurdey == (0-9))
{
chrvgapage(crz0160,5);
cvgcline(crz0160,9,(ypheight+1),4);
cvgcline(crz0160,5,(y-prindiff),2);
}
if(ncurdey == (0-11))
{
aptread(alselset(crz0160,11),y);
cvgcline(crz0160,11,(ypheight+1),5);
}
draw2083(&hottyx);
clear();
refresh();
endwin();
return 0;
}
// end of edelev13.c
/* after
end of program

0 new messages