/*Copyright (c) Anker Berg-Sonne, 1985,1986,1987*/ #include "proto.h" void Fast Wait_Char() { #if (defined(ATARI) & defined(GEM)) | ((defined(DOS) | defined(NT)) & (defined(Windows) | defined(TV))) Mouse_OK=0; #endif Opt_Cursor(Scr_Length,(long)1); while (1) {Get16(); if (Character==13||Character==8||isalnum(Character)||Character==' '|| (Key_Number>=25&&Key_Number<=50)||Key_Number==12) /* 290a */ break; Out_C('\7'); } #if (defined(ATARI) & defined(GEM)) | ((defined(DOS) | defined(NT)) & (defined(Windows) | defined(TV))) Mouse_OK=1; #endif } void Fast Show_Help() {while (1) {Display_Help(Help_Pos=Del.Pos-Dl_Pointers[Help_String][0]); Wait_Char(); if (At_End||(Character!=13&&Key_Number!=48&&Key_Number!=50 &&Key_Number!=26&&Key_Number!=29)) break; } } void Fast Display_Help(long P) {char C; Opt_Cursor(2,(long)1); B_Goto(&Del,Dl_Pointers[Help_String][0]+P); while (1) {if (Del.Pos>=Dl_Pointers[Help_String][0]+Dl_Pointers[Help_String][1]) break; if ((C=B_Get(&Del))!='\n'&&C!='\r'&&C!=' ') {if (C==12) {B_Search(&Del,'\n', Dl_Pointers[Help_String][0]+Dl_Pointers[Help_String][1]); At_End=0; Wait_Mess(Txt_More); return; } else {B_B_Get(&Del); break; } } else {if (My_Line==Scr_Length-1) {At_End=0; B_B_Get(&Del); Wait_Mess(Txt_More); return; } while (C!='\n'&& Del.Pos='0'&&C<='9') {Key=0; J+=2; while (J='0'&&C<='9') {Key=Key*10+C-'0'; J++; } J--; for (K=0;K=1000) {H_Col++; B_Put(&Del,(char)((Key/1000)%10+'0')); } if (Key>=100) {H_Col++; B_Put(&Del,(char)((Key/100)%10+'0')); } if (Key>=10) {H_Col++; B_Put(&Del,(char)((Key/10)%10+'0')); } B_Put(&Del,(char)(Key%10+'0')); H_Col++; } } } else {H_Col++; B_Put(&Del,'%'); } } else if ((C=Dsk_Rec[J+1])=='A'||C=='a') {if ((C=Dsk_Rec[J+2])>='0'&&C<='9') {Key=0; J+=2; while (J='0'&&C<='9') {Key=Key*10+C-'0'; J++; } J--; OK=0; for (K=0;K=1000) {H_Col++; B_Put(&Del,(char)((Key/1000)%10+'0')); } if (Key>=100) {H_Col++; B_Put(&Del,(char)((Key/100)%10+'0')); } if (Key>=10) {H_Col++; B_Put(&Del,(char)((Key/10)%10+'0')); } B_Put(&Del,(char)(Key%10+'0')); H_Col++; } } } else {H_Col++; B_Put(&Del,'%'); } } else if (C=='C'||C=='c') {if ((C=Dsk_Rec[J+2])>='0'&&C<='9') {Key=0; J+=2; while (J='0'&&C<='9') {Key=Key*10+C-'0'; J++; } J--; if (KeyH_Col) {H_Col++; B_Put(&Del,' '); } } else {H_Col++; B_Put(&Del,'%'); } } else if (C=='T'||C=='t') {if ((C=Dsk_Rec[J+2])>='0'&&C<='9') {Key=0; J+=2; while (J='0'&&C<='9') {Key=Key*10+C-'0'; J++; } J--; if (Funcs[Key][2]!=0) {B_Goto(&Pad,Funcs[Key][2]); while ((C=B_Get(&Pad))!=0) {H_Col++; B_Put(&Del,(char)C); } } } else {H_Col++; B_Put(&Del,'%'); } } else if (C=='K'||C=='k') #if defined(MPE) {if (F_open((char *) Helpfile(),"r",&G)==NULL) #else #if defined(VMS) {if (F_open(Logical_File(Helpfile()),"r",&G)==NULL&& /* 290a */ F_open((char *) Helpfile(),"r",&G)==NULL&& F_open(Find_Dir(Helpfile(),Dsk_Rec),"r",&G)==NULL&& F_open(Find_Lib(Helpfile(),Dsk_Rec),"r",&G)==NULL) #else {if (F_open((char *) Helpfile(),"r",&G)==NULL&& (Find_Env(Helpfile(),Dsk_Rec,"SEDTP")==NULL|| F_open((char *) Dsk_Rec,"r",&G)==NULL)&& (Find_Env(Helpfile(),Dsk_Rec,"SEDT")==NULL|| F_open((char *) Dsk_Rec,"r",&G)==NULL)&& #if defined(UNIX) (Find_Env(Helpfile(),Dsk_Rec,"HOME")==NULL|| F_open((char *) Dsk_Rec,"r",&G)==NULL)&& #endif #if defined(DOS) | defined(NT) (Find_From(Helpfile(),Dsk_Rec)==NULL|| F_open((char *) Dsk_Rec,"r",&G)==NULL)&& #endif (Find_Path(Helpfile(),Dsk_Rec)==NULL|| F_open((char *) Dsk_Rec,"r",&G)==NULL)) #endif #endif Error(2,No_Help_File_Txt,Helpfile()); else {while ((C=F_getc(&G))!=EOF) B_Put(&Del,(char)C); F_close(&G); } } else {H_Col++; B_Put(&Del,'%'); if (C=='%') J++; } } else {H_Col++; B_Put(&Del,(char)C); } J++; } } F_close(&F); Dl_Pointers[Help_String][1]=Del.Pos-Dl_Pointers[Help_String][0]; } In_Help=1; #if defined(VMS) | defined(UNIX) if (Gotmouse) /* 290a */ Disable_Mouse(); #endif #if !(((defined(DOS) | defined(NT)) & (defined(Windows) | defined(TV))) | (defined(ATARI) & defined(GEM))) Set_Physical(); Clr_Screen(); #endif Set_Scroll(1,Scr_Length-1); Sav_Set(&Sav_Line,&Sav_Col,&Sav_Attributes,1,(long)1,0); Cur_Attributes=A_Reverse; Skip_To(Scr_Width+1); Opt_Cursor(Scr_Length-1,(long)1); Skip_To(Scr_Width+1); Cur_Attributes=0; Opt_Cursor(2,(long)1); Sav_Shift=Scr_Shift; Scr_Shift=0; Help_Level=0; B_Goto(&Del,Dl_Pointers[Help_String][0]); while (1) {Show_Help(); if (Character==13||Character==8||Key_Number==48||Key_Number==50 ||Key_Number==12) /* 290a */ {Help_Level--; if (Help_Level<0) break; } else /* 290a */ if (Key_Number>=31&&Key_Number<=40) {Help_Level++; Help_Levels[Help_Level-1]=Key_Number-31+'0'; } else if (isalnum(Character)) {Help_Level++; Help_Levels[Help_Level-1]=Character; } else if (Character==27) break; else if (Character==' '&&!Function) break; B_Goto(&Del,Dl_Pointers[Help_String][0]); if (Help_Level!=0) {while (1) {if (Del.Pos>=Dl_Pointers[Help_String][0]+Dl_Pointers[Help_String][1]) {B_Goto(&Del,Dl_Pointers[Help_String][0]); if ((--Help_Level)==0) break; } else {OK=1; for (I=0;OK&&I