Subject: v17i059: nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch1r/31 Newsgroups: comp.sources.games Approved: billr@saab.CNA.TEK.COM Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller) Posting-number: Volume 17, Issue 59 Archive-name: nethack31/Patch1r Patch-To: nethack31: Volume 16, Issue 1-116 Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'patches01q' <<'END_OF_FILE' X*** /tmp/da09110 Thu Feb 25 10:27:44 1993 X--- sys/amiga/wbcli.c Wed Feb 24 18:01:02 1993 X*************** X*** 126,135 **** X char *name; X char namebuf[50]; X char **argv=(char **)wbs; X X ZapOptions( curopts ); X InitWB( argc, (struct WBStartup *)argv ); X! errmsg( NO_FLASH, "Welcome to NetHack Version 3.1!\n" ); X CopyRight( ); X X ReadConfig( ); X--- 126,141 ---- X char *name; X char namebuf[50]; X char **argv=(char **)wbs; X+ #undef CMDLINE X+ #define CMDLINE X+ #ifdef CMDLINE X+ char newcmdline[80]=""; X+ char forcenewcmd=0; X+ #endif X X ZapOptions( curopts ); X InitWB( argc, (struct WBStartup *)argv ); X! errmsg( NO_FLASH, "Welcome to NetHack Version 3.1.1!\n" ); X CopyRight( ); X X ReadConfig( ); X*************** X*** 136,147 **** X X /* Wait till user quits */ X X while( !quit ) X { X! char tbuf[8]; X char *p=tbuf; X char *dirname=cnfsavedir; X /* play a game */ X { X int c; X argline[0]='\0'; X--- 142,187 ---- X X /* Wait till user quits */ X X+ #ifdef CMDLINE X+ { X+ int c; X+ /* slow but easy - not a critical path */ X+ for(c=1;c=sizeof(newcmdline)){ X+ forcenewcmd=1; X+ break; X+ } X+ strcpy(eos(newcmdline),argv[c]); X+ if(!strncmp(argv[c],"-u",2)){ X+ if(!strcmp(argv[c],"-u")){ X+ name= argv[c+1]; X+ }else{ X+ name= &argv[c][2]; X+ } X+ } X+ if(cgname, "NetHack 3.1 %s", gptr->name ); X X /* Create a process for the game to execute in */ X ctask = FindTask( NULL ); X--- 482,488 ---- X } X X /* Set the game name for the status command */ X! sprintf( gptr->gname, "NetHack 3.1.1 %s", gptr->name ); X X /* Create a process for the game to execute in */ X ctask = FindTask( NULL ); X*************** X*** 444,450 **** X gptr->wbs->sm_Process = proc; X gptr->wbs->sm_Segment = gptr->seglist; X gptr->wbs->sm_NumArgs = 2; X! gptr->wbs->sm_ToolWindow = "con:0/0/100/300/NetHack 3.1"; X gptr->wbs->sm_ArgList = gptr->wba; X X /* Fill in the args */ X--- 518,524 ---- X gptr->wbs->sm_Process = proc; X gptr->wbs->sm_Segment = gptr->seglist; X gptr->wbs->sm_NumArgs = 2; X! gptr->wbs->sm_ToolWindow = "con:0/0/100/300/NetHack 3.1.1"; X gptr->wbs->sm_ArgList = gptr->wba; X X /* Fill in the args */ X*************** X*** 1537,1543 **** X sidx = -1; X X /* Start past the 'options=' part */ X! for( t = str; !done; ++t ) X { X if( state == 0 && isspace( *t ) ) X continue; X--- 1611,1617 ---- X sidx = -1; X X /* Start past the 'options=' part */ X! for( t = str; *str && !done; ++t ) X { X if( state == 0 && isspace( *t ) ) X continue; X*************** X*** 1629,1635 **** X } X else X { X! errmsg( FLASH, "Unrecognized option %s", buf ); X return; X } X } X--- 1703,1709 ---- X } X else X { X! errmsg( FLASH, "Unrecognized option `%s'", buf ); X return; X } X } X*** /tmp/da09126 Thu Feb 25 10:27:49 1993 X--- sys/amiga/wbdefs.h Mon Feb 1 11:38:01 1993 X*************** X*** 159,165 **** X #define StrPens (Sbuff(&Conf_StrPens)) X #define StrLevels (Sbuff(&Conf_StrLevels)) X #define StrSave (Sbuff(&Conf_StrSave)) X! #define NetHackCnf (Sbuff(&Conf_ConfigName)) X X #define RstDir (Sbuff(&Rst_RestDir)) X #define RstOld (Sbuff(&Rst_RestOld)) X--- 159,165 ---- X #define StrPens (Sbuff(&Conf_StrPens)) X #define StrLevels (Sbuff(&Conf_StrLevels)) X #define StrSave (Sbuff(&Conf_StrSave)) X! #define StrConf (Sbuff(&Conf_ConfigName)) X X #define RstDir (Sbuff(&Rst_RestDir)) X #define RstOld (Sbuff(&Rst_RestOld)) X*** /tmp/da09134 Thu Feb 25 10:27:51 1993 X--- sys/amiga/wbprotos.h Wed Feb 24 09:38:35 1993 X*************** X*** 62,68 **** X void setoneopt P(( int idx , char *str )); X char *dirname P(( char *str )); X int StrRequest P(( char *prompt , char *buff , char *val )); X! void LoadDefaults P(( char *player )); X void SaveDefaults P(( char *player )); X void CopyDefs2Gad P(( void )); X void CopyGad2Defs P(( void )); X--- 62,68 ---- X void setoneopt P(( int idx , char *str )); X char *dirname P(( char *str )); X int StrRequest P(( char *prompt , char *buff , char *val )); X! int LoadDefaults P(( char *player )); X void SaveDefaults P(( char *player )); X void CopyDefs2Gad P(( void )); X void CopyGad2Defs P(( void )); X*************** X*** 101,105 **** X--- 101,108 ---- X struct Window *MyOpenWindow P(( struct NewWindow *nw )); X #endif X void SetUpMenus( register struct Menu *mp, register struct Screen *scrn ); X+ void UpdateCnfFile( void ); X+ char *basename( char * ); X+ void flushIDCMP( struct MsgPort *); X X #undef P X*** /tmp/da09150 Thu Feb 25 10:27:55 1993 X--- sys/amiga/wbwin.c Wed Feb 24 20:25:28 1993 X*************** X*** 1,4 **** X- /* This file is generated by PowerWindows do not edit */ X X static struct NewScreen NewScreenStructure = { X 0,0, X--- 1,3 ---- X*************** X*** 390,396 **** X #define MenuList1 Menu1 X X static struct NewWindow NewWindowStructure1 = { X! 34,34, X 565,148, X 0,2, X NEWSIZE+MOUSEBUTTONS+MOUSEMOVE+GADGETDOWN+GADGETUP+MENUPICK+CLOSEWINDOW+RAWKEY+DISKINSERTED, X--- 389,395 ---- X #define MenuList1 Menu1 X X static struct NewWindow NewWindowStructure1 = { X! 34,23, X 565,148, X 0,2, X NEWSIZE+MOUSEBUTTONS+MOUSEMOVE+GADGETDOWN+GADGETUP+MENUPICK+CLOSEWINDOW+RAWKEY+DISKINSERTED, X*************** X*** 2019,2025 **** X NULL, X 73,85, X 51,10, X! GADGDISABLED, X RELVERIFY, X BOOLGADGET, X (APTR)&Conf_Border40, X--- 2018,2024 ---- X NULL, X 73,85, X 51,10, X! NULL, X RELVERIFY, X BOOLGADGET, X (APTR)&Conf_Border40, X*************** X*** 2347,2353 **** X X static struct IntuiText Conf_IText59 = { X 3,0,JAM2, X! 9,72, X NULL, X "Save Dir:", X &Conf_IText60 X--- 2346,2352 ---- X X static struct IntuiText Conf_IText59 = { X 3,0,JAM2, X! 7,72, X NULL, X "Save Dir:", X &Conf_IText60 X*************** X*** 2363,2369 **** X X static struct IntuiText Conf_IText57 = { X 3,0,JAM2, X! 37,44, X NULL, X "Pens:", X &Conf_IText58 X--- 2362,2368 ---- X X static struct IntuiText Conf_IText57 = { X 3,0,JAM2, X! 39,44, X NULL, X "Pens:", X &Conf_IText58 X*************** X*** 2371,2377 **** X X static struct IntuiText Conf_IText56 = { X 3,0,JAM2, X! 16,30, X NULL, X "Hackdir:", X &Conf_IText57 X--- 2370,2376 ---- X X static struct IntuiText Conf_IText56 = { X 3,0,JAM2, X! 15,30, X NULL, X "Hackdir:", X &Conf_IText57 X*************** X*** 2379,2385 **** X X static struct IntuiText Conf_IText55 = { X 3,0,JAM2, X! 37,16, X NULL, X "Path:", X &Conf_IText56 X--- 2378,2384 ---- X X static struct IntuiText Conf_IText55 = { X 3,0,JAM2, X! 39,16, X NULL, X "Path:", X &Conf_IText56 X*************** X*** 2927,2933 **** X X static struct Gadget Help2_Gadget61 = { X NULL, X! 17,42, X 47,10, X NULL, X RELVERIFY, X--- 2926,2932 ---- X X static struct Gadget Help2_Gadget61 = { X NULL, X! 172,63, X 47,10, X NULL, X RELVERIFY, X*************** X*** 2943,2954 **** X X #define Help2_GadgetList8 Help2_Gadget61 X X static struct IntuiText Help2_IText75 = { X 3,0,JAM2, X 15,31, X NULL, X "resume the saved game.", X! NULL X }; X X static struct IntuiText Help2_IText74 = { X--- 2942,2961 ---- X X #define Help2_GadgetList8 Help2_Gadget61 X X+ static struct IntuiText Help2_IText76 = { X+ 3,0,JAM2, X+ 14,46, X+ NULL, X+ "Use the Help menu item to view the help file", X+ NULL X+ }; X+ X static struct IntuiText Help2_IText75 = { X 3,0,JAM2, X 15,31, X NULL, X "resume the saved game.", X! &Help2_IText76 X }; X X static struct IntuiText Help2_IText74 = { X*************** X*** 2971,2977 **** X X static struct NewWindow Help2_NewWindowStructure8 = { X 136,60, X! 372,58, X 0,1, X GADGETUP+CLOSEWINDOW+VANILLAKEY, X WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH, X--- 2978,2984 ---- X X static struct NewWindow Help2_NewWindowStructure8 = { X 136,60, X! 380,82, X 0,1, X GADGETUP+CLOSEWINDOW+VANILLAKEY, X WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH, X*************** X*** 2985,2991 **** X CUSTOMSCREEN X }; X X! static struct IntuiText About_IText76 = { X 1,0,JAM2, X 40,2, X NULL, X--- 2992,2998 ---- X CUSTOMSCREEN X }; X X! static struct IntuiText About_IText77 = { X 1,0,JAM2, X 40,2, X NULL, X*************** X*** 3002,3008 **** X BOOLGADGET, X NULL, X NULL, X! &About_IText76, X NULL, X NULL, X GADHELPOKAY, X--- 3009,3015 ---- X BOOLGADGET, X NULL, X NULL, X! &About_IText77, X NULL, X NULL, X GADHELPOKAY, X*************** X*** 3011,3017 **** X X #define About_GadgetList9 About_Gadget62 X X! static struct IntuiText About_IText85 = { X 2,0,JAM2, X 10,56, X NULL, X--- 3018,3024 ---- X X #define About_GadgetList9 About_Gadget62 X X! static struct IntuiText About_IText86 = { X 2,0,JAM2, X 10,56, X NULL, X*************** X*** 3019,3089 **** X NULL X }; X X! static struct IntuiText About_IText84 = { X 2,0,JAM2, X 20,47, X NULL, X "HackWB is copyright Gregg Wonderly and Ken Lorber,", X! &About_IText85 X }; X X! static struct IntuiText About_IText83 = { X 3,0,JAM2, X 8,31, X NULL, X "finished by Gregg...", X! &About_IText84 X }; X X! static struct IntuiText About_IText82 = { X 3,0,JAM2, X 135,22, X NULL, X "The programming was started by Ken and", X! &About_IText83 X }; X X! static struct IntuiText About_IText81 = { X 3,0,JAM2, X 120,22, X NULL, X ".", X! &About_IText82 X }; X X! static struct IntuiText About_IText80 = { X 2,0,JAM2, X 8,22, X NULL, X "Gregg Wonderly", X! &About_IText81 X }; X X! static struct IntuiText About_IText79 = { X 3,0,JAM2, X 396,13, X NULL, X "and", X! &About_IText80 X }; X X! static struct IntuiText About_IText78 = { X 2,0,JAM2, X 310,13, X NULL, X "Ken Lorber", X! &About_IText79 X }; X X! static struct IntuiText About_IText77 = { X 3,0,JAM2, X 8,13, X NULL, X "The NetHack WorkBench was designed by", X! &About_IText78 X }; X X! #define About_IntuiTextList9 About_IText77 X X static struct NewWindow About_NewWindowStructure9 = { X 89,60, X--- 3026,3096 ---- X NULL X }; X X! static struct IntuiText About_IText85 = { X 2,0,JAM2, X 20,47, X NULL, X "HackWB is copyright Gregg Wonderly and Ken Lorber,", X! &About_IText86 X }; X X! static struct IntuiText About_IText84 = { X 3,0,JAM2, X 8,31, X NULL, X "finished by Gregg...", X! &About_IText85 X }; X X! static struct IntuiText About_IText83 = { X 3,0,JAM2, X 135,22, X NULL, X "The programming was started by Ken and", X! &About_IText84 X }; X X! static struct IntuiText About_IText82 = { X 3,0,JAM2, X 120,22, X NULL, X ".", X! &About_IText83 X }; X X! static struct IntuiText About_IText81 = { X 2,0,JAM2, X 8,22, X NULL, X "Gregg Wonderly", X! &About_IText82 X }; X X! static struct IntuiText About_IText80 = { X 3,0,JAM2, X 396,13, X NULL, X "and", X! &About_IText81 X }; X X! static struct IntuiText About_IText79 = { X 2,0,JAM2, X 310,13, X NULL, X "Ken Lorber", X! &About_IText80 X }; X X! static struct IntuiText About_IText78 = { X 3,0,JAM2, X 8,13, X NULL, X "The NetHack WorkBench was designed by", X! &About_IText79 X }; X X! #define About_IntuiTextList9 About_IText78 X X static struct NewWindow About_NewWindowStructure9 = { X 89,60, X*************** X*** 3129,3135 **** X NULL X }; X X! static struct IntuiText Help3_IText86 = { X 1,0,JAM2, X 8,2, X NULL, X--- 3136,3142 ---- X NULL X }; X X! static struct IntuiText Help3_IText87 = { X 1,0,JAM2, X 8,2, X NULL, X*************** X*** 3146,3152 **** X BOOLGADGET, X NULL, X NULL, X! &Help3_IText86, X NULL, X NULL, X GADHELPBKWD, X--- 3153,3159 ---- X BOOLGADGET, X NULL, X NULL, X! &Help3_IText87, X NULL, X NULL, X GADHELPBKWD, X*************** X*** 3153,3159 **** X NULL X }; X X! static struct IntuiText Help3_IText87 = { X 1,0,JAM2, X 8,2, X NULL, X--- 3160,3166 ---- X NULL X }; X X! static struct IntuiText Help3_IText88 = { X 1,0,JAM2, X 8,2, X NULL, X*************** X*** 3170,3176 **** X BOOLGADGET, X NULL, X NULL, X! &Help3_IText87, X NULL, X NULL, X GADHELPFRWD, X--- 3177,3183 ---- X BOOLGADGET, X NULL, X NULL, X! &Help3_IText88, X NULL, X NULL, X GADHELPFRWD, X*************** X*** 3183,3189 **** X 76,11, X 494,189, X 0,1, X! GADGETDOWN+GADGETUP+CLOSEWINDOW+VANILLAKEY+INTUITICKS, X WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH, X &Help3_Gadget63, X NULL, X--- 3190,3196 ---- X 76,11, X 494,189, X 0,1, X! MOUSEBUTTONS+GADGETDOWN+GADGETUP+CLOSEWINDOW+ACTIVEWINDOW+INACTIVEWINDOW+VANILLAKEY+INTUITICKS, X WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH, X &Help3_Gadget63, X NULL, X*************** X*** 3240,3246 **** X NULL X }; X X! static struct IntuiText Defs_IText88 = { X 1,0,JAM2, X 6,2, X NULL, X--- 3247,3253 ---- X NULL X }; X X! static struct IntuiText Defs_IText89 = { X 1,0,JAM2, X 6,2, X NULL, X*************** X*** 3257,3263 **** X BOOLGADGET, X (APTR)&Defs_Border59, X NULL, X! &Defs_IText88, X NULL, X NULL, X GADEDOPTIONS, X--- 3264,3270 ---- X BOOLGADGET, X (APTR)&Defs_Border59, X NULL, X! &Defs_IText89, X NULL, X NULL, X GADEDOPTIONS, X*************** X*** 3279,3285 **** X NULL X }; X X! static struct IntuiText Defs_IText89 = { X 1,0,JAM2, X 5,2, X NULL, X--- 3286,3292 ---- X NULL X }; X X! static struct IntuiText Defs_IText90 = { X 1,0,JAM2, X 5,2, X NULL, X*************** X*** 3296,3302 **** X BOOLGADGET, X (APTR)&Defs_Border60, X NULL, X! &Defs_IText89, X NULL, X NULL, X GADDEFSAVE, X--- 3303,3309 ---- X BOOLGADGET, X (APTR)&Defs_Border60, X NULL, X! &Defs_IText90, X NULL, X NULL, X GADDEFSAVE, X*************** X*** 3318,3324 **** X NULL X }; X X! static struct IntuiText Defs_IText90 = { X 1,0,JAM2, X 8,2, X NULL, X--- 3325,3331 ---- X NULL X }; X X! static struct IntuiText Defs_IText91 = { X 1,0,JAM2, X 8,2, X NULL, X*************** X*** 3335,3341 **** X BOOLGADGET, X (APTR)&Defs_Border61, X NULL, X! &Defs_IText90, X NULL, X NULL, X GADDEFLOAD, X--- 3342,3348 ---- X BOOLGADGET, X (APTR)&Defs_Border61, X NULL, X! &Defs_IText91, X NULL, X NULL, X GADDEFLOAD, X*************** X*** 3357,3363 **** X NULL X }; X X! static struct IntuiText Defs_IText91 = { X 1,0,JAM2, X 1,2, X NULL, X--- 3364,3370 ---- X NULL X }; X X! static struct IntuiText Defs_IText92 = { X 1,0,JAM2, X 1,2, X NULL, X*************** X*** 3374,3380 **** X BOOLGADGET, X (APTR)&Defs_Border62, X NULL, X! &Defs_IText91, X NULL, X NULL, X -1, X--- 3381,3387 ---- X BOOLGADGET, X (APTR)&Defs_Border62, X NULL, X! &Defs_IText92, X NULL, X NULL, X -1, X*************** X*** 3413,3419 **** X X #define Defs_GadgetList11 Defs_PlayerName X X! static struct IntuiText Defs_IText92 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3420,3426 ---- X X #define Defs_GadgetList11 Defs_PlayerName X X! static struct IntuiText Defs_IText93 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3427,3433 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 4095, X! (APTR)&Defs_IText92, X NULL, X 'W', X NULL, X--- 3434,3440 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 4095, X! (APTR)&Defs_IText93, X NULL, X 'W', X NULL, X*************** X*** 3434,3440 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText93 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3441,3447 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText94 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3448,3454 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 6143, X! (APTR)&Defs_IText93, X NULL, X 'V', X NULL, X--- 3455,3461 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 6143, X! (APTR)&Defs_IText94, X NULL, X 'V', X NULL, X*************** X*** 3455,3461 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText94 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3462,3468 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText95 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3469,3475 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 7167, X! (APTR)&Defs_IText94, X NULL, X 'T', X NULL, X--- 3476,3482 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 7167, X! (APTR)&Defs_IText95, X NULL, X 'T', X NULL, X*************** X*** 3476,3482 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText95 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3483,3489 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText96 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3490,3496 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 7679, X! (APTR)&Defs_IText95, X NULL, X 'S', X NULL, X--- 3497,3503 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 7679, X! (APTR)&Defs_IText96, X NULL, X 'S', X NULL, X*************** X*** 3497,3503 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText96 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3504,3510 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText97 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3511,3517 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 7935, X! (APTR)&Defs_IText96, X NULL, X 'R', X NULL, X--- 3518,3524 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 7935, X! (APTR)&Defs_IText97, X NULL, X 'R', X NULL, X*************** X*** 3518,3524 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText97 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3525,3531 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText98 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3532,3538 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8063, X! (APTR)&Defs_IText97, X NULL, X 'P', X NULL, X--- 3539,3545 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8063, X! (APTR)&Defs_IText98, X NULL, X 'P', X NULL, X*************** X*** 3539,3545 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText98 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3546,3552 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText99 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3553,3559 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8127, X! (APTR)&Defs_IText98, X NULL, X 'K', X NULL, X--- 3560,3566 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8127, X! (APTR)&Defs_IText99, X NULL, X 'K', X NULL, X*************** X*** 3560,3566 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText99 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3567,3573 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText100 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3574,3580 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8159, X! (APTR)&Defs_IText99, X NULL, X 'H', X NULL, X--- 3581,3587 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8159, X! (APTR)&Defs_IText100, X NULL, X 'H', X NULL, X*************** X*** 3581,3587 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText100 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3588,3594 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText101 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3595,3601 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8175, X! (APTR)&Defs_IText100, X NULL, X 'E', X NULL, X--- 3602,3608 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8175, X! (APTR)&Defs_IText101, X NULL, X 'E', X NULL, X*************** X*** 3602,3608 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText101 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3609,3615 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText102 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3616,3622 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8183, X! (APTR)&Defs_IText101, X NULL, X 'C', X NULL, X--- 3623,3629 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8183, X! (APTR)&Defs_IText102, X NULL, X 'C', X NULL, X*************** X*** 3623,3629 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText102 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3630,3636 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText103 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3637,3643 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8187, X! (APTR)&Defs_IText102, X NULL, X 'B', X NULL, X--- 3644,3650 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8187, X! (APTR)&Defs_IText103, X NULL, X 'B', X NULL, X*************** X*** 3644,3650 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText103 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3651,3657 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText104 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3658,3664 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8189, X! (APTR)&Defs_IText103, X NULL, X 'A', X NULL, X--- 3665,3671 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP, X 8189, X! (APTR)&Defs_IText104, X NULL, X 'A', X NULL, X*************** X*** 3665,3671 **** X MENUNULL X }; X X! static struct IntuiText Defs_IText104 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X--- 3672,3678 ---- X MENUNULL X }; X X! static struct IntuiText Defs_IText105 = { X 3,1,COMPLEMENT, X 19,0, X NULL, X*************** X*** 3679,3685 **** X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP+CHECKED, X 8190, X! (APTR)&Defs_IText104, X NULL, X '?', X NULL, X--- 3686,3692 ---- X 155,8, X CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP+CHECKED, X 8190, X! (APTR)&Defs_IText105, X NULL, X '?', X NULL, X*************** X*** 3697,3703 **** X X #define Defs_MenuList11 Defs_Menu2 X X! static struct IntuiText Defs_IText107 = { X 1,0,JAM2, X 31,28, X NULL, X--- 3704,3710 ---- X X #define Defs_MenuList11 Defs_Menu2 X X! static struct IntuiText Defs_IText108 = { X 1,0,JAM2, X 31,28, X NULL, X*************** X*** 3705,3727 **** X NULL X }; X X! static struct IntuiText Defs_IText106 = { X 1,0,JAM2, X 47,42, X NULL, X "Character:", X! &Defs_IText107 X }; X X! static struct IntuiText Defs_IText105 = { X 1,0,JAM2, X 15,15, X NULL, X "Player's Name:", X! &Defs_IText106 X }; X X! #define Defs_IntuiTextList11 Defs_IText105 X X static struct NewWindow Defs_NewWindowStructure11 = { X 164,60, X--- 3712,3734 ---- X NULL X }; X X! static struct IntuiText Defs_IText107 = { X 1,0,JAM2, X 47,42, X NULL, X "Character:", X! &Defs_IText108 X }; X X! static struct IntuiText Defs_IText106 = { X 1,0,JAM2, X 15,15, X NULL, X "Player's Name:", X! &Defs_IText107 X }; X X! #define Defs_IntuiTextList11 Defs_IText106 X X static struct NewWindow Defs_NewWindowStructure11 = { X 164,60, X*************** X*** 3754,3760 **** X NULL X }; X X! static struct IntuiText Rst_IText108 = { X 1,0,JAM1, X 5,1, X NULL, X--- 3761,3767 ---- X NULL X }; X X! static struct IntuiText Rst_IText109 = { X 1,0,JAM1, X 5,1, X NULL, X*************** X*** 3771,3777 **** X BOOLGADGET, X (APTR)&Rst_Border63, X NULL, X! &Rst_IText108, X NULL, X NULL, X GADRESTCAN, X--- 3778,3784 ---- X BOOLGADGET, X (APTR)&Rst_Border63, X NULL, X! &Rst_IText109, X NULL, X NULL, X GADRESTCAN, X*************** X*** 3793,3799 **** X NULL X }; X X! static struct IntuiText Rst_IText109 = { X 1,0,JAM1, X 12,1, X NULL, X--- 3800,3806 ---- X NULL X }; X X! static struct IntuiText Rst_IText110 = { X 1,0,JAM1, X 12,1, X NULL, X*************** X*** 3810,3816 **** X BOOLGADGET, X (APTR)&Rst_Border64, X NULL, X! &Rst_IText109, X NULL, X NULL, X GADRESTOKAY, X--- 3817,3823 ---- X BOOLGADGET, X (APTR)&Rst_Border64, X NULL, X! &Rst_IText110, X NULL, X NULL, X GADRESTOKAY, X*************** X*** 3907,3913 **** X X #define Rst_GadgetList12 Rst_RestDir X X! static struct IntuiText Rst_IText111 = { X 1,0,JAM1, X 18,29, X NULL, X--- 3914,3920 ---- X X #define Rst_GadgetList12 Rst_RestDir X X! static struct IntuiText Rst_IText112 = { X 1,0,JAM1, X 18,29, X NULL, X*************** X*** 3915,3929 **** X NULL X }; X X! static struct IntuiText Rst_IText110 = { X 1,0,JAM1, X 14,15, X NULL, X "Directory:", X! &Rst_IText111 X }; X X! #define Rst_IntuiTextList12 Rst_IText110 X X static struct NewWindow Rst_NewWindowStructure12 = { X 177,60, X--- 3922,3936 ---- X NULL X }; X X! static struct IntuiText Rst_IText111 = { X 1,0,JAM1, X 14,15, X NULL, X "Directory:", X! &Rst_IText112 X }; X X! #define Rst_IntuiTextList12 Rst_IText111 X X static struct NewWindow Rst_NewWindowStructure12 = { X 177,60, X*** /tmp/da09166 Thu Feb 25 10:28:07 1993 X--- sys/amiga/winami.c Wed Feb 24 18:01:09 1993 X*************** X*** 175,184 **** X char morc; /* the character typed in response to a --more-- prompt */ X char spaces[] = X " "; X! extern winid WIN_MESSAGE; X! extern winid WIN_MAP; X! extern winid WIN_STATUS; X! extern winid WIN_INVEN; X X winid WIN_BASE = WIN_ERR; X X--- 175,184 ---- X char morc; /* the character typed in response to a --more-- prompt */ X char spaces[] = X " "; X! extern NEARDATA winid WIN_MESSAGE; X! extern NEARDATA winid WIN_MAP; X! extern NEARDATA winid WIN_STATUS; X! extern NEARDATA winid WIN_INVEN; X X winid WIN_BASE = WIN_ERR; X X*************** X*** 194,199 **** X--- 194,200 ---- X static void outmore(struct WinDesc *); X static void outsubstr(struct WinDesc *,char *,int); X static void dismiss_nhwindow(winid); X+ static void removetopl(int); X X /* This gadget data is replicated for menu/text windows... */ X static struct PropInfo PropScroll = { AUTOKNOB+FREEVERT, X*************** X*** 230,236 **** X xchar offx,offy,maxrow,rows,maxcol,cols; /* CHECK TYPES */ X } new_wins[] = { X X! /* First entry not used, types are based on 1 */ X {{0}}, X X /* NHW_MESSAGE */ X--- 231,237 ---- X xchar offx,offy,maxrow,rows,maxcol,cols; /* CHECK TYPES */ X } new_wins[] = { X X! /* First entry not used, types are based at 1 */ X {{0}}, X X /* NHW_MESSAGE */ X*************** X*** 339,345 **** X #define SIZEOF_DISKNAME 8 X X /* The current color map */ X! unsigned short amii_curmap[] = { X #define C_BLACK 0 X #define C_WHITE 1 X #define C_BROWN 2 X--- 340,346 ---- X #define SIZEOF_DISKNAME 8 X X /* The current color map */ X! unsigned short amii_initmap[] = { X #define C_BLACK 0 X #define C_WHITE 1 X #define C_BROWN 2 X*************** X*** 389,395 **** X #endif X , X &Hack80, /* Font */ X! (UBYTE *)" NetHack 3.1", X NULL, /* Gadgets */ X NULL, /* CustomBitmap */ X #ifdef INTUI_NEW_LOOK X--- 390,396 ---- X #endif X , X &Hack80, /* Font */ X! (UBYTE *)" NetHack 3.1.1", X NULL, /* Gadgets */ X NULL, /* CustomBitmap */ X #ifdef INTUI_NEW_LOOK X*************** X*** 397,402 **** X--- 398,408 ---- X #endif X }; X X+ /* topl kludges */ X+ #define TOPL_NOSPACE topl_addspace=0 X+ #define TOPL_SPACE topl_addspace=1 X+ int topl_addspace=1; X+ X /* Make sure the user sees a text string when no windowing is available */ X X void X*************** X*** 659,665 **** X register struct Gadget *gd; X static int once=0; X long class, code; X- int i; X X amii_clear_nhwindow( WIN_BASE ); X if( *pl_character ){ X--- 665,670 ---- X*************** X*** 687,692 **** X--- 692,698 ---- X { X return; X } X+ WindowToFront( cwin ); X X while( !aredone ) X { X*************** X*** 764,770 **** X CloseShWindow( cwin ); X } X X- #ifndef KENI_S_WAY X #include "Amiga:randwin.c" X X static void X--- 770,775 ---- X*************** X*** 788,793 **** X--- 793,799 ---- X if( tport ) DeletePort( tport ); X if( trq ) DeleteExtIO( (struct IORequest *)trq ); X Delay( 8 * 50 ); X+ return; X } X X if( OpenDevice( TIMERNAME, UNIT_VBLANK, (struct IORequest *)trq, 0L ) != 0 ) X*************** X*** 834,839 **** X--- 840,847 ---- X if( gd->GadgetID != 0 ) X SetBorder( gd ); X } X+ Rnd_NewWindowStructure1.IDCMPFlags |= VANILLAKEY; X+ X once = 1; X } X X*************** X*** 859,866 **** X aredone = 1; X timerdone = 1; X GetMsg( tport ); X- CloseShWindow( w ); X- w = NULL; X } X while( w && ( imsg = (struct IntuiMessage *) GetMsg( w->UserPort ) ) ) X { X--- 867,872 ---- X*************** X*** 879,884 **** X--- 885,895 ---- X case GADGETUP: X aredone = 1; X break; X+ X+ case VANILLAKEY: X+ if(imsg->Code=='\n' || imsg->Code==' ' || imsg->Code=='\r') X+ aredone = 1; X+ break; X } X ReplyMsg( (struct Message *)imsg ); X } X*************** X*** 895,901 **** X DeletePort( tport ); X if(w) CloseShWindow( w ); X } X- #endif X X /* this should probably not be needed (or be renamed) X void X--- 906,911 ---- X*************** X*** 1104,1110 **** X--- 1114,1128 ---- X w=OpenShWindow( (void *)nw ); X X if( w == NULL && type != NHW_MENU && type != NHW_TEXT ) X+ { X+ char buf[ 100 ]; X+ X+ sprintf( buf, "nw is l: %d, t: %d, w: %d, h: %d", X+ nw->LeftEdge, nw->TopEdge, X+ nw->Width, nw->Height ); X+ raw_print( buf ); X panic("bad openwin %d",type); X+ } X X /* Check for an empty slot */ X X*************** X*** 1365,1373 **** X PubScreenStatus( HackScreen, 0 ); X } X #endif X X #ifdef TEXTCOLOR X! LoadRGB4(&HackScreen->ViewPort, amii_curmap, 1L << DEPTH ); X #endif X X /* Display the copyright etc... */ X--- 1383,1393 ---- X PubScreenStatus( HackScreen, 0 ); X } X #endif X+ amiIDisplay->ypix = HackScreen->Height; X+ amiIDisplay->xpix = HackScreen->Width; X X #ifdef TEXTCOLOR X! LoadRGB4(&HackScreen->ViewPort, flags.amii_curmap, 1L << DEPTH ); X #endif X X /* Display the copyright etc... */ X*************** X*** 1556,1567 **** X X /* Ask a question and get a response */ X X char amii_yn_function( prompt, resp, def ) X const char *prompt,*resp; X char def; X { X char ch; X- #ifndef WINDOW_YN X char buf[ 80 ]; X X if( def && def!='q') X--- 1576,1588 ---- X X /* Ask a question and get a response */ X X+ #ifdef OLDCODE X+ X char amii_yn_function( prompt, resp, def ) X const char *prompt,*resp; X char def; X { X char ch; X char buf[ 80 ]; X X if( def && def!='q') X*************** X*** 1582,1685 **** X ch = def; X break; X } X } while( resp && *resp && index( resp, ch ) == 0 ); X X cursor_off( WIN_MESSAGE ); X if( ch == '\33' ) X { X! /*amii_addtopl( " you change your mind..." );*/ X! ch = 0; X } X /* Try this to make topl behave more appropriately? */ X clear_nhwindow( WIN_MESSAGE ); X #else X! struct Window *cwin; X! struct IntuiMessage *imsg; X! int aredone = 0, xcor; X! struct Gadget *gd; X! char buf[ 4 ]; X X! *StrString = 0; X X! Ask_Window.Screen = HackScreen; X! Ask_IText1.IText = buf; X! Ask_IText2.IText = prompt; X! if( def ) X! { X! sprintf( buf, "[%c]", def ); X! Ask_Window.FirstGadget = &Ask_Gadget1; X! Ask_IText2.LeftEdge = 44; X! } X! else X! { X! Ask_Window.FirstGadget = NULL; X! Ask_IText2.LeftEdge = 9; X! } X! X! /* Use this RPort to get needed dimensions */ X! X! if( cwin = wins[WIN_MAP]->win ) X! { X! Ask_IText1.LeftEdge = X! (Ask_Gadget1.Width - cwin->BorderLeft - cwin->BorderRight) / 2; X! Ask_Window.Width = X! Ask_IText2.LeftEdge + (5 + strlen( prompt )) * txwidth; X! xcor = Ask_IText2.LeftEdge + (2 + strlen( prompt )) * txwidth; X! } X! X! if( ( cwin = OpenShWindow( (void *)&Ask_Window ) ) == NULL ) X! return( 0 ); X! X! PrintIText( cwin->RPort, &Ask_IntuiTextList1, 0, 0 ); X! X! while( !aredone ) X! { X! WaitPort( cwin->UserPort ); X! while( ( imsg = (void *) GetMsg( cwin->UserPort ) ) != NULL ) X! { X! switch( imsg->Class ) X! { X! case VANILLAKEY: X! Move( cwin->RPort, xcor, X! Ask_IText2.TopEdge + txheight - 1 ); X! ch = imsg->Code; X! if( ch != '\33' ) X! { X! Text( cwin->RPort, &ch, 1 ); X! if( resp == NULL || *resp == 0 || X! index( resp, ch ) ) X! { X! aredone = 1; X! Delay( 45 ); X! } X! else X! DisplayBeep( NULL ); X } X! else X! { X! aredone = 1; X! } X! break; X! X! case GADGETUP: X! gd = (struct Gadget *) imsg->IAddress; X! switch( gd->GadgetID ) X! { X! case 1: X! ch = def; X! aredone = 1; X! break; X! } X! break; X } X! ReplyMsg( (struct Message *) imsg ); X } X! } X X- CloseShWindow( cwin ); X #endif X- return( ch ); X- } X X /* Add a line in the message window */ X X--- 1603,1751 ---- X ch = def; X break; X } X+ else if( isdigit(ch) && index(resp, '#')){ X+ X+ } X } while( resp && *resp && index( resp, ch ) == 0 ); X X cursor_off( WIN_MESSAGE ); X if( ch == '\33' ) X { X! if(index(resp, 'q')) X! ch = 'q'; X! else if(index(resp, 'n')) X! ch = 'n'; X! else ch = def; X } X /* Try this to make topl behave more appropriately? */ X clear_nhwindow( WIN_MESSAGE ); X+ return( ch ); X+ } X #else X! char amii_yn_function(query,resp, def) X! const char *query,*resp; X! char def; X! /* X! * Generic yes/no function. 'def' is the default (returned by space or X! * return; 'esc' returns 'q', or 'n', or the default, depending on X! * what's in the string. The 'query' string is printed before the user X! * is asked about the string. X! * If resp is NULL, any single character is accepted and returned. X! */ X! { X! register char q; X! char rtmp[40]; X! boolean digit_ok, allow_num; X! char prompt[QBUFSZ]; X X! if(resp) { X! allow_num = (index(resp, '#') != 0); X! if(def) X! Sprintf(prompt, "%s [%s] (%c) ", query, resp, def); X! else X! Sprintf(prompt, "%s [%s] ", query, resp); X! amii_addtopl(prompt); X! } else { X! amii_addtopl(query); X! q = WindowGetchar(); X! goto clean_up; X! } X X! do { /* loop until we get valid input */ X! cursor_on(WIN_MESSAGE); X! q = lowc(WindowGetchar()); X! cursor_off(WIN_MESSAGE); X! #if 0 X! /* fix for PL2 */ X! if (q == '\020') { /* ctrl-P */ X! if(!doprev) (void) tty_doprev_message(); /* need two initially */ X! (void) tty_doprev_message(); X! q = (char)0; X! doprev = 1; X! continue; X! } else if(doprev) { X! tty_clear_nhwindow(WIN_MESSAGE); X! cw->maxcol = cw->maxrow; X! doprev = 0; X! amii_addtopl(prompt); X! continue; X! } X! #endif X! digit_ok = allow_num && digit(q); X! if (q == '\033') { X! if (index(resp, 'q')) X! q = 'q'; X! else if (index(resp, 'n')) X! q = 'n'; X! else X! q = def; X! break; X! } else if (index(quitchars, q)) { X! q = def; X! break; X! } X! if (!index(resp, q) && !digit_ok) { X! amii_bell(); X! q = (char)0; X! } else if (q == '#' || digit_ok) { X! char z, digit_string[2]; X! int n_len = 0; X! long value = 0; X! TOPL_NOSPACE; X! amii_addtopl("#"), n_len++; X! TOPL_SPACE; X! digit_string[1] = '\0'; X! if (q != '#') { X! digit_string[0] = q; X! TOPL_NOSPACE; X! amii_addtopl(digit_string), n_len++; X! TOPL_SPACE; X! value = q - '0'; X! q = '#'; X! } X! do { /* loop until we get a non-digit */ X! cursor_on(WIN_MESSAGE); X! z = lowc(WindowGetchar()); X! cursor_off(WIN_MESSAGE); X! if (digit(z)) { X! value = (10 * value) + (z - '0'); X! if (value < 0) break; /* overflow: try again */ X! digit_string[0] = z; X! TOPL_NOSPACE; X! amii_addtopl(digit_string), n_len++; X! TOPL_SPACE; X! } else if (z == 'y' || index(quitchars, z)) { X! if (z == '\033') value = -1; /* abort */ X! z = '\n'; /* break */ X! } else if ( z == '\b') { X! if (n_len <= 1) { value = -1; break; } X! else { value /= 10; removetopl(1), n_len--; } X! } else { X! value = -1; /* abort */ X! amii_bell(); X! break; X } X! } while (z != '\n'); X! if (value > 0) yn_number = value; X! else if (value == 0) q = 'n'; /* 0 => "no" */ X! else { /* remove number from top line, then try again */ X! removetopl(n_len), n_len = 0; X! q = '\0'; X! } X } X! } while(!q); X! X! if (q != '#') { X! Sprintf(rtmp, "%c", q); X! amii_addtopl(rtmp); X } X! clean_up: X! cursor_off(WIN_MESSAGE); X! clear_nhwindow(WIN_MESSAGE); X! return q; X! } X X #endif X X /* Add a line in the message window */ X X*************** X*** 1730,1736 **** X X if( window == WIN_ERR || ( cw = wins[window] ) == NULL ) X { X- /* tty does this differently - is this OK? */ X flags.window_inited=0; X panic(winpanicstr,window, "putstr"); X } X--- 1796,1801 ---- X*************** X*** 1737,1744 **** X X w = cw->win; X X! if(!str)return; X! amiIDisplay->lastwin=window; /* do we care??? */ X X /* NHW_MENU windows are not opened immediately, so check if we X * have the window pointer yet X--- 1802,1809 ---- X X w = cw->win; X X! if(!str) return; X! amiIDisplay->lastwin = window; /* do we care??? */ X X /* NHW_MENU windows are not opened immediately, so check if we X * have the window pointer yet X*************** X*** 1778,1784 **** X cw->curx = 0; X } X X! if(strlen(str) >= (cw->cols-MORE_FUDGE)) X { X int i; X char *p; X--- 1843,1849 ---- X cw->curx = 0; X } X X! if( strlen(str) >= (cw->cols-MORE_FUDGE) ) X { X int i; X char *p; X*************** X*** 1810,1836 **** X amii_cl_end( cw, cw->curx ); X } X X! /* If used all of history lines, move them down */ X X! if( cw->maxrow == flags.msg_history ) X! { X! if( cw->data[ 0 ] ) X! free( cw->data[ 0 ] ); X! memcpy( cw->data, &cw->data[ 1 ], X! ( flags.msg_history - 1 ) * sizeof( char * ) ); X! cw->data[ flags.msg_history - 1 ] = X! (char *) alloc( strlen( toplines ) + 1 ); X! strcpy( cw->data[ flags.msg_history - 1 ], toplines ); X! } X! else X! { X! /* Otherwise, allocate a new one and copy the line in */ X! cw->data[ cw->maxrow ] = (char *) X! alloc( strlen( toplines ) + 1 ); X! strcpy( cw->data[ cw->maxrow++ ], toplines ); X! } X! cw->maxcol = cw->maxrow; X! break; X X case NHW_STATUS: X if( cw->data[ cw->cury ] == NULL ) X--- 1875,1901 ---- X amii_cl_end( cw, cw->curx ); X } X X! /* If used all of history lines, move them down */ X X! if( cw->maxrow == flags.msg_history ) X! { X! if( cw->data[ 0 ] ) X! free( cw->data[ 0 ] ); X! memcpy( cw->data, &cw->data[ 1 ], X! ( flags.msg_history - 1 ) * sizeof( char * ) ); X! cw->data[ flags.msg_history - 1 ] = X! (char *) alloc( strlen( toplines ) + 1 ); X! strcpy( cw->data[ flags.msg_history - 1 ], toplines ); X! } X! else X! { X! /* Otherwise, allocate a new one and copy the line in */ X! cw->data[ cw->maxrow ] = (char *) X! alloc( strlen( toplines ) + 1 ); X! strcpy( cw->data[ cw->maxrow++ ], toplines ); X! } X! cw->maxcol = cw->maxrow; X! break; X X case NHW_STATUS: X if( cw->data[ cw->cury ] == NULL ) X*************** X*** 1942,1948 **** X outmore( cw ); X } X else X! { X /* Otherwise, move and put out a blank separator */ X Text( w->RPort, spaces, 1 ); X cw->curx += 1; X--- 2007,2013 ---- X outmore( cw ); X } X else X! if(topl_addspace){ X /* Otherwise, move and put out a blank separator */ X Text( w->RPort, spaces, 1 ); X cw->curx += 1; X*************** X*** 2073,2079 **** X * left behind... X */ X kill_nhwindows( 0 ); X! if( str ) raw_print( str ); X } X X amii_nh_poskey(x, y, mod) X--- 2138,2147 ---- X * left behind... X */ X kill_nhwindows( 0 ); X! if( str ){ X! raw_print( "\n"); /* be sure we're not under the top margin */ X! raw_print( str ); X! } X } X X amii_nh_poskey(x, y, mod) X*************** X*** 2185,2192 **** X if( win == WIN_ERR || ( cw = wins[win] ) == NULL ) X panic(winpanicstr,win,"display_nhwindow"); X X! if( cw->type == NHW_MAP || cw->type == NHW_STATUS || X! cw->type == NHW_MESSAGE ) X { X return; X } X--- 2253,2259 ---- X if( win == WIN_ERR || ( cw = wins[win] ) == NULL ) X panic(winpanicstr,win,"display_nhwindow"); X X! if( cw->type == NHW_STATUS || cw->type == NHW_MESSAGE ) X { X return; X } X*************** X*** 2234,2241 **** X } X X /* Do more if it is time... */ X! if( blocking == TRUE ) X! outmore( wins[ win ] ); X } X } X X--- 2301,2309 ---- X } X X /* Do more if it is time... */ X! if( blocking == TRUE && wins[ WIN_MESSAGE ]->curx ){ X! outmore( wins[ WIN_MESSAGE ] ); X! } X } X } X X*************** X*** 2286,2291 **** X--- 2354,2360 ---- X if( wins[ win ]->cury > 0 ) X amii_display_nhwindow( win, TRUE ); X X+ wins[win]->morestr = NULL; /* don't free title string */ X amii_destroy_nhwindow( win ); X } X X*************** X*** 3216,3221 **** X--- 3285,3291 ---- X return; X } X X+ WindowToFront( cwin ); X while( !aredone ) X { X WaitPort( cwin->UserPort ); X*************** X*** 3372,3377 **** X--- 3442,3448 ---- X #define GADGREENPEN 4 X #define GADCOLOKAY 5 X #define GADCOLCANCEL 6 X+ #define GADCOLSAVE 7 X X #include "colorwin.c" X X*************** X*** 3403,3408 **** X--- 3474,3480 ---- X { X SetBorder( &Col_Okay ); X SetBorder( &Col_Cancel ); X+ SetBorder( &Col_Save ); X once = 1; X } X X*************** X*** 3489,3494 **** X--- 3561,3626 ---- X done = 1; X okay = 1; X } X+ else if( gd->GadgetID == GADCOLSAVE ) X+ { X+ FILE *fp, *nfp; X+ char buf[ 300 ]; X+ int once = 0; X+ X+ fp = fopen( "nethack.cnf", "r" ); X+ if( !fp ) X+ { X+ pline( "can't find nethack.cnf" ); X+ break; X+ } X+ X+ nfp = fopen( "new_nethack.cnf", "w" ); X+ if( !nfp ) X+ { X+ pline( "can't write to new_nethack.cnf" ); X+ fclose( fp ); X+ break; X+ } X+ while( fgets( buf, sizeof( buf ), fp ) ) X+ { X+ if( strncmp( buf, "PENS=", 5 ) == 0 ) X+ { X+ once = 1; X+ fputs( "PENS=", nfp ); X+ for( i = 0; i < (1l << DEPTH); ++i ) X+ { X+ fprintf( nfp, "%03x", colors[i] ); X+ if(( i + 1 ) < (1l << DEPTH)) X+ putc( ',', nfp ); X+ } X+ putc( '\n', nfp ); X+ } X+ else X+ { X+ fputs( buf, nfp ); X+ } X+ } X+ X+ /* If none in the file yet, now write it */ X+ if( !once ) X+ { X+ fputs( "PENS=", nfp ); X+ for( i = 0; i < (1l << DEPTH); ++i ) X+ { X+ fprintf( nfp, "%03x", colors[i] ); X+ if(( i + 1 ) < (1l << DEPTH)) X+ putc( ',', nfp ); X+ } X+ putc( '\n', nfp ); X+ } X+ fclose( fp ); X+ fclose( nfp ); X+ unlink( "old_nethack.cnf" ); X+ rename( "nethack.cnf", "old_nethack.cnf" ); X+ rename( "new_nethack.cnf", "nethack.cnf" ); X+ done = 1; X+ okay = 1; X+ } X else if( gd->GadgetID == GADCOLCANCEL ) X { X done = 1; X*************** X*** 3545,3554 **** X if( okay ) X { X for( i = 0; i < ( 1L << DEPTH ); ++i ) X! amii_curmap[ i ] = colors[ i ]; X } X X! LoadRGB4( &scrn->ViewPort, amii_curmap, 1L << DEPTH ); X CloseWindow( nw ); X } X X--- 3677,3686 ---- X if( okay ) X { X for( i = 0; i < ( 1L << DEPTH ); ++i ) X! flags.amii_curmap[ i ] = colors[ i ]; X } X X! LoadRGB4( &scrn->ViewPort, flags.amii_curmap, 1L << DEPTH ); X CloseWindow( nw ); X } X X*************** X*** 3578,3597 **** X int i, incx, incy, r, g, b; X long flags; X X! bxylen = Col_NewWindowStructure1.Height - Col_Okay.Height - 4 - X ( Col_BluePen.TopEdge + Col_BluePen.Height + 6 ); X bxxlen = Col_BluePen.Width; X! bxorx = Col_BluePen.LeftEdge; X bxory = Col_BluePen.TopEdge + Col_BluePen.Height + 2; X X incx = bxxlen / (1L << DEPTH); X incy = bxylen - 2; X X! SetAPen( w->RPort, 1 ); X! SetBPen( w->RPort, 0 ); X SetDrMd( w->RPort, JAM2 ); X RectFill( w->RPort, bxorx, bxory, bxorx + bxxlen - 1, bxory + bxylen ); X! SetAPen( w->RPort, 0 ); X RectFill( w->RPort, bxorx+2, bxory+1, X bxorx + bxxlen - 4, bxory + bxylen - 1); X X--- 3710,3730 ---- X int i, incx, incy, r, g, b; X long flags; X X! bxylen = Col_NewWindowStructure1.Height - (Col_Okay.Height + txheight + 8) - X ( Col_BluePen.TopEdge + Col_BluePen.Height + 6 ); X bxxlen = Col_BluePen.Width; X! bxorx = Col_BluePen.LeftEdge + 2; X bxory = Col_BluePen.TopEdge + Col_BluePen.Height + 2; X X incx = bxxlen / (1L << DEPTH); X incy = bxylen - 2; X X! SetAPen( w->RPort, C_WHITE ); X! SetBPen( w->RPort, C_BLACK ); X SetDrMd( w->RPort, JAM2 ); X RectFill( w->RPort, bxorx, bxory, bxorx + bxxlen - 1, bxory + bxylen ); X! X! SetAPen( w->RPort, C_BLACK ); X RectFill( w->RPort, bxorx+2, bxory+1, X bxorx + bxxlen - 4, bxory + bxylen - 1); X X*************** X*** 3598,3622 **** X for( i = 0; i < (1L << DEPTH); ++i ) X { X if( i == idx ) X! SetAPen( w->RPort, 1 ); X! else X! SetAPen( w->RPort, 0 ); X! SetBPen( w->RPort, 0 ); X! SetDrMd( w->RPort, JAM2 ); X! RectFill( w->RPort, bxorx + 3 + (i*incx)+1, bxory + 2, X! bxorx + ((i+1)*incx)-2, bxory+bxylen - 2); X X! SetAPen( w->RPort, 0 ); X! SetBPen( w->RPort, 0 ); X! SetDrMd( w->RPort, JAM2 ); X! RectFill( w->RPort, bxorx + 3 + (i*incx)+2, bxory + 3, X! bxorx + ((i+1)*incx)-4, bxory+bxylen - 3); X X SetAPen( w->RPort, i ); X! SetBPen( w->RPort, 0 ); X! SetDrMd( w->RPort, JAM2 ); X! RectFill( w->RPort, bxorx + 3 +(i*incx)+4, bxory + 4, X! bxorx + ((i+1)*incx)-6, bxory+bxylen - 4 ); X } X X DispCol( w, idx, colors ); X--- 3731,3769 ---- X for( i = 0; i < (1L << DEPTH); ++i ) X { X if( i == idx ) X! { X! SetAPen( w->RPort, scrnpens[ SHADOWPEN ] ); X! Move( w->RPort, bxorx + 3 + (i*incx)+0, bxory+bxylen - 1); X! Draw( w->RPort, bxorx + 3 + (i*incx)+0, bxory + 1 ); X! Draw( w->RPort, bxorx + ((i+1)*incx)-1, bxory + 1 ); X X! Move( w->RPort, bxorx + 3 + (i*incx)+1, bxory+bxylen - 2); X! Draw( w->RPort, bxorx + 3 + (i*incx)+1, bxory + 2 ); X! Draw( w->RPort, bxorx + ((i+1)*incx)-2, bxory + 2 ); X X+ SetAPen( w->RPort, scrnpens[ SHINEPEN ] ); X+ Move( w->RPort, bxorx + 3 + (i*incx)+0, bxory+bxylen - 1); X+ Draw( w->RPort, bxorx + ((i+1)*incx)-1, bxory+bxylen - 1); X+ Draw( w->RPort, bxorx + ((i+1)*incx)-1, bxory + 1 ); X+ X+ Move( w->RPort, bxorx + 3 + (i*incx)+1, bxory+bxylen - 2); X+ Draw( w->RPort, bxorx + ((i+1)*incx)-2, bxory+bxylen - 2); X+ Draw( w->RPort, bxorx + ((i+1)*incx)-2, bxory + 2); X+ } X+ else X+ { X+ SetAPen( w->RPort, scrnpens[ SHINEPEN ] ); X+ Move( w->RPort, bxorx + 3 + (i*incx)+1, bxory+bxylen - 2); X+ Draw( w->RPort, bxorx + 3 + (i*incx)+1, bxory + 2 ); X+ Draw( w->RPort, bxorx + ((i+1)*incx)-2, bxory + 2 ); X+ Move( w->RPort, bxorx + 3 + (i*incx)+1, bxory+bxylen - 2); X+ Draw( w->RPort, bxorx + ((i+1)*incx)-2, bxory+bxylen - 2); X+ Draw( w->RPort, bxorx + ((i+1)*incx)-2, bxory + 2); X+ } X+ X SetAPen( w->RPort, i ); X! RectFill( w->RPort, bxorx + 3 + (i*incx)+3, bxory + 4, X! bxorx + ((i+1)*incx)-4, bxory+bxylen - 4); X } X X DispCol( w, idx, colors ); X*************** X*** 3648,3656 **** X { X char buf[ 50 ]; X X! Move( w->RPort, Col_Okay.LeftEdge + Col_Okay.Width + X! txwidth, Col_Cancel.TopEdge + txbaseline + 2 ); X! sprintf( buf, "%s=%03x %s%s", colnames[idx].name, colors[idx], X colnames[idx].defval, X " "+strlen(colnames[idx].name)+1 ); X SetAPen( w->RPort, C_WHITE ); X--- 3795,3803 ---- X { X char buf[ 50 ]; X X! Move( w->RPort, Col_Save.LeftEdge, X! Col_Save.TopEdge - 4 ); X! sprintf( buf, "%s=%03x default=%s%s", colnames[idx].name, colors[idx], X colnames[idx].defval, X " "+strlen(colnames[idx].name)+1 ); X SetAPen( w->RPort, C_WHITE ); X*************** X*** 3667,3673 **** X */ X if( HackScreen != NULL ) X { X! LoadRGB4( &HackScreen->ViewPort, amii_curmap, 1L << DEPTH ); X } X } X X--- 3814,3820 ---- X */ X if( HackScreen != NULL ) X { X! LoadRGB4( &HackScreen->ViewPort, flags.amii_curmap, 1L << DEPTH ); X } X } X X*************** X*** 3828,3831 **** X--- 3975,3992 ---- X } X #endif X X+ static void X+ removetopl(cnt) X+ int cnt; X+ { X+ struct WinDesc *cw=wins[WIN_MESSAGE]; X+ /* NB - this is sufficient for X+ * yn_function, but that's it X+ */ X+ if(cw->curx < cnt)cw->curx=0; X+ else cw->curx -= cnt; X+ X+ amii_curs(WIN_MESSAGE, cw->curx+1, 0); X+ amii_cl_end(cw, cw->curx); X+ } X #endif /* AMIGA_INTUITION */ X END_OF_FILE if test 52059 -ne `wc -c <'patches01q'`; then echo shar: \"'patches01q'\" unpacked with wrong size! fi # end of 'patches01q' echo shar: End of archive 18 \(of 31\). cp /dev/null ark18isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 31 archives. echo "Now execute 'patchit.sh'" rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0