home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-06-01 | 346.5 KB | 8,777 lines |
-
-
-
-
-
-
-
-
-
- The Bingo Text Editor
-
- A Shareware Product
- Version 3.10
-
-
- Reference Manual
- Copyright 1989,1993
- Christopher R. S. Schanck
-
-
- June 1st, 1993
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- _______
- ____|__ | (R)
- --| | |-------------------
- | ____|__ | Association of
- | | |_| Shareware
- |__| o | Professionals
- -----| | |---------------------
- |___|___| MEMBER
-
-
-
-
-
- Table of Contents
- -----------------
-
- Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 1
- Philosophy . . . . . . . . . . . . . . . . . . . . . . . . . 2
- The Association of Shareware Professionals . . . . . . . . . 3
- The Shareware Concept and Registering . . . . . . . . . . . 4
- Ordering Bingo . . . . . . . . . . . . . . . . . . . . . . . 5
- Direct from Me . . . . . . . . . . . . . . . . . . . . 5
- PsL Shareware Registration . . . . . . . . . . . . . . 5
- Compuserve Online Registration . . . . . . . . . . . . 5
- Things to Possibly Come . . . . . . . . . . . . . . . . . . 6
- Support . . . . . . . . . . . . . . . . . . . . . . . . . . 7
- US Mail Contact . . . . . . . . . . . . . . . . . . . . 7
- CompuServe Contact . . . . . . . . . . . . . . . . . . 7
- Internet Contact . . . . . . . . . . . . . . . . . . . 7
- Getting the Latest Version . . . . . . . . . . . . . . . . . 8
- Using this Manual . . . . . . . . . . . . . . . . . . . . . 9
-
- Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
- Installing Bingo . . . . . . . . . . . . . . . . . . . . . . 10
- BOPTS: The External Configuration Utility . . . . . . . . . 11
- Number of Buckets and Bucket Size . . . . . . . . . . . 11
- Chess Stack Size . . . . . . . . . . . . . . . . . . . 11
- Chess Number of Variables . . . . . . . . . . . . . . . 11
- Chess Number of Functions . . . . . . . . . . . . . . . 11
- Scramble Registration Name . . . . . . . . . . . . . . 12
- Bingo and Virtual Memory . . . . . . . . . . . . . . . . . . 13
- Impact of Virtual Memory on Performance . . . . . . . . 13
- KEYCFG: The Keyboard Configuration Program . . . . . . . . . 15
- Key Names . . . . . . . . . . . . . . . . . . . . . . . 15
- Section 1 -- Key Assignments . . . . . . . . . . . . . 17
- 'open_end' Key Identifier . . . . . . . . . . . . 19
- 'cur_file' Key Identifier . . . . . . . . . . . . 19
- Using Chess functions . . . . . . . . . . . . . . 19
- Section 2 - Chess Code . . . . . . . . . . . . . . . . 19
- KEYCFG Command Line Options . . . . . . . . . . . . . . 19
- The KEYINFO Key Information Utility . . . . . . . . . . . . 21
- Starting Bingo . . . . . . . . . . . . . . . . . . . . . . . 22
- The BINGO.INI file . . . . . . . . . . . . . . . . . . . . . 23
- Bingo and Larger Screen Displays . . . . . . . . . . . . . . 26
- Bingo's Menu System . . . . . . . . . . . . . . . . . . . . 27
- Bingo's User Interface . . . . . . . . . . . . . . . . . . . 28
- String Entry Boxes . . . . . . . . . . . . . . . . . . 28
- Yes/No Boxes . . . . . . . . . . . . . . . . . . . . . 29
- Non-Editable Display Boxes . . . . . . . . . . . . . . 29
- List-Picking Boxes . . . . . . . . . . . . . . . . . . 29
- Directory Lister . . . . . . . . . . . . . . . . . . . . . . 30
- Bingo and File Names . . . . . . . . . . . . . . . . . . . . 31
- The Status Line . . . . . . . . . . . . . . . . . . . . . . 32
- Bingo and The Mouse . . . . . . . . . . . . . . . . . . . . 33
- The Mouse Cursor . . . . . . . . . . . . . . . . . . . 33
- The Mouse at the General Editing Level . . . . . . . . 33
-
-
-
-
- The Mouse and The Menus . . . . . . . . . . . . . . . . 35
- The Mouse and Dialogue Boxes . . . . . . . . . . . . . 36
- String Entry Boxes . . . . . . . . . . . . . . . . 36
- Yes/No Boxes . . . . . . . . . . . . . . . . . . . 36
- Non-Editable Display Boxes . . . . . . . . . . . . 36
- List-Picking Boxes . . . . . . . . . . . . . . . . 36
- The Mouse and The ASCII Table . . . . . . . . . . . . . 37
-
- Bingo Function Summary . . . . . . . . . . . . . . . . . . . . . 39
- Configuring Bingo . . . . . . . . . . . . . . . . . . . . . 40
- Function List . . . . . . . . . . . . . . . . . . . . . 40
- Basic Editing . . . . . . . . . . . . . . . . . . . . . . . 49
- The Destructive Backspace . . . . . . . . . . . . . . . 49
- The 'Default_' Functions . . . . . . . . . . . . . . . 49
- Function List . . . . . . . . . . . . . . . . . . . . . 49
- Block Handling . . . . . . . . . . . . . . . . . . . . . . . 52
- Marking . . . . . . . . . . . . . . . . . . . . . . . . 52
- Operations on Blocks . . . . . . . . . . . . . . . . . 52
- Named Buffers . . . . . . . . . . . . . . . . . . . . . 53
- Emacs_yank . . . . . . . . . . . . . . . . . . . . . . 53
- Function List . . . . . . . . . . . . . . . . . . . . . 53
- Undo and Error Parsing . . . . . . . . . . . . . . . . . . . 57
- Undo Capabilities . . . . . . . . . . . . . . . . . . . 57
- Manipulating the Unkill Stack . . . . . . . . . . . . . 58
- Error Parsing . . . . . . . . . . . . . . . . . . . . . 58
- Error Parsing Method . . . . . . . . . . . . . . . 58
- Function List . . . . . . . . . . . . . . . . . . . . . 59
- File Handling . . . . . . . . . . . . . . . . . . . . . . . 61
- Function List . . . . . . . . . . . . . . . . . . . . . 61
- Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
- Function List . . . . . . . . . . . . . . . . . . . . . 64
- Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
- Macro Space . . . . . . . . . . . . . . . . . . . . . . 65
- Defining Macros . . . . . . . . . . . . . . . . . . . . 65
- Ending Macro Definition . . . . . . . . . . . . . . . . 65
- Saving Macros . . . . . . . . . . . . . . . . . . . . . 65
- Saving the Entire Key Set . . . . . . . . . . . . . . . 66
- Executing a Macro File . . . . . . . . . . . . . . . . 66
- Function List . . . . . . . . . . . . . . . . . . . . . 66
- Navigation . . . . . . . . . . . . . . . . . . . . . . . . . 68
- Function List . . . . . . . . . . . . . . . . . . . . . 68
- System Operations . . . . . . . . . . . . . . . . . . . . . 72
- Simple Execution and Shelling . . . . . . . . . . . . . 72
- Swap Execution and Shelling . . . . . . . . . . . . . . 72
- Function List . . . . . . . . . . . . . . . . . . . . . 72
- Printing . . . . . . . . . . . . . . . . . . . . . . . . . . 74
- Function List . . . . . . . . . . . . . . . . . . . . . 74
- Searching . . . . . . . . . . . . . . . . . . . . . . . . . 75
- Regular Expression Search and Replace Examples . . . . 76
- Incremental Searching . . . . . . . . . . . . . . . . . 77
- Function List . . . . . . . . . . . . . . . . . . . . . 77
- Utilities . . . . . . . . . . . . . . . . . . . . . . . . . 80
- Function List . . . . . . . . . . . . . . . . . . . . . 80
- Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 83
-
-
-
-
- Window_vertical . . . . . . . . . . . . . . . . . . . . 83
- Window_one and Window_zoom . . . . . . . . . . . . . . 83
- Window_max . . . . . . . . . . . . . . . . . . . . . . 83
- Function List . . . . . . . . . . . . . . . . . . . . . 83
- Extra Functions . . . . . . . . . . . . . . . . . . . . . . 85
- Pick and Exec . . . . . . . . . . . . . . . . . . . . . 85
- Repeat_last . . . . . . . . . . . . . . . . . . . . . . 85
- Box Draw Mode . . . . . . . . . . . . . . . . . . . . . 85
- Cmd_line . . . . . . . . . . . . . . . . . . . . . . . 86
- Function List . . . . . . . . . . . . . . . . . . . . . 88
-
- Chess: Bingo's Extension Language . . . . . . . . . . . . . . . . 90
- Introduction . . . . . . . . . . . . . . . . . . . . . . . . 90
- Things to Possibly Come . . . . . . . . . . . . . . . . . . 91
- The Body of a Chess Program . . . . . . . . . . . . . . . . 92
- Variables and Constants and Comments . . . . . . . . . . . . 93
- Integers and Characters: . . . . . . . . . . . . . . . 93
- Constants: . . . . . . . . . . . . . . . . . . . . . . 93
- Comments: . . . . . . . . . . . . . . . . . . . . . . . 94
- Arrays and Pointers . . . . . . . . . . . . . . . . . . . . 95
- Arrays: . . . . . . . . . . . . . . . . . . . . . . . . 95
- Pointers: . . . . . . . . . . . . . . . . . . . . . . . 95
- Operators and Expressions . . . . . . . . . . . . . . . . . 98
- Operators . . . . . . . . . . . . . . . . . . . . . . . 98
- Expressions . . . . . . . . . . . . . . . . . . . . . . 99
- Program Statements . . . . . . . . . . . . . . . . . . . . . 100
- IF . . . . . . . . . . . . . . . . . . . . . . . . . . 100
- IF-ELSE . . . . . . . . . . . . . . . . . . . . . . . . 100
- WHILE . . . . . . . . . . . . . . . . . . . . . . . . . 101
- DO ... WHILE . . . . . . . . . . . . . . . . . . . . . 101
- RETURN . . . . . . . . . . . . . . . . . . . . . . . . 101
- BREAK . . . . . . . . . . . . . . . . . . . . . . . . . 102
- Compound Statements . . . . . . . . . . . . . . . . . . 102
- User Functions . . . . . . . . . . . . . . . . . . . . . . . 103
- An Example Chess Program . . . . . . . . . . . . . . . 103
- Declaration . . . . . . . . . . . . . . . . . . . . . . 103
- Variable Scope . . . . . . . . . . . . . . . . . . . . 105
- The Rules of Scoping . . . . . . . . . . . . . . . . . 105
- Library Functions . . . . . . . . . . . . . . . . . . . . . 106
-
- Using Chess From Within Bingo . . . . . . . . . . . . . . . . . . 107
- Chess Code in a *.CFG File . . . . . . . . . . . . . . . . . 107
- Attaching Chess Functions to Keystrokes . . . . . . . . . . 108
- The Chess Command Line in Bingo . . . . . . . . . . . . . . 108
- Chess Program Files . . . . . . . . . . . . . . . . . . . . 109
- Attaching Chess Functions to Profile Files . . . . . . . . . 109
- Running a Chess File on Start Up . . . . . . . . . . . . . . 110
- Order of Execution on Start Up . . . . . . . . . . . . . . . 110
- Debugging Chess Programs . . . . . . . . . . . . . . . . . . 110
-
- Library Function Reference . . . . . . . . . . . . . . . . . . . 111
- Bingo from within Chess . . . . . . . . . . . . . . . . . . 111
- Ask . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
- Atoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
-
-
-
-
- B_cmd . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
- Beep . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
- Box_pick . . . . . . . . . . . . . . . . . . . . . . . . . . 112
- Clear_regs . . . . . . . . . . . . . . . . . . . . . . . . . 113
- Gen_interrupt . . . . . . . . . . . . . . . . . . . . . . . 113
- Get_str . . . . . . . . . . . . . . . . . . . . . . . . . . 113
- Get_yesno . . . . . . . . . . . . . . . . . . . . . . . . . 113
- Get_char . . . . . . . . . . . . . . . . . . . . . . . . . . 114
- Get_curr_text . . . . . . . . . . . . . . . . . . . . . . . 114
- Get_fname . . . . . . . . . . . . . . . . . . . . . . . . . 114
- Get_reg . . . . . . . . . . . . . . . . . . . . . . . . . . 114
- Get_text . . . . . . . . . . . . . . . . . . . . . . . . . . 114
- Getkey . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
- Itoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
- Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
- Memcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
- Msg . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
- Pick_file . . . . . . . . . . . . . . . . . . . . . . . . . 116
- Put_char . . . . . . . . . . . . . . . . . . . . . . . . . . 116
- Put_text . . . . . . . . . . . . . . . . . . . . . . . . . . 116
- Put_text_curr . . . . . . . . . . . . . . . . . . . . . . . 116
- Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
- Set_display . . . . . . . . . . . . . . . . . . . . . . . . 117
- Set_msg_wait . . . . . . . . . . . . . . . . . . . . . . . . 117
- Set_recall . . . . . . . . . . . . . . . . . . . . . . . . . 117
- Set_reg . . . . . . . . . . . . . . . . . . . . . . . . . . 118
- Sformat . . . . . . . . . . . . . . . . . . . . . . . . . . 118
- Str . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
- Strcat . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
- Strcmp . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
- Strcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
- Strlen . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
- Strndx . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
- Update_display . . . . . . . . . . . . . . . . . . . . . . . 120
- Valid_name . . . . . . . . . . . . . . . . . . . . . . . . . 120
-
- "Ask" Arguments . . . . . . . . . . . . . . . . . . . . . . . . . 121
- File_autoindent . . . . . . . . . . . . . . . . . . . . . . 121
- File_bspace . . . . . . . . . . . . . . . . . . . . . . . . 121
- File_changes . . . . . . . . . . . . . . . . . . . . . . . . 121
- File_cmode . . . . . . . . . . . . . . . . . . . . . . . . . 121
- File_column . . . . . . . . . . . . . . . . . . . . . . . . 122
- File_dialogue . . . . . . . . . . . . . . . . . . . . . . . 122
- File_matching . . . . . . . . . . . . . . . . . . . . . . . 122
- File_name . . . . . . . . . . . . . . . . . . . . . . . . . 122
- File_new . . . . . . . . . . . . . . . . . . . . . . . . . . 122
- File_number . . . . . . . . . . . . . . . . . . . . . . . . 122
- File_path . . . . . . . . . . . . . . . . . . . . . . . . . 123
- File_rmargin . . . . . . . . . . . . . . . . . . . . . . . . 123
- File_smart_tabs . . . . . . . . . . . . . . . . . . . . . . 123
- File_tabsize . . . . . . . . . . . . . . . . . . . . . . . . 124
- File_timed . . . . . . . . . . . . . . . . . . . . . . . . . 124
- File_w_height . . . . . . . . . . . . . . . . . . . . . . . 124
- File_w_left . . . . . . . . . . . . . . . . . . . . . . . . 124
-
-
-
-
- File_w_top . . . . . . . . . . . . . . . . . . . . . . . . . 124
- File_w_width . . . . . . . . . . . . . . . . . . . . . . . . 124
- File_wordwrap . . . . . . . . . . . . . . . . . . . . . . . 124
- File_x . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
- File_y . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
- Sys_autoindent . . . . . . . . . . . . . . . . . . . . . . . 125
- Sys_autostrip . . . . . . . . . . . . . . . . . . . . . . . 125
- Sys_autotrail . . . . . . . . . . . . . . . . . . . . . . . 125
- Sys_backups . . . . . . . . . . . . . . . . . . . . . . . . 125
- Sys_bounce . . . . . . . . . . . . . . . . . . . . . . . . . 125
- Sys_bspace . . . . . . . . . . . . . . . . . . . . . . . . . 126
- Sys_carriage . . . . . . . . . . . . . . . . . . . . . . . . 126
- Sys_cmode . . . . . . . . . . . . . . . . . . . . . . . . . 126
- Sys_cols . . . . . . . . . . . . . . . . . . . . . . . . . . 126
- Sys_delete . . . . . . . . . . . . . . . . . . . . . . . . . 126
- Sys_extensions . . . . . . . . . . . . . . . . . . . . . . . 126
- Sys_fcount . . . . . . . . . . . . . . . . . . . . . . . . . 127
- Sys_inmacro . . . . . . . . . . . . . . . . . . . . . . . . 127
- Sys_insmode . . . . . . . . . . . . . . . . . . . . . . . . 127
- Sys_mark_paste . . . . . . . . . . . . . . . . . . . . . . . 127
- Sys_matching . . . . . . . . . . . . . . . . . . . . . . . . 127
- Sys_mouse . . . . . . . . . . . . . . . . . . . . . . . . . 127
- Sys_para . . . . . . . . . . . . . . . . . . . . . . . . . . 127
- Sys_rdefs . . . . . . . . . . . . . . . . . . . . . . . . . 128
- Sys_recording . . . . . . . . . . . . . . . . . . . . . . . 128
- Sys_rmargin . . . . . . . . . . . . . . . . . . . . . . . . 128
- Sys_rows . . . . . . . . . . . . . . . . . . . . . . . . . . 128
- Sys_sdefs . . . . . . . . . . . . . . . . . . . . . . . . . 128
- Sys_smart_tabs . . . . . . . . . . . . . . . . . . . . . . . 128
- Sys_tabsize . . . . . . . . . . . . . . . . . . . . . . . . 129
- Sys_timed . . . . . . . . . . . . . . . . . . . . . . . . . 129
- Sys_undo_many . . . . . . . . . . . . . . . . . . . . . . . 129
- Sys_word_delim . . . . . . . . . . . . . . . . . . . . . . . 129
- Sys_wordwrap . . . . . . . . . . . . . . . . . . . . . . . . 129
- Sys_zoom . . . . . . . . . . . . . . . . . . . . . . . . . . 129
- Version . . . . . . . . . . . . . . . . . . . . . . . . . . 129
- Ws_size . . . . . . . . . . . . . . . . . . . . . . . . . . 130
-
- Chess Execution Errors . . . . . . . . . . . . . . . . . . . . . 131
- Abort . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
- Arguments . . . . . . . . . . . . . . . . . . . . . . . . . 131
- Bingo Intrinsic . . . . . . . . . . . . . . . . . . . . . . 131
- Class . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
- Declaration . . . . . . . . . . . . . . . . . . . . . . . . 131
- Exec Interp . . . . . . . . . . . . . . . . . . . . . . . . 131
- Function Table Overflow . . . . . . . . . . . . . . . . . . 131
- Interpreter Parsing . . . . . . . . . . . . . . . . . . . . 131
- Left Brace . . . . . . . . . . . . . . . . . . . . . . . . . 131
- Left-Value . . . . . . . . . . . . . . . . . . . . . . . . . 132
- Link . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
- Range . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
- Right Paren . . . . . . . . . . . . . . . . . . . . . . . . 132
- Stack (Pop) . . . . . . . . . . . . . . . . . . . . . . . . 132
- Stack (Push) . . . . . . . . . . . . . . . . . . . . . . . . 132
-
-
-
-
- Symbol . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
- Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
- System Call . . . . . . . . . . . . . . . . . . . . . . . . 132
- System Variable . . . . . . . . . . . . . . . . . . . . . . 133
- Variable Table Overflow . . . . . . . . . . . . . . . . . . 133
-
- Some Example Chess Code . . . . . . . . . . . . . . . . . . . . . 134
- Example #1: Execute the Current File . . . . . . . . . . . . 134
- Example #2: Factorials . . . . . . . . . . . . . . . . . . . 134
-
- The Included Chess Files . . . . . . . . . . . . . . . . . . . . 135
-
- The Author . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
-
- Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 138
-
- Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
-
-
-
-
- Introduction
- ------------
-
- This document serves as the reference manual for Bingo 3.10.
- Bingo is a full-featured text editor at the right price. Some of its
- features include:
-
- - high speed execution, with particularly fast searches, screen
- handling, and file I/O
- - virtual memory for file storage; up to 240 Megabytes of file
- storage possible; XMS, EMS both supported.
- - CHESS C-like interpreted language giving you access to
- Bingo's powers in a true programmable language with looping,
- decision making, functions, variables and more.
- - multi level UNDO, allowing 'rollback' of changes to files
- - automatic or on-demand text recognition
- - custom define your own keyboard setup
- - superb macro capability
- - complete menu system supporting most Bingo functions
- - multiple files, multiple windows: view different sections of the
- same file, or different files at the same time
- - completely configurable
- - full color support
- - programmable, integrated mouse support
- - support of VGA, EGA, & MCGA extended text modes
- - large suite of utility functions: entab; detab; shift; etc.
- - execute DOS commands, including command-line compilers within
- only ~3k of overhead
- - regular expression search and replace, within and across files.
- - use placemarks to mark positions in files
- - extensive block operation support, include point, line and column
- marking, and two different sets of block operations
- - 27 independent paste buffers
- - wordwrap, paragraph formatting, and autoindent support included
- for text processing work
- - 2 C indentation Modes supports programming in the C programming
- language
- - User-defined delimiter and indentation matching
- - directory list picker
- - both command line and dialogue box user interface paradigms
- - print files & blocks through the serial port, parallel port, or
- to a file, with or without line numbers
- - set printing left margin, top margin, and lines per page
- - automatic processing of errors generated by most developmental
- tools.
- - execute any keystroke, Bingo function, or Chess function
- "globally" over all files in the ring
- - profile files allow file extension specific settings.
-
-
-
-
- Bingo 3.10 Reference Manual
- 1
-
-
-
-
- Philosophy
- ----------
-
- It has now been over five years since I first conceived the basic
- philosophy for Bingo; a fast, very capable editor for the person who
- needs to really manipulate textual data.
- Like fire and the wheel are to civilization, compilers,
- interpreters and editors are the underpinnings of the computer world.
- For anyone who wishes to deal with free-format files of text and
- create code, it all begins with an editor. Programmers *live* in
- their editors, wearing them like a comfortable pair of jeans. Power
- users require a tool which can handle big files and perform a
- multitude of unforseen tasks with aplomb. And everyone requires an
- environment we can tailor to our own taste.
- It is against this backdrop that I created Bingo.
- Certainly, there are many other editors available. But I believe
- no other editor offers Bingo's combination of power, flexibility, and
- value.
- There are many fast editors with configurable keyboards, nice
- menus, and macros. However, there are three features which set Bingo
- a part from its brethren:
-
- - Virtual Memory: No other editor offers Bingo's extensive,
- seamless support for files vastly larger than memory. Using any
- combination of Extended Memory, Expanded memory, and Disk, Bingo
- easily handles files over 200 megabytes in size.
-
- - Undo: New with version 3.10, Bingo now features a multi-level
- undo which can roll back any changes you make with no problem.
-
- - Interpreted Macro Language: In Chess, Bingo offers a simple yet
- mature C-like processing language which supports looping, if-
- then-else constructs, variables, and functions. This allows for
- the automation of complex tasks and the easy extension of Bingo's
- basic functionality.
-
- While there are other editors available that offer one or two of
- these three features, only Bingo combines them into one cohesive
- whole. In addition, Bingo is packed with time and effort saving
- functions, such as:
- - mouse support
- - "repeat" any keystroke, Bingo command, or Chess function
- - extensive searching and replacing, including regular expression
- searching and searching across multiple files.
- - line, point, and column block marking
- - DOS access with a minimum of overhead.
- - compiler error parsing
- and many more.
- I believe Bingo is a very capable tool, well suited to carry out
- nearly any text file manipulation. I hope you find it to be a
- valuable addition to your software library!
-
- Bingo 3.10 Reference Manual
- 2
-
-
-
-
- The Association of Shareware Professionals
- ------------------------------------------
-
- This program is produced by a member of the Association of
- Shareware Professionals (ASP). ASP wants to make sure that the
- shareware principle works for you. If you are unable to resolve a
- shareware-related problem with an ASP member by contacting the member
- directly, ASP may be able to help. The ASP Ombudsman can help you
- resolve a dispute or problem with an ASP member, but does not provide
- technical support for members' products. Please write to the ASP
- Ombudsman at 545 Grover Road, Muskegon, MI 49442 or send a CompuServe
- message via CompuServe Mail to ASP Ombudsman 70007,3536.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 3
-
-
-
-
- The Shareware Concept and Registering
- -------------------------------------
- This is just a general note as to what Bingo being Shareware
- means to you, the user. Shareware could just as easily be called
- "Honorware"; I depend upon you honor to mail in your payment for Bingo
- if you are using it regularly. All of the legal jargon describing
- this Shareware concept is contained in the REGISTER.DOC file included
- with Bingo.
- Basically, I depend upon you to mail in your payment for Bingo
- after you have taken a reasonable amount of time to try it out. If
- you use it regularly, please mail in the payment. The number of man-
- hours which went into Bingo is incredible; the registration fee is a
- small price to pay. So if you use Bingo regularly, please send me the
- registration fee I charge for Bingo -- it's not much money for a very
- sharp program.
- When you register, you are entitled to a number of advantages,
- depending on how you register. If your registration is a Single
- Version registration ($40), these benefits include:
- 1) If you request it, I will mail you a copy of the current
- release of Bingo free.
- 2) You are entitled to support for 9 months, or until 1 month
- past the release of the next version, whichever is longer.
- If your registration is a Lifetime registration ($75), your benefits
- are a little more extensive. They include:
- 1) If you request it, I will mail you a copy of the current
- release of Bingo free.
- 2) You are entitled to support for as long as Bingo is marketed
- as a product, be it as shareware or commercial.
- 3) The next release will be mailed to you free of charge.
- 4) You will be notified of each successive release, and each will
- be available to you for a mere $5.00 shipping fee.
-
- In addition, registered users of any sort get to have their named
- emblazoned on their copy for all to see; this way everyone will know
- what honorable people they are. And no, a simple sector editor cannot
- change this name -- it has to be done here. The name will be shown on
- the initial screen which is popped up when Bingo is executed, and can
- also be accessed from the 'version_info' function.
- Also, some registered users are able to beta-test upcoming
- versions -- a double-edged sword. Beta testing is somewhat precarious
- at times, but you do get to take a hand in forming the next version.
- Plus you get to have your complaints redressed faster than the general
- public.
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 4
-
-
-
-
- Ordering Bingo
- --------------
-
- Direct from Me
- --------------
-
- You can order directly from me at the below address:
-
- Christopher R. S. Schanck
- PO Box 279
- Hanover MD 21076
- (410) 379-9019
-
-
- PsL Shareware Registration
- --------------------------
-
- You can register from Public (software) Library with your MC,
- Visa, AmEx or Discover card by calling 800-2424-PsL or 713-524-6394 or
- by FAX to 713-524-6398 or by CompuServe to 71355,470 or by mail to
- PsL, PO Box 35705, Houston, Texas 77235-5705. Bingo's order number is
- 10399. Please use this order number when ordering if possible. These
- numbers are for ordering *only*. For information about dealer
- pricing, volume discounts, site licensing, shipping of product,
- returns, latest version number or other technical information, contact
- me directly at the above address. I repeat, please
-
- *** DO NOT ***
-
- call PsL for anything other than to place an order -- they will not be
- able to help you.
-
- Compuserve Online Registration
- ------------------------------
-
- You can register the Lifetime version of Bingo online via the
- Compuserve Information Service. To do this GO SWREG to the Software
- Registration Service. Bingo's Registration ID is #411. When you
- register this way I am notified within one (1) day and mail your copy
- directly to you. Your Compuserve account will be charged the
- registration fee.
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 5
-
-
-
-
- Things to Possibly Come
- -----------------------
- For some time, a goal was implementing a full procedural
- language. Earlier last year (12/91) I began prototyping a full
- procedural interpreter which was to be integrated into Bingo. I was
- very pleased to announce the Chess procedural language as an integral
- part of Bingo starting with version 3.00. Chess is a very powerful,
- if minimalistic, C-like language complete with looping, if-then-else
- statements, variables, functions, and more. You can interrogate Bingo
- for its current status, and ask the user for a variety of input.
- For version 3.10, several of my prior goals have been met. In
- particular I have added a multi-level undo function. This is a very
- powerful function which adds another safety net for you, the user.
- This will be expanded into a redo function as well in the near future.
- So what remains? Plenty; I still really want to add customizable
- menus to Bingo; even more so with addition of Chess, this seems to me
- to be a very important addition. Plus, the longer people use Chess,
- the more functionality they think of to add, so extending Chess is an
- ongoing proposition.
- Also, I have been giving serious thought to porting Bingo to the
- OS/2 environment. OS/2 is a very powerful environment with a lot to
- offer both users and developers.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 6
-
-
-
-
- Support
- -------
-
- As any of my registered users will tell you, I am committed to
- supporting Bingo. Without my users, where would I be? Anyone,
- registered or not, who calls or writes me will receive prompt and
- (hopefully) useful help. I particularly like to hear of requests;
- anything you would like to see in Bingo, let me know. One of my beta-
- testers remarked that he felt like he had a personal editor --
- anything he wanted was added.
-
- US Mail Contact
- ---------------
- The address and phone number to contact me at is:
-
- Christopher Schanck
- PO Box 279
- Hanover MD 21076
- (410) 379-9019
-
- PLEASE feel free to contact me. I very much like to hear from
- you!
-
- CompuServe Contact
- ------------------
- You will get the quickest response from me via Compuserve. You
- can contact me there as:
- 70541,3614
- On the Internet, that would be:
- 70541.3614@compuserve.com
-
- Internet Contact
- ----------------
- You will get very quick response from me via Internet E-mail.
- You can contact me there as:
-
- cschanck@access.digex.net
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 7
-
-
-
-
- Getting the Latest Version
- --------------------------
- If you have a copy of Bingo but are not sure if it is the latest
- version, the best way to find out is by calling the Computer
- Connection BBS in Washington DC. This is a very large, well-managed
- BBS. The latest version of Bingo will always be available here, and
- E-Mail left for me will be answered. The number is (202) 547-2008.
- Another way to assure yourself is to check on Compuserve, in the
- IBMAPP forum, Text Editor section, generally named BE???.ZIP.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 8
-
-
-
-
- Using this Manual
- -----------------
- This manual is broken into four parts. The first is an overview
- of Bingo itself, including topics such as customization.
- The second section consists of sections on each major
- functionality present in Bingo. These individual sections are not
- tutorial in orientation, but rather give necessary information needed
- to utilize this functionality. Each section has both a narrative
- section and a function reference.
- The third section is a overview and introduction to the Chess
- procedural language, covering things like syntax and rules. The final
- section is the library reference for Chess.
- I suggest that the first time user first read the initial
- sections for pertinent information, then go through the function
- summary thoroughly. This will give you a clear idea of the
- capabilities of Bingo. Reading the third section will familiarize you
- with the capabilities of the Chess language.
- Finally, *please* read the README.DOC file very carefully. In
- some cases it will have information this file doesn't contain, and it
- may describe some things in greater detail as it is kept as a running
- log as I make changes.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 9
-
-
-
-
- Overview
- --------
-
- Installing Bingo
- ----------------
- There are 2 files which are of critical importance for Bingo to
- run.
- BE.EXE is the executable. If you dislike typing 'be' at the DOS
- command, you CAN rename Bingo's executable. One point to remember,
- don't invoke the .EXE file directly.
- KEYCFG.SET is the compiled keyboard definition file. This needs
- to be in the same directory as BE.EXE, or in the current directory.
- Without these two files, BE.EXE and KEYCFG.SET, Bingo will not
- start.
- There is another file which is useful but not mandatory for Bingo
- to run. BINGO.INI, in either the current directory or in same
- directory as BE.EXE.
- The help file BINGO.HLP, is an additional file which must be in
- the same subdirectory as BE.EXE if you wish to use it. When you
- invoke help, Bingo will look there for the file BINGO.HLP. The file
- may contain your own description of the current key layout, or just
- about anything else you would like. Bingo comes with a default help
- file.
- As an example, assume the Bingo distribution files are contained
- on floppy disk on drive A:, and you are installing Bingo on drive C:.
- First, move to drive C: and create a directory for bingo, called
- \bingo using DOS's mkdir command. Move to this subdirectory using 'cd
- \bingo'. Now copy the files from drive A: over to the proper
- subdirectory by using 'copy A:*.* C:\BINGO'.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 10
-
-
-
-
- BOPTS: The External Configuration Utility
- -----------------------------------------
- While most of Bingo's options are configurable from within Bingo
- itself, for certain technical reasons some are not. BOPTS is a
- utility which allows you to set these. To run BOPTS, use
-
- BOPTS
-
- and BOPTS will look for the file BE.EXE in the current directory.
- Using:
-
- BOPTS <executable name>
-
- and BOPTS will look for the name you give it.
- BOPTS will allow you to alter several key attributes affecting
- the way Bingo runs. This section will detail what those options are,
- and what they can do for you.
- BOPTS will modify the BE.EXE executable directly, so if you are
- going to compress it with one of the several popular utilities which
- do so, beware, you will have to uncompress it for BOPTS to work.
- Also, if you have anti-virus programs, they will probably complain
- about BOPTS modifying BE.EXE as well.
- The good news is that the settings controlled by BOPTS are of a
- nature that you will not have to set them often.
-
- Number of Buckets and Bucket Size
- ---------------------------------
- The first two options are the number of virtual memory 'buckets'
- Bingo allocates space for upon start up, and the second is the 'size'
- of each virtual-memory bucket. In short, the *number* of buckets (up
- to 15k) multiplied by the *size* of each bucket (up to 16k) determines
- the maximum theoretical memory limit. For a full discussion of how
- these two parameters impact performance, see the section on Virtual
- Memory.
-
- Chess Stack Size
- ----------------
- This option controls the number of items Bingo allocates room for
- Chess subprograms to use on the Chess stack. Since all Chess
- subprograms share a common stack, this can be important. In heavily
- recursive pieces of code, increasing this can be very important.
-
- Chess Number of Variables
- -------------------------
- This dictates what the maximum number of Variables Bingo
- allocates handles for on start up.
-
- Chess Number of Functions
- -------------------------
- This dictates what the maximum number of Functions Bingo
- allocates handles for on start up.
-
- Bingo 3.10 Reference Manual
- 11
-
-
-
-
- Scramble Registration Name
- --------------------------
- This option will allow you to scramble the registration name in a
- copy of BE.EXE. This will blank out the current registration name.
- This is included so that people who have registered copies and wish to
- pass them along can expunge their name from the executable.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 12
-
-
-
-
- Bingo and Virtual Memory
- ------------------------
- In version 2.10, Bingo introduced a virtual memory paradigm to
- allow programmers to edit more and larger files. Virtual memory is a
- simple, elegant, beautiful concept in the abstract; the reality, on an
- MS-DOS based PC, is a very hairy beasty indeed. Many different
- methods for implementing virtual memory were examined. The one I
- settled on seems a good compromise; Bingo is still very quick, and the
- memory/disk swapping necessary when you are working with large files
- is relatively unobtrusive.
- Bingo treats file storage as a set of fixed length blocks. As
- shipped, Bingo is generally configured for 4096 byte-sized blocks, or
- 4k. Internally, Bingo can deal with up to 16k of these blocks, or
- *buckets*, configurable from 1k to 16k. The bucket *size* is the size
- of each block and is configurable from 2k to 16k. The larger the
- bucket size, the more blocks (or buckets) allocated the higher the
- theoretical memory limit. For instance, a bucket size of 16k with 8k
- buckets gives a theoretical memory limit of 128 Megabytes! So why not
- just set the limits way up and be done with it?
- Two reasons. First, the larger the bucket size, the harder Bingo
- works to manipulate text. On faster machines, larger bucket sizes are
- fine; on a 386/25 Mhz PC, a 16k bucket size is no problem at all. On
- the other hand, a 2k bucket size is fine on every machine out there.
- The more buckets allocated, the less conventional memory Bingo
- has available for use. So allocating a lot more than you need is non-
- optimal use of your resources.
- Second, let's be serious about this. Seldom, if ever, will
- someone really need to edit a file 200+ Megs in size. Could happen;
- that is why I coded it as I did. But still. Also, do the arithmetic.
- To edit a 200M file, you need roughly > 400M of disk storage; 200M for
- the file itself, + 200M for the swapfile, + some odd number of bytes
- for the file entries in the FAT table (grin). Not a lot of systems
- around with several hundred megs of storage hanging about. But we
- plan for the future.
- You can change the Bucket Size and Number of Buckets via the
- BOPTS utility.
- With version 3.10, Bingo now makes use of Expanded (EMS) memory
- and Extended (XMS) memory in 256k chunks. Depending on the setting of
- the 'conf_vmem' function, you can choose in which order this memory
- will be used. Bingo makes use of EMS version 3.00 or above; XMS
- version 2.00 or above.
-
- Impact of Virtual Memory on Performance
- ---------------------------------------
- Virtual memory has had a measurable impact on Bingo's performance
- in a number of areas. Users coming from version 2.01 or earlier will
- appreciate this discussion of differences.
- On the downside, general editing is, in my estimation, a touch
- slower. Searches, scrolling, block operations, etc. On the other
- hand, the only machine I can tell the difference on is an ancient
- 8088; use an AT-class machine, and you can't see a difference.
-
- Bingo 3.10 Reference Manual
- 13
-
-
-
-
- However, even on the 8088, things are by no means slow; searches and
- such are still very quick.
- One function in particular is much slower. When you sort a
- block, things are much, *much* slower in this version. This is not so
- much a consequence of the virtual memory per se, but of the new memory
- structure. In version 2.01 and earlier, sorting was done with a
- recursive algorithm (N log N bound), and swapping lines meant swapping
- pointers only. In version 2.10, a stack-based sort is not acceptable,
- because with a large file you could corrupt the stack. So the
- excellent CombSort algorithm (April 1991 BYTE) was used instead. This
- algorithm approximates N log N time, but is ultimately slower. The
- real speed killer, however, is that I can no longer simply swap
- pointers. Instead, I have to physically move the lines themselves
- around. This is slow, slow, slow, pushing the sort time way, way up.
- But I did not want to eliminate sorting entirely. I use it too much
- to give up.
- On the upside, obviously, you can edit humongous files with ease,
- and a virtually unlimited number of files. This is an obvious
- improvement.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 14
-
-
-
-
- KEYCFG: The Keyboard Configuration Program
- ------------------------------------------
- KEYCFG is the program used to create a keyboard configuration
- which the Bingo executable can utilize. KEYCFG also allows you to
- embed Chess code (Bingo's procedural language) into a .SET file and
- assigned code subprograms to keys. The supplied configuration files
- (BINGO.CFG, EMACS.CFG, possibly others) give a good example of how to
- set up the file.
- Using Chess code in Bingo is covered thoroughly in the Chess
- manual, so this section will give a quick rundown on using Chess with
- Keycfg.
-
- KEYCFG is invoked as follows:
-
- KEYCFG <configuration name> <keyset file name>
-
- <configuration name> is the name of the text configuration source file
- you wish KEYCFG to read, and <keyset file name> is the name you wish
- KEYCFG to write the compiled keyboard setup to. The default keyset
- file which Bingo looks for on start up is KEYCFG.SET. Bingo will look
- first in the current directory, then in Bingo's own home directory.
- Alternate keyset files can be loaded from within Bingo using the
- 'key_set_load' function.
-
- Key Names
- ---------
- KEYCFG's primary job is to assign functionality to keystrokes or
- combinations of keystrokes. As such, it is important to know the
- possible key names. The keys follow the following patterns:
-
- f1-f12 are the function keys
- !f1-!f12 are the shifted function keys
- @f1-@f12 are the control function keys
- #f1-#f12 are the alt function keys
- @<key> is the control-<key> combination
- #<key> is the alt-<key> combination
- <key> is a simple key, named key, or a mouse event.
-
- These are named keys:
-
- alt_backspace alt_grey_right_arrow
- alt_equal alt_grey_up_arrow
- alt_escape alt_keypad_aster
- alt_grey_delete alt_keypad_divide
- alt_grey_down_arrow alt_keypad_minus
- alt_grey_end alt_keypad_plus
- alt_grey_home alt_keypad_return
- alt_grey_insert alt_minus
- alt_grey_left_arrow alt_return
- alt_grey_pgdn alt_tab
- alt_grey_pgup backspace
-
- Bingo 3.10 Reference Manual
- 15
-
-
-
-
- backtab keypad_plus
- ctrl_backspace keypad_return
- ctrl_delete left_arrow
- ctrl_down_arrow pgdn
- ctrl_end pgup
- ctrl_grey_delete return
- ctrl_grey_down_arrow right_arrow
- ctrl_grey_end shift_delete
- ctrl_grey_home shift_down_arrow
- ctrl_grey_insert shift_end
- ctrl_grey_left_arrow shift_home
- ctrl_grey_pgdn shift_insert
- ctrl_grey_pgup shift_keypad_5
- ctrl_grey_right_arrow shift_left_arrow
- ctrl_grey_up_arrow shift_pgdn
- ctrl_home shift_pgup
- ctrl_insert shift_right_arrow
- ctrl_keypad_5 shift_up_arrow
- ctrl_keypad_aster tab
- ctrl_keypad_divide up_arrow
- ctrl_keypad_minus
- ctrl_keypad_plus Note: The key names with
- ctrl_keypad_return 'grey' in them, as well as
- ctrl_left_arrow F11, F12, and several others,
- ctrl_minus denote keys which are
- ctrl_pgdn available only if you have an
- ctrl_pgup extended keyboard, and you
- ctrl_return have the 'Use Extended
- ctrl_right_arrow Keyboard Bios' option turned
- ctrl_tab on.
- ctrl_up_arrow
- delete
- down_arrow
- end
- escape
- grey_delete
- grey_down_arrow
- grey_end
- grey_home
- grey_insert
- grey_left_arrow
- grey_pgdn
- grey_pgup
- grey_right_arrow
- grey_up_arrow
- home
- insert
- keypad_5
- keypad_aster
- keypad_divide
- keypad_minus
-
- Bingo 3.10 Reference Manual
- 16
-
-
-
-
- These are the mouse events:
-
- Three_buttons
- Left_right_buttons
- Left_middle_buttons
- Multiple_left_button
- Single_left_button
- Right_middle_buttons
- Multiple_right_button
- Single_right_button
- Multiple_middle_button
- Single_middle_button
- Single_up_arrow
- Single_down_arrow
- Single_left_arrow
- Single_right_arrow
- Single_pyramids
- Multiple_up_arrow
- Multiple_down_arrow
- Multiple_left_arrow
- Multiple_right_arrow
- Multiple_pyramids
-
-
- The configuration file itself consists of two sections:
-
- Section 1 -- Key Assignments
- ----------------------------
- The first is any number of lines of key assignments of one of the
- following formats:
-
- a) <key specifier> <function identifier>
- b) <key specifier> macro <macro list>
- c) <key specifier> <character>
- d) ; <comment text>
-
- A line starting with a space is a continuation of the
- previous line.
-
- <key specifier> is either a simple <key name>, or two key names
- strung together as <key name>+<key name>, or three key names strung
- together as <key_name>+<key_name>+<key_name>. For instance, for you
- Wordstar people, control-k q would be entered as '@k+q' (Note: in
- this case, the Bingo will recognize both the sequence @k+q and @k+Q as
- the same thing -- case is not significant.)
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 17
-
-
-
-
- The <macro list> is a list of 0 or more function descriptors, as
- listed in the Function Summary section, and 0 or more literal
- occurrences, and 0 or more named keys, in any order. The literals
- must be enclosed in single quotes. The literals will occur in the
- macro exactly as if they had been typed. For instance, the line
- f1 macro 'Chris' return
- would define the f1 key as my name followed by a return.
- The <character> is any printable ASCII character, entered without
- quotes. For instance,
- < ,
- would redefined the less-than symbol to be the comma. This
- translation will occur during general editing, as well as in the
- search and replace string-entry boxes. Everywhere else it will be
- ignored.
- The following macro would define the Alt-C key to save all
- current modified files, execute the make command while swapping Bingo
- out to disk, saving the errors in the ERRS file, then load the ERRS
- file.
- #c macro save_all swap_execute 'make > errs' return return
- load_file 'errs.' return
- A more interesting variant of this is the one I used prior to
- installing the auto-error processing:
- #c macro modify_save_all swap_execute 'make > errs' return
- return window_bottom load_file 'errs.' return
- This version will attempt to put the errors file in the bottom-most
- window, and it will initially only save those files as have been
- modified.
- After adding the auto-error processing, I added a more complex
- version of this macro:
- #c macro modify_save_all
- swap_execute 'make > errs' return return
- window_one window_split
- load_file 'errs.' return
- window_previous
- window_resize down_arrow down_arrow down_arrow
- down_arrow down_arrow down_arrow return
- setup_err_parse 'errs.' return
- return next_error
- This version saves all modified files, executes MAKE as before, and
- returns. When it returns, it makes sure there is but one window,
- splits the current window, and loads in the ERRS file. It then
- resizes it so the bottom window is smaller, resets the error parsing
- to the ERRS file, then searches for the next (first) error.
- This last version is very sweet to use if you have a compiler
- which generates agreeable error files. Bingo will work with most
- compilers I have come across, including the Borland and Microsoft
- compilers/assemblers. With the Microsoft tools, you may have to tweak
- the compile flags a bit to get a usable format.
- Since adding Chess to Bingo, I have been using a set of Chess
- functions to manage compiling and error parsing (see the COMPILE.CHS
- file for an example of how to do this).
-
- Bingo 3.10 Reference Manual
- 18
-
-
-
-
- 'open_end' Key Identifier
- -------------------------
- KEYCFG allows the use of the 'open_end' identifier in macros to
- force Bingo to fetch string input from the keyboard. For example:
- f1 macro search open_end 'i' return
- will execute the search function, wait for the user to input the
- target string, then input 'i' for the search modifier and do the
- search.
- 'open_end' is effective only for string input --- single key
- input situations will not respond to it. In effect, 'open_end' is a
- very special key name.
-
- 'cur_file' Key Identifier
- -------------------------
- KEYCFG also allows the use of the 'cur_file' identifier in macros
- to expand into the current file's name (less path) in string input.
- For example:
- f1 macro load_file cur_file return
- will force the reload of the current file, providing it is located in
- the current directory.
-
- Using Chess functions
- ---------------------
- Any function which is not recognized as being a Bingo internal
- function is assumed to be a Chess function. For example:
-
- #z hello_world()
-
- would tie Alt-Z to the 'hello_world' Chess function.
-
- Section 2 - Chess Code
- ----------------------
- The second section of a .CFG file is the section of Chess code. To
- signal KEYCFG that this section has been reached, use the token
- 'chess-begin' on a line by itself. The token 'chess-end' signals the
- end of this section. All text between these tokens will be
- interpreted as Chess code. See the manual on the Chess procedural
- language for a further explanation.
-
- KEYCFG Command Line Options
- ----------------------------
- KEYCFG recognizes three command line options. One is a shortcut:
-
- keycfg !
-
- tells KEYCFG to assume the name of the configuration file is
- BINGO.CFG, and that the keyset file is KEYCFG.SET. I put this in
- primarily for my own use, as I run KEYCFG often during development.
-
- 'KEYCFG names' will provide an alphabetical list of all of the
- function names which are currently recognized. Useful to have.
-
- Bingo 3.10 Reference Manual
- 19
-
-
-
-
-
- Likewise 'KEYCFG keys' will list all recognized key names and
- mouse events. Also useful to have.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 20
-
-
-
-
- The KEYINFO Key Information Utility
- -----------------------------------
- KEYCFG takes plain text key definitions and 'compiles' them into
- .SET file format, KEYINFO takes a .SET file and turns it into its
- plain-text equivalent. Further, KEYINFO can take a saved Single-Key
- macro and turn it into its plain-text format. This means that you can
- define a macro on the fly and get it converted back to its text format
- where you can tune it to your heart's content.
-
- KEYINFO can be invoked two ways. First, to turn a .SET file into
- its text equivalent, use:
-
- KEYINFO <.SET file name>
-
- To turn a saved macro file into its text equivalent, use:
-
- KEYINFO -s <macro file name>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 21
-
-
-
-
- Starting Bingo
- --------------
- Starting Bingo is simple. Simply type:
-
- be <filespec> <filespec> ...
- be.exe <filespec> <filespec> ...
-
- at the DOS prompt, and you are off. One of several things will
- happen. If each file name you gave is discreet (i.e., no wild cards),
- the files named will each be loaded, one after another. If a filespec
- matches more than one file, a directory list of matching files will
- pop up which will allow you to choose a file or files. See the
- section on the Directory List for further explanation.
- If no filespec is given, Bingo will behave as if you issued 'be
- *.*'.
-
- You may also specify the starting line and column position for
- the each loaded file. The '/pLL:CC' switch allows you to do this.
- For example:
-
- be test.doc test2.doc /p10:5 /p20
-
- would load the file TEST.DOC and move to the 10th line, 5th column.
- TEST2.DOC would begin on the 20th line. If you do not give a column
- argument, the first column will be assumed.
-
- You can use the '-x<file name>' switch to run a recorded macro
- file on start up. For example:
-
- be test.doc test2.doc -xfun1.mac
-
- would load both files, then execute the macro file FUN1.MAC inside the
- buffer holding TEST.DOC.
-
- You can use the '-c<file name>' switch to run a CHESS command
- file on start up. For example:
-
- be test.doc test2.doc -cfun1.chs
-
- would load both files, then execute the CHESS program file FUN1.CHS
- inside the buffer holding TEST.DOC.
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 22
-
-
-
-
- The BINGO.INI file
- ------------------
- With version 2.11a, Bingo's configuration settings are stored in
- a file called BINGO.INI. When Bingo starts up, it will look first in
- the local directory, then in BE.EXE's execution directory. If it is
- found in neither of these places, you will not be notified and Bingo
- will run with the default settings it is shipped with. To create
- BINGO.INI, use the 'save_settings' function.
- Moving the settings to a separate file means that the settings
- and the key configurations are held in 2 separate files. This allows
- you to effortlessly use executable compression programs such as LZEXE
- (TM) and PKLite (TM) to compress BE.EXE; no longer is BE.EXE in the
- habit of modifying itself.
- With version 3.10, BINGO.INI is now a plain-text ASCII file,
- editable by Bingo itself. Normally, you use the 'save_settings'
- function to create this file -- the reason it was altered to an ASCII
- format was to facilitate Bingo upgrades. The settings are of the
- form:
-
- &<setting name>=<value>
-
- The ampersand (&) character must be in the first column. Any line
- with anything other than an & in the first column will be treated as a
- comment line. Generally, the possible <values> are:
-
- TRUE/FALSE 1/0
- Integer Range 0-???? (the upper range is dependent
- upon the setting.
- String <character string>
-
- These are the available settings:
-
- &Auto_cut 'conf_auto_cut' T/F
- * &Autoindent autoindent mode T/F
- &Automark auto marking T/F
- &Autostrip 8th bit stripping T/F
- &Autotrail trail space clipping T/F
- &Backups backup extension char string
- &Bottom_marg bottom margin 0-256
- &Bounce_curs bounce cursor T/F
- &Box_shadow shadow boxes T/F
- * &Bspace_mode backspace mode 0-3
- &Buf_to_stack cut to stack T/F
- &Chess_trace chess tracing T/F
- * &Cmode C mode indention 0-2
- &Col_bbord box border color <color>
- &Col_bchar box highlight char color <color>
- &Col_btext box text color <color>
- &Col_cur_l current line color <color>
- &Col_dial cmd line dialogue color <color>
- &Col_eob end of buffer color <color>
-
- Bingo 3.10 Reference Manual
- 23
-
-
-
-
- &Col_high highlight text color <color>
- &Col_mbar menubar color <color>
- &Col_norm normal text color <color>
- &Col_over overscan color <color>
- &Col_stat status line color <color>
- &Def_ext default file extension <string>
- &Delete_join delete joins lines T/F
- &Delim delimiters 2 <strings>
- &Dial_mode user interface mode 0-2
- &Eof_mark write eof marker T/F
- &Eol_char end of line char 0-255
- &Error_only error-only error parsing T/F
- &Exit_to_dir exit to string entry box T/F
- &Ext_keybios use extended keyboard BIOS T/F
- * &Insert insert mode T/F
- &Kill_save unkill stack size 5-10240
- &Lf_only write LF only files T/F
- &M_button_del mouse button click delay 200-1000
- &M_repeat_del mouse repeat factor 0-1000
- &Mark_paste mark after pasting T/F
- * &Matching matching mode T/F
- &Para_indent indent starts para T/F
- &Picklist where/what filenames saved 0-4
- &Prn_crlf print cr/lf setting T/F
- &Prn_dest print destination 0-2
- &Prn_header print header T/F
- &Prn_left_marg print left margin 0-256
- &Prn_line_no print line numbers T/F
- &Prn_lines_pp print lines per page 1-256
- &Prn_top_marg print top margin 0-256
- &Profile_mode profile mode T/F
- * &Rec_mode text recognition mode 0-1
- &Replace_defs replace default modifiers <string>
- &Resume_pos attempt restoer cursor pos T/F
- &Return_split return splits line T/F
- * &Right_marg right margin 0-1024
- &Safe_save use safe saves T/F
- &Save_scr save DOS entry screen T/F
- &Search_defs search default modifiers <string>
- * &Smart_tabs smart tabs T/F
- &Sound_dur sound duration 0-10000
- &Sound_freq sound frequency 0-10000
- * &Tabsize tabsize 0-80
- * &Timed timed backups 0-10000
- &Undo_many number of undo events 0-2048
- &Use_mouse use mouse T/F
- &Use_vmem virtual memory scheme 0-4
- &Vmode video mode 0-2
- &Wild_load wildcard loading rules 0-3
- &Win_close window closes with file T/F
- &Word_delim word delimter chars <string>
-
- Bingo 3.10 Reference Manual
- 24
-
-
-
-
- * &Wordwrap wordwrap mode T/F
-
- Note: The entries marked with an asterisk (*) are also found in
- profile files.
-
- <color>: <foreground><background>
-
- where the <foreground> and <background> are characters from the
- following list:
-
- k black
- b blue
- g green
- c cyan
- r red
- m magenta
- y yellow
- w white
-
- Lowercase characters mean low-intensity colors, while uppercase
- indicates high intensity. For example:
- Bk = Bright Blue on Black
- cb = Cyan on Blue
- Wr = Bright White on Red
-
- As a rule, you do not really need to ever edit this file
- directly; Bingo will write out a complete BINGO.INI file for you when
- you use the 'save_settings' function. The reason the .INI file is
- saved in ASCII file format is for easy upgradability to future
- versions of Bingo.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 25
-
-
-
-
- Bingo and Larger Screen Displays
- --------------------------------
- EGA, VGA, and MCGA video display cards support displays larger
- than the standard 25 rows by 80 columns. Bingo does support editing
- on these screen sizes. Bingo can be set to handle screen displays in
- one of three ways:
- - Bingo can be set to detect the current screen type and
- dimensions, and do retrace checking.
- - Bingo can be set to detect the current screen type and size,
- but do no retrace checking.
- - Bingo can be set to switch to 43/50 line mode if it is
- supported. No retrace checking will be performed.
- As shipped, Bingo chooses the middle of these three courses. The
- retrace checking is only done if you are using a color display with a
- 25x80 configuration.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 26
-
-
-
-
- Bingo's Menu System
- -------------------
- Bingo implements a comprehensive menu structure to aid you in
- utilizing Bingo's functions. Many people, myself included, do not
- necessarily wish to spend the time to assign every function we need to
- a keyboard equivalent. This requires a large time investment before
- you can begin using the editor. On the other hand, it is very
- irritating when you need a particular function and cannot use it
- because you did not have the foresight to assigned it to a key
- combination.
- Bingo's menu system was designed to handle just this situation.
- By assigning the 'main_menu' function to a keystroke, you effectively
- have access to *every* function Bingo has. First, almost all of
- Bingo's functions are directly accessible from the menus, grouped in
- logical sets, following a logical hierarchy. The remaining functions
- can be accessed by selecting the 'eXtras' sub-menu, then the 'Pick and
- exec' function. This function then allows you to choose from a list
- of *all* supported functions.
- I have found that for most people, it pays to assign your most
- commonly needed functions to keystrokes, and then rely on the menu
- system for the ones which are used to a lesser degree. The logical
- structure of the menus allows for easy access to less frequently
- needed functions.
- The menus themselves work quite easily. A list of possibilities
- is presented. A menu bar can be moved up and down to make your
- choice; pressing Return selects the choice. In addition, each choice
- has a highlighted character; pressing this character will
- automatically select the choice.
- In some cases you may be presented with a child menu. Here again
- you may make a choice as before, with one additional bit of
- functionality. If you are in a child menu, pressing the PgUp or PgDn
- keys will move you to the previous or next sibling menu, respectively.
- The Print menu, as well as all of the configuration menus, is a
- multiple menu. This means that after you have made a choice, the
- action will be executed and you will be returned to the menu at the
- same spot. I have found that when printing and configuring, people
- usually want to do more than one task. Menus which are multiple will
- have an asterisk ('*') printed at the bottom of the menu border.
- The Escape key always closes the current child menu. If you are
- at the top menu, it quits the menu system entirely. To see how your
- mouse, if you have one, interacts with the menus, see the section
- concerning Bingo and a mouse.
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 27
-
-
-
-
- Bingo's User Interface
- ----------------------
- Bingo's user interface comes in two flavors. The default method,
- which longtime users of Bingo will recognize, uses bordered boxes in
- the center of the screen to display and ask for user input. The
- second type of interface, which uses a command line at the bottom of
- the screen, is new for v3.00. Which interface style is used is
- controlled by the setting of the 'conf_dialogue' option. Regardless
- of the setting, the input rules are the same for the 4 main types of
- interface interaction. They are as follows.
-
- String Entry Boxes:
-
- These are the boxes which ask you for string input. The easiest
- example is when Bingo asks you for a file name. These boxes allow you
- to enter string input in a flexible manner. A wide variety of
- keystrokes are available to aid in this endeavor; they are:
-
- ^F/CursRt One Character Forward
- ^B/CursLt One Character Backward
- ^A/Home Beginning of Line
- ^E/End End of Line
- ^K/CtrlEnd Delete to Eol
- CtrlHome Delete to Bol
- ^Y Delete Line
- ^Q Quote character; the next character you type
- (such as control-L, or using the Alt-keypad
- to enter ASCII values) will be literally
- inserted into the string
- Tab Insert from Paste Buffer
- Insert Toggle insert Mode
- Alt-A Invoke the ASCII Table
- Up Arrow In Boxes interface mode, pops up a list of
- the previous 15 strings entered. In Command-
- Line interface mode, displays the previous
- string entered. Repeatedly hitting this key
- will cycle through the entire list.
- Down Arrow Valid only in Command-line mode, this cycles
- through the list in the opposite direction as
- Up Arrow.
- PgUp In Boxes interface mode, pops up a list of
- the previous 15 file names edited. In
- Command-Line interface mode, displays the
- previous file name entered. Repeatedly
- hitting this key will cycle through the
- entire list of file names.
- PgDn Valid only in Command-line mode, this cycles
- through the list in the opposite direction as
- PgUp.
-
- Pressing <Escape> will abort out of the string entry operation.
-
- Bingo 3.10 Reference Manual
- 28
-
-
-
-
- Yes/No Boxes:
-
- These are the boxes which require a yes or no answer to a
- question. An example of this is when you 'quit' a file and the file
- has been modified. Bingo will ask you if you wish to save the file.
- Each time you enter a Yes/No box, one of the two options will be
- will be highlighted (in the Command-Line method, the 'Y' or 'N' will
- be capitalized to indicate the default). This is the default option
- which will be selected if you press <Return>. In the Boxes interface
- method, using the Left and Right Arrow keys, you can change the
- current selection. Alternatively, you can press either the 'y' key
- (any case) for a yes answer, or the 'n' key (any case) for a no
- answer.
- Pressing <Escape> will abort the operation.
-
-
- Non-Editable Display Boxes:
-
- The easiest example of this type of box is the Help box, or the
- Info box. This type of box simply displays a number of lines within a
- box. By using the Up and Down arrows (also the space bar) you may
- scroll by lines, and by using the Page Up and Page Down keys you may
- scroll by pages.
- Any other keystroke will exit the box.
- The Command-Line method, when turned on, will display the same
- box as the Boxes method; there is no command line equivalent.
-
-
- List-Picking Boxes:
-
- The best example of this type of dialogue box occurs when the
- 'directory list picker' pops up. This type of box is very similar to
- the Non-Editable box discussed above, but the idea here is not merely
- to display information but to facilitate making a choice. There will
- be a menu bar highlighted, showing the current selection. You may
- move this bar up and down using the arrow and page keys. Pressing
- <Return> will selection this option.
- Additionally, the initial character of each selection may be
- highlighted. If so, pressing the corresponding character will
- automatically select this option.
- Finally, even if the leading characters of each selection are not
- so highlighted, you may "step" through the selections by pressing
- letter keys. The menu bar will move to the next selection which
- starts with the letter pressed. If necessary, the menu bar will wrap
- to the top of the list (Bingo will beep in this case). In the case of
- the directory picker, the leading '\' characters of directory entries
- will be ignored.
- As is the custom, the <Escape> key will abort the operation.
- Again, there is no Command-Line equivalent; a bordered box will
- be used.
-
-
- Bingo 3.10 Reference Manual
- 29
-
-
-
-
- Directory Lister
- ----------------
- One of the extremely useful features of Bingo is its directory
- lister. Often, Bingo will ask for a file name. If the name you give
- matches more than one file, in the case of wild cards, for instance,
- the lister will appear with a list of matches and all subdirectories
- in the current directory. There are several features embedded in this
- lister to assist you in choosing a file.
- First, all subdirectory entries in the current directory will are
- shown at the top, with a '\' character preceding them. Selecting any
- of these will cause the lister to change to that directory.
- Second, pressing a letter causes the Lister to move to the next
- file name whose first character matches the letter pressed. A beep
- will sound if the search wraps around to the beginning.
- The list is sorted alphabetically by name, but subdirectory
- entries come first. The last entry is always the New Specification
- entry, which allows you to type in a new specification, perhaps
- another drive if it is necessary.
- You have 2 choices in the directory lister other than choosing a
- file. The second-last option in the list, "Load All Matching Files",
- will, as you might guess, load all the files shown in the list. It
- will not attempt to load subdirectories. The last option, "New File
- Spec", allows you to re-choose the directory specification.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 30
-
-
-
-
- Bingo and File Names
- --------------------
- Many times during normal operation, Bingo will ask you for a file
- name. Bingo potentially handles file names slightly differently than
- plain vanilla DOS. In particular, let's examine the difference
- between
-
- 'thisfile' and 'thisfile.'
-
- The first does not contain a period. In this case, Bingo will do
- two things. First, it will, for each defined default extension, check
- if the file with that extension exists. If it does, it will use that
- file name. Possibly, one of the default extensions is '.*'. This
- would lead you to a directory list picker.
- The second contains the trailing period, and so will be used as
- is. So, in order to specify a file ignoring the default extensions,
- you must add the trailing period.
- Additionally, Bingo accepts either '/' or '\' characters as file
- delimiters. This will make life a little easier on those of us who
- use UNIX systems regularly. Finally, version 2.10 allows the use of
- the '..' and '.' directory primitives.
- Also, there are two other specifications you may use. ':home:'
- will be translated by Bingo into Bingo's original directory. So,
- ':home:bingo.hlp' would be translated to 'bingo.hlp' in Bingo's home
- directory. Likewise, ':temp:' will be mapped to the value of the TEMP
- environment variable. If TEMP is not defined, it will use the TMP
- environment variable.
- Finally, if you use any other ':xxx:' string and do not use
- 'home' or 'temp', the string between the ':' is translated as an
- environment variable. For example, if you have the line:
- set CHESS=c:\edit\chess\
- is in your AUTOEXEC.BAT files, the using the filename
- :chess:test.chs
- would be expanded to
- c:\edit\chess\test.chs.
- This is very handy when you want to put things in specific locations
- and just define the location as a variable.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 31
-
-
-
-
- The Status Line
- ---------------
- On the bottom line of each window in Bingo's display is the
- status line. This line communicates several valuable pieces of
- information. On the left side of the line, the current line and
- column are displayed. Next are a series of flags:
- a Auto indent
- b Box Draw Mode
- c C mode
- i Insert mode
- m Matching Mode
- r Recording Macro
- w Word wrap
- z Zoom mode
- For each of these flags, if the letter is capitalized, it indicates
- that the toggle is on, while a lower case character indicates the
- option is toggled off.
- Next you will see something looking like [x/y] where 'y' is the
- number of files in the ring, and 'x' is the position of the current
- file in the ring.
- Finally, the file name comes. It will be enclosed in curly
- braces, and only the drive letter and the actual 12 character
- filename. If it is prefaced with an asterisk '*', it means the file
- has been modified.
- At the end of one of the on screen status lines, you will see
- either one or three little pyramids. If there is a single pyramid,
- that means it is not the active window. If there are three pyramids,
- they tell you which is the active window. If the three pyramids are
- pointing up, the full-width window above the status line is the
- current window. If the three pyramids point to the left, this means
- that of the two windows above the status line, the one on the left is
- the active window. If the three pyramids point to the right, the
- window on the right is active.
- The same rules concerning the direction of the pyramids hold for
- inactive status lines, except that only one pyramid will be present.
- If this all sounds complicated, don't worry. Open a few windows
- and move among them; it will become much clearer.
- Finally, on the right end of the current status line, a 'T' or
- 'F' character will be shown. This represent whether the last
- operation Bingo executed returned a value of True or False; i.e.,
- whether it worked.
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 32
-
-
-
-
- Bingo and The Mouse
- -------------------
- Bingo has the capacity to make extensive use of a Microsoft
- (trademark, copyright, and kudos to Microsoft) compatible mouse,
- should you have one installed. In order for the mouse to work, three
- things must be true:
- 1) It must be connected to the computer properly. See your mouse
- manual for instructions.
- 2) You must have your mouse driver installed properly. Again,
- see your mouse manual for instructions on how to accomplish this.
- 3) You must have the 'Use Mouse' option turned on, found in the
- General configuration menu. Bingo is shipped with mouse use turned on.
-
- Bingo is designed to allow users of three button mice to make
- full use of all three buttons (I have a three button mouse). However,
- users with two button mice will only lose a little functionality when
- it comes to programming the mouse, and no functionality at all when it
- comes to dealing with the menus and dialogue boxes.
- It is generally easy to tell if the mouse is working; the status
- line will have four additional "buttons", each consisting of three
- arrows enclosed in square braces. Also, to conserve space, the file
- name will be shown without its full path.
-
- The Mouse Cursor
- ----------------
- The mouse cursor will appear on your screen as a solid, non-
- blinking block, which changes color depending on the underlying color.
- It should be possible to move the cursor over the entire screen. If
- the mouse cursor is present, it means that a response with the mouse
- is possible. If it is not visible, this means that at this point, no
- mouse response makes sense.
-
- The Mouse at the General Editing Level
- --------------------------------------
- At the general editing screen, Bingo has 20 programmable mouse
- events. The programmable events are handled exactly as key
- assignments are handled: through KEYCFG. These are the mouse names:
-
- Mouse Event Identifiers
-
- Three_buttons Left_right_buttons
- Left_middle_buttons Multiple_left_button
- Single_left_button Right_middle_buttons
- Multiple_right_button Single_right_button
- Multiple_middle_button Single_middle_button
-
- Single_pyramids Multiple_pyramids
- Single_up_arrow Single_down_arrow
- Single_left_arrow Single_right_arrow
- Multiple_up_arrow Multiple_down_arrow
- Multiple_left_arrow Multiple_right_arrow
-
- Bingo 3.10 Reference Manual
- 33
-
-
-
-
- The first ten are concerned simply with what happens when you
- press the corresponding button sequence. Note that users of two-
- button devices will only be able to utilize five of these, those
- dealing with the left and right buttons.
- The second ten refer to the 5 "hot spots" on the active status
- line. There are two for each button, one for a single click and one
- for a double click.
-
- Now that you know of these event names, what can you do with
- them? Well, you can assign them anything you could assign a key. In
- addition, two special functions are provided to help deal with the
- mouse:
-
- snap_to_mouse_xy:
- this function moves the cursor to the current mouse
- position. If necessary, it will change the active window.
-
- mouse_scroll:
- this function is kind of an expanded snap_to_mouse_xy.
- First, it moves the cursor to the mouse position. Then, as
- long as a mouse button is held down, the screen will scroll
- in the following manner:
- 1) If you are in the upper 1/8 of the screen you will
- scroll up.
- 2) If you are in the next 1/8 of the screen, the screen
- will scroll up, but more slowly.
- 3) If you are in the lower 1/8 of the screen you will
- scroll down.
- 4) If you are in the next lower 1/8 of the screen, the
- screen will scroll down, but more slowly.
-
- Additionally, 'mouse_scroll' works in exactly the same
- manner horizontally.
-
- Finally, if automarking is turned on, 'mouse_scroll'
- will update the marking on screen if marking is active.
-
- If you are elsewhere on the screen, you simply move the
- cursor about. This makes 'click and drag' operations
- possible.
-
-
- Combining these with other functions, quite powerful mouse events can
- be programmed. For example:
-
- Single_left_button snap_to_mouse_xy
- Single_right_button macro snap_to_mouse_xy point_mark
- Multiple_left_button macro snap_to_mouse_xy linemark
- mouse_scroll linemark
-
-
-
- Bingo 3.10 Reference Manual
- 34
-
-
-
-
- The first simply moves the cursor, while the second moves the cursor
- and drops a point mark. The third lets you scroll about the file,
- delineating an area to be marked.
-
- The ten "hot spots" can also be programmed as if they were keys.
-
- Single_down_arrow cursor_down
- Double_down_arrow down_page
-
- Here, this has defined the down arrow button to respond with a
- cursor_down if a single click occurs on it, or a down_page if a double
- click occurs on it.
- These "buttons" work a little differently than you might expect -
- - as long as you hold the mouse button down, the function will
- repetitively execute. So, if you double click on the down arrow
- "button" and hold the second click down, you will see the file whiz by
- at a truly astonishing speed. The speed with which the functions are
- repetitively executed can be governed using the 'conf_mdelay'
- function.
- These 20 events give you the user an unparalleled degree of
- control over how the mouse responds.
-
- The Mouse and The Menus
- -----------------------
- The mouse would not be very useful if it was not well integrated
- into the menu system. Great pains have been taken to make mouse use
- easy and intuitive with respect to the menu system.
- It is very simple. The left mouse button selects something, and
- the right mouse button closes the current menu. However, there are a
- few refinements.
- If the item you select with a single left click is in the right-
- most menu, the effect is the same as if you had moved to that
- selection and hit <return>. If the item is not the right-most menu,
- say the it is in the Main menu and you currently have the Block menu
- open, then you will simply be moved to the selection, with the other
- menus closed for you. However, no equivalent <return> will be
- executed.
- If, however, you use a double left click, the selection will be
- executed regardless of where it was on the menu hierarchy. Any extra
- open menus will be closed to bring you to the selected level.
- Likewise, a single right click will close the current menu.
- However, a double click will close *all* open menus.
- Note that this gives you some capabilities which are not
- available from the keyboard.
- If the above sounds complicated, don't worry. In practice, it is
- very easy. I would suggest you restrict yourself to single clicks
- when you begin, then move to double clicks when you are sure of what a
- single click would do. You will very quickly find that the menus are
- effortlessly intertwined with the mouse.
-
-
-
- Bingo 3.10 Reference Manual
- 35
-
-
-
-
- The Mouse and Dialogue Boxes
- --------------------------
- Throughout Bingo, you will encounter many dialogue boxes. There
- are four main types, and all support mouse use where appropriate. They
- are:
-
- String Entry Boxes:
-
- These are the boxes which ask you for string input. The easiest
- example is when Bingo asks you for a file name. There are only a few
- mouse options in these boxes; most of the time you must enter text
- from the keyboard.
- However, there are three supported button events. A single left
- click has the same effect as a <return>; it accepts the current
- string. A double left click wipes out the string; it in effect is a
- Control-Y equivalent. Finally, any right button click is the
- equivalent of an <Escape> key.
-
- Yes/No Boxes:
-
- These are the boxes which require a yes or no answer to a
- question. The easiest example of this is in the configuration
- options, where you are asked if you wish to toggle the option. By
- placing the mouse cursor over the [Yes] selection and pressing the
- left mouse button, you answer in the affirmative. Likewise, placing
- the mouse cursor over the [No] selection and pressing the left button
- answers in the negative.
- As usual, pressing the right mouse button is equivalent to the
- <Escape> key.
-
- Non-Editable Display Boxes:
-
- The easiest example of this type of box is the Help box, or the
- Info box. If there are more lines than fit within the box, up and
- down arrow boxes will appear in the upper and lower right hand corners
- of the box. By moving the mouse cursor to the corresponding box and
- holding a mouse button down, the display will scroll in the
- corresponding direction.
- As expected, the right button exits.
-
- List-Picking Boxes:
-
- The best example of this type of dialogue box occurs when the
- 'directory list picker' pops up. Here, as in the Non-Editable Display
- Boxes, up and down arrow boxes will appear if necessary. Furthermore,
- moving the mouse cursor to a particular selection and pressing a
- single left key will move the menu bar to that selection.
- Moving the mouse cursor to a particular selection and double left
- clicking will select that particular selection as if you had moved the
- menu bar there and typed <return>.
- As always, the right button is the equivalent of typing <Escape>.
-
- Bingo 3.10 Reference Manual
- 36
-
-
-
-
- The Mouse and The ASCII Table
- -----------------------------
- The mouse is also tightly integrated with the ASCII table
- function, 'ascii_table'. Here, single left clicking on a character
- moves the cursor to it (updating the display). Double left clicking
- selects the character and adds it to the string.
- Single left clicking on the [Bspace] bar is equivalent to typing
- <backspace>; it removes one character from the string. A double left
- click on this spot zeroes the string entirely.
- As always, clicking the right button is the equivalent of typing
- <Escape>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 37
-
-
-
-
- Bingo and A Network
- -------------------
- Bingo will function quite well within the network environment,
- but there are some concerns network administrators should be aware of.
- Several operations cause Bingo to save temporary data to disk. Swap-
- execution, automatic backups, and virtual memory all flush data to
- disk files for storage.
- By default, Bingo looks for an environment variable called "TEMP"
- (first choice) or "TMP" (second choice). If found, it will be used as
- a directory specification for storage of the above temporary files.
- If neither of the two environment variables is defined, the directory
- where BE.EXE was located is used.
- This enables network administrators to set up Bingo so that users
- can run the same executable, but by giving each user a separate
- definition of "TEMP" (or "TMP"), each user's temporary storage area
- will be separate from one another.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 38
-
-
-
-
- Bingo Function Summary
- ----------------------
-
- This section will give a overview of the basic functionality
- included in Bingo. For each section, detail for some of the more
- intricate functions will be presented. After the narrative section, a
- reference list for each function in the section will be presented.
- The index at the end of the manual can be used as an alphabetical
- cross-reference. Have fun!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 39
-
-
-
-
- Configuring Bingo
- -----------------
-
- Bingo is extremely configurable. To access the configuration
- menu, select the 'Config' option from the main menu, or attach keys to
- particular configuration functions.
- To make the current selections permanent, select the "Write
- setting" option found on the main configuration menu.
- There is one other item of interest. The settings found on the
- 'Text Settings' configuration menu per buffer basis. These settings
- are the ones saved in profile files. Each time you change these with
- a 'conf_' function, you change both the underlying default (used when
- new files are brought in) and the current buffer's settings. For a
- few settings, there are also 'toggle_' functions, such as
- 'toggle_cmode'. These change only the current buffer's settings.
-
- Function List
- ----------------------------------------------------------------------
-
- Save_settings
- ---------------------------------------------------------------------
- Saves the current config settings to the file you name, usually
- BINGO.INI. Upon start up, Bingo looks in the local directory then in
- Bingo's execution directory for BINGO.INI.
-
- Conf_color
- ----------------------------------------------------------------------
- Configure the color settings. You select the color you are interested
- in by pressing the appropriate color. Then, by watching the bottom
- line on the screen and pressing the up and down arrow keys for the
- foreground and the pageup and pagedown keys for the background, you
- select the color you want. Pressing return will select the color.
- For the Overscan (border) attribute, only the background attribute
- matters.
-
- Conf_lfs
- ----------------------------------------------------------------------
- Alter the lfs-only setting. If on, this setting has Bingo write files
- with lines separated by LF's only, in the UNIX fashion. Otherwise,
- Bingo uses CR-LF pairs to delimit lines.
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 40
-
-
-
-
- Conf_backups
- ----------------------------------------------------------------------
- Allows you to specify the character Bingo uses to automatically create
- backup files when a file is saved. The algorithm used takes the
- character you give and uses it to flesh out the extension of the
- original file to three characters; if the extension is already 3
- characters long, the backup character replaces the third character of
- the extension. For example, if the backup character is '$',
- main.c becomes main.c$$
- main.cp becomes main.cp$
- main.pas becomes main.pa$
-
- Conf_eof
- ----------------------------------------------------------------------
- Alter whether Bingo writes a EOF character at the end of files (^Z).
-
- Conf_search
- ----------------------------------------------------------------------
- Allows you to predetermine which flags (I/G/B/etc...) will be set
- initially for a search and replace attempts.
-
- Conf_stripping
- ----------------------------------------------------------------------
- Configure whether Bingo strips the high bit of characters when
- reading. Only really useful when reading Wordstar files.
-
- Conf_rmargin
- ----------------------------------------------------------------------
- Set the right margin. Affects paragraph reformatting and word wrap.
- This changes the current buffer's setting and the global setting.
-
- Conf_autoindent
- ----------------------------------------------------------------------
- Set whether Bingo uses auto indent mode. Affects paragraph
- reformatting and word wrap. This changes both the current buffer's
- setting and the global setting.
-
- Conf_wordwrap
- ----------------------------------------------------------------------
- Set the word wrap mode. This changes both the current buffer's
- setting and the global setting.
-
- Conf_insert
- ----------------------------------------------------------------------
- Alter whether Bingo is in insert/overwrite mode. This changes both
- the current buffer's setting and the global setting.
-
- Conf_tabsize
- ----------------------------------------------------------------------
- Set the tab size. This changes both the current buffer's setting and
- the global setting.
-
- Bingo 3.10 Reference Manual
- 41
-
-
-
-
- Conf_backspace
- ----------------------------------------------------------------------
- Configure the backspace mode:
- 1. Delete single chars
- 2. Delete spaces back to tab setting
- 3. Delete spaces to left margin
- 4. Rubout
- This changes both the current buffer's setting and the global setting.
-
- Conf_cmode
- ----------------------------------------------------------------------
- Configure whether Bingo uses C Mode on *.c and *.h files. Allows you
- to choose between two different modes of C indention:
-
- for(i=0;i<10;i++){ and for(i=0;i<10;i++)
- ...stuff... {
- } ...stuff...
- }
- This changes both the current buffer's setting and the global setting.
-
- Conf_sound
- ----------------------------------------------------------------------
- Allows you to set the frequency of the beep Bingo uses. Setting it to
- zero will effectively turn off the sound.
-
- Conf_mdelay
- ----------------------------------------------------------------------
- Allows you to specify the timing delay between repetitions of a
- function(s) being executed while a mouse button is held down. For
- example, on reasonably quick machines, paging down while holding the
- mouse button down on one of the status line "hot spots" occurred so
- fast with version 2.0 so as to be useless.
-
- Conf_button_wait
- ----------------------------------------------------------------------
- Allows you to configure, in milliseconds, the amount of delay Bingo
- will wait for the second click of a double click.
-
- Conf_shadow
- ----------------------------------------------------------------------
- Silly function, configures whether Bingo uses "shadow" boxes. Play
- with it, amaze your friends.
-
- Conf_win_close
- ----------------------------------------------------------------------
- Controls whether Bingo automatically closes a window when the file is
- closed.
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 42
-
-
-
-
- Conf_def_ext
- ----------------------------------------------------------------------
- Allows you to specify the file extensions Bingo will attempt to use
- when you specify a file name without '.'. The extensions are checked
- in order.
-
- Conf_video_mode
- ----------------------------------------------------------------------
- Allows you to choose from between three screen handling options:
- - autodetect with retrace checking
- - autodetect with no retrace checking
- - 43 or 50 line mode, if supported
- Retrace checking will only be in effect if there are only 25 lines to
- be displayed.
-
- Conf_prn
- ----------------------------------------------------------------------
- Set the printer destination, between the default serial port, the
- default parallel port, or a file.
-
- Conf_tmarg
- ----------------------------------------------------------------------
- Set the top margin, in terms of number of lines.
-
- Conf_bmarg
- ----------------------------------------------------------------------
- Set the bottom margin, in terms of number of lines.
-
- Conf_lmarg
- ----------------------------------------------------------------------
- Set the left margin which will be used when printing, in terms of
- spaces.
-
- Conf_lines_per
- ----------------------------------------------------------------------
- Set the lines per page, counting the top margin.
-
- Conf_kill_size
- ----------------------------------------------------------------------
- Alters the size of the kill buffer.
-
- Conf_cut_stack
- ----------------------------------------------------------------------
- Allows you to choose whether text about to be discarded from the paste
- buffer should be placed on the stack. If this is on, this will slow
- block operations down a bit, but it is a nice safety feature.
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 43
-
-
-
-
- Conf_auto_cut
- ----------------------------------------------------------------------
- Allows you to toggle how the 'cut' and 'copy' functions respond when
- no block has been marked. If auto cut is active, these functions will
- cut (or copy) the current line. If auto cut is not active, the
- current line will be Line marked.
-
- Conf_smart_tabs
- ----------------------------------------------------------------------
- Allows you to specify whether or not "Smart" tabs are active. Smart
- tabs cause the 'insert_tab' function to tab over to the same column as
- the next non-space character on the line previous. This changes both
- the current buffer's setting and the global setting.
-
- Conf_matching
- ----------------------------------------------------------------------
- Configures matching mode. If matching mode is active, entering a
- '[{<(' character will cause its matching close member to be entered
- automatically. This changes both the current buffer's setting and the
- global setting.
-
- Conf_trail
- ----------------------------------------------------------------------
- Allows you to configure whether or not Bingo automatically strips
- trailing spaces.
-
- Conf_bounce
- ----------------------------------------------------------------------
- Allows you what cursor movement paradigm Bingo uses. If Bounce mode
- is active, Bingo views the entire document as one long string of
- characters. Thus, you cannot move off of exiting text. Further, the
- cursor will automatically wrap at the end of lines. If Bounce mode is
- turned off, cursor movement is by the more traditional method, where
- you can move any where (horizontally) you wish.
-
- Conf_key_bios
- ----------------------------------------------------------------------
- This governs whether or not Bingo will use the Extended Keyboard Bios
- if it is found. On some machines, Bingo may identify it incorrectly,
- or there may be compatibility problems. This function allows you to
- tell Bingo to disregard the extended Bios, even if it is found. If
- this is on, the two sets of arrow keys, for example, will be
- recognized as different. They will therefore have to be defined
- separately in your keyboard config file.
-
- Conf_erronly
- ----------------------------------------------------------------------
- Allows you to tell Bingo to further restrict valid error lines to
- those containing the word 'error' (any case).
-
-
-
- Bingo 3.10 Reference Manual
- 44
-
-
-
-
- Conf_mouse
- ----------------------------------------------------------------------
- Controls whether or not Bingo uses a Mouse, if it finds one.
-
- Conf_profile
- ----------------------------------------------------------------------
- Controls whether Bingo will check for, and load if found, the profile
- file of a file's file extension each time a file is loaded.
-
- Conf_word
- ----------------------------------------------------------------------
- Allows you to edit the string containing what characters are not part
- of a word.
-
- Conf_scr_save
- ----------------------------------------------------------------------
- Controls whether Bingo will save, and then restore, the DOS screen
- upon start up and exit. Will cost you some memory.
-
- Conf_name_save
- ----------------------------------------------------------------------
- Controls whether, and how, Bingo saves the last 15 files edited. You
- can turn it off, tell it to save the info in the current directory
- (where Bingo looks first upon start up), or in Bingo's home directory.
- Further, this controls whether only the filenames are saved, or if
- other history information (such as string entry history, file
- positions, etc) are saved.
-
- Conf_delims
- ----------------------------------------------------------------------
- Allows you to input and edit pairs of delimiters for Bingo to balance
- with the 'match_delim' function. Both delimiters must be non-blank.
-
- Conf_eol_display
- ----------------------------------------------------------------------
- Allows you to enter the ASCII decimal value of the character to be
- displayed as the end of line character. The default is 32, the space
- character.
-
- Conf_exit_to_pick
- ----------------------------------------------------------------------
- Controls Bingo's actions upon exit. If turned on, Bingo will pop up
- an edit box when you quit the program (except when you exit through
- the abort_all function).
-
- Conf_prn_eol
- ----------------------------------------------------------------------
- Controls whether Bingo terminates lines with a linefeed only or a
- carriage return/linefeed pair while printing.
-
-
-
- Bingo 3.10 Reference Manual
- 45
-
-
-
-
- Conf_prn_lineno
- ----------------------------------------------------------------------
- Sets whether or not Bingo prints line numbers on each line it prints.
-
- Conf_prn_header
- ----------------------------------------------------------------------
- Sets whether or not Bingo prints page headers on each page it prints.
- Headers consist of the file name, the page number, and the date/time.
-
- Conf_timed_backups
- ----------------------------------------------------------------------
- Allows you to specify how often, in terms of changes, to save a backup
- of a file. A value of zero (0) indicates no automatic backups are to
- take place. The value input becomes the default value for any
- subsequently entered files, and becomes the value for the current
- file; it does not change the value for any existing files. Any
- operation which changes the file will increment the change counter.
- The current number of changes for each file is displayed on the info
- screen. When the predetermined number of changes has occurred, the
- file is saved as
- backXXXX.bak
- where XXXX is the buffer 4 digit id number. This id number is
- unique over an editing session, and is displayed as part of the info
- screen. The backup files are identical to the files themselves,
- except that the first line contains the original name of the file
- (full path name) and the time of the backup. So if there is a
- catastrophic failure (your cat chews through the power cord, for
- instance), you can explore the back*.bck files and recover recent
- version of your files.
- The *.bak files are stored in the location specified by the
- "TEMP" (or "TMP") environment variable; if this environment variable
- is not set the files will be stored in the root directory of the
- current drive.
-
- *Note*: Be very careful with setting this value. Generally, a
- setting between 256 and 1024 is very useful. However, if you are
- editing a multi-megabyte file, backups can be a large pain
- because of the time involved in saving the file.
-
- Conf_carriage
- ----------------------------------------------------------------------
- This function toggles on and off whether or not the 'carriage'
- function splits lines.
-
- Conf_delete_join
- ----------------------------------------------------------------------
- This function toggles on and off whether or not deleting at the end of
- a line brings the next line up.
-
-
-
-
- Bingo 3.10 Reference Manual
- 46
-
-
-
-
- Conf_wild_load
- ----------------------------------------------------------------------
- This function is used to control how Bingo interprets wild card
- characters in file names. There are 4 choices:
- - never load wild card matches automatically
- - load wild card matches only at start up
- - load wild card matches every *but* start up
- - always automatically load wild card matches
-
- Conf_chess_trace
- ---------------------------------------------------------------------
- This is used to turn on the Chess execution trace capability. When
- enabled, each Chess program executed will stop at each line and
- display it. You will be able to continue execution or halt it.
-
- Conf_dialogue
- ----------------------------------------------------------------------
- This is used to set whether string, yes/no, and character dialogue
- takes place in bordered boxes in the center of the screen or at the
- bottom of the screen.
-
- Conf_recognize
- ----------------------------------------------------------------------
- This is used to decide whether Bingo's text recognition system is
- continuously active ('Automatic' mode) or quiescent ('On-Demand'
- mode). See the section on Extra Functions for a complete explanation
- of the text recognition system.
-
- Conf_undo
- ----------------------------------------------------------------------
- This sets the number of undo events Bingo saves systemwide. Valid
- settings are 0 (which indicates no undo events are to be saved) to
- 2048.
-
- Conf_scr_save
- ----------------------------------------------------------------------
- This turns on or off whether Bingo saves what the DOS screen looked
- like before Bingo was started up.
-
- Conf_resume_pos
- ----------------------------------------------------------------------
- This setting controls to whether or not Bingo attempts to resume to
- the last cursor position of the file when it was edited last. In
- other words, when you load a file (if this option is turned on) and
- that file was one of the last 15 edited, and file status saving is
- turned on, Bingo will automatically move to the position the cursor
- was at when the file was last edited. See the 'conf_name_save'
- function for more information.
-
-
-
-
- Bingo 3.10 Reference Manual
- 47
-
-
-
-
- Conf_vmem
- ----------------------------------------------------------------------
- Controls how Extended (XMS) and Expanded (EMS) memory are used in
- conjunction with the disk for virtual memory. The choices are:
- a) Disk Only: Bingo immediately swaps to disk when it runs out of
- conventional memory.
- b) EMS Only: Bingo attempts to swap to EMS memory for virtual
- memory when it runs out; if EMS is exhausted or unavailable,
- Bingo will then use the disk.
- c) XMS Only: Bingo attempts to swap to XMS memory for virtual
- memory when it runs out; if XMS is exhausted or unavailable,
- Bingo will then use the disk.
- d) EMS, then XMS : Bingo attempts to swap to EMS memory for
- virtual memory when it runs out; if EMS is exhausted or
- unavailable, Bingo attempts to swap to XMS memory for virtual
- memory when it runs out; if XMS is exhausted or unavailable,
- Bingo will then use the disk.
- e) XMS, then EMS : Bingo attempts to swap to XMS memory for
- virtual memory when it runs out; if XMS is exhausted or
- unavailable, Bingo attempts to swap to EMS memory for virtual
- memory when it runs out; if EMS is exhausted or unavailable,
- Bingo will then use the disk.
-
- Conf_para
- ----------------------------------------------------------------------
- Controls what the definition of the beginning of a paragraph is. The
- default (off) setting is a blank line; turned on, and indented line is
- a new paragraph. This setting affect the 'reform_para' function.
-
- Conf_mark_paste
- ----------------------------------------------------------------------
- This function allows you to turn on whether a pasted block is marked
- when it is pasted in.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 48
-
-
-
-
- Basic Editing
- -------------
-
- Basic editing concerns deletion and insertion of characters.
- Bingo provides a number of ways to delete text without recourse to the
- block operation. Five of these operations push deleted text onto the
- unkill stack -- 'del_eol', 'del_line', 'del_bol', 'del_word_lt', and
- 'del_word_rt'.
-
- The Destructive Backspace
- -------------------------
- Bingo supports four backspace deletion modes. The first is the
- old favorite, the simple one character destructive backspace. The
- second mode destructively deletes back to the previous tab stop,
- provided there are only spaces in the way. If there are non-space
- characters in the way, it functions as in mode 1.
- The third mode deletes all the way to the left margin (column 1),
- provided it consists only of spaces. Again, if there are non-space
- characters, it functions as mode 2.
- The fourth mode is termed a rubout. In this mode, Bingo will
- backup one character and overwrite that character with a space.
-
- The 'Default_' Functions
- ------------------------
- Bingo has two deletion functions which are variations on others.
- The 'default_bspace' function is a variation on the 'back_space'
- function while the 'default_del' function is a variation on the
- 'del_char'. Both work in essentially the same manner. If a block is
- marked, a 'cut' function is performed. If no block is marked, the
- corresponding function.
-
- Function List
- ----------------------------------------------------------------------
-
- Insert_tab
- ----------------------------------------------------------------------
- Insert the number of spaces needed to move the cursor to the next tab
- stop, based on the current tab size.
-
- Carriage
- ----------------------------------------------------------------------
- If the 'conf_carriage' setting is turned on, this function splits the
- current line by moving the cursor to the start of the next line,
- taking everything to the right of the cursor along for the ride. If
- this moves you onto the bottom line of the window, the line will be
- centered on the screen. Depending on C mode and the Auto indent mode
- settings, automatic indentation of some type may be performed. If the
- 'conf_carriage' setting is turned off, this function simply moves the
- cursor down one line.
-
-
-
- Bingo 3.10 Reference Manual
- 49
-
-
-
-
- Toggle_ins
- ----------------------------------------------------------------------
- Toggles the insert/overwrite mode. Changes only the setting of the
- current buffer.
- Toggle_wrap
- ----------------------------------------------------------------------
- Toggles the word wrap setting. Changes only the setting of the current
- buffer.
-
- Toggle_cmode
- ----------------------------------------------------------------------
- Toggles the C mode setting, regardless of the file name. Changes only
- the setting of the current buffer.
-
- Toggle_autoindent
- ----------------------------------------------------------------------
- Toggle the auto indent setting. Changes only the setting of the
- current buffer.
-
- Del_char
- ----------------------------------------------------------------------
- Deletes the current character at the cursor position; if it was at the
- end of a line and the 'conf_delete_join' setting is turned on, brings
- the next line up.
-
- Back_space
- ----------------------------------------------------------------------
- If the 'conf_delete_join' setting is turned on, performs a destructive
- backspace, if the current deletion mode is not Rubout. If the current
- mode is Rubout, the cursor will back up one space and the current
- character will be blanked based on the current deletion mode in
- effect. If the setting is turned off, performs a rubout.
-
- Del_line
- ----------------------------------------------------------------------
- Deletes the entire current line, regardless of position.
-
- Del_eol
- ----------------------------------------------------------------------
- Deletes all text to the end of the line; if at the end of a line,
- joins the lines if the 'conf_delete_join' setting is turned on.
-
-
- Del_bol
- ----------------------------------------------------------------------
- Deletes all text to beginning of line, moves to first column. If at
- the beginning, joins the line with the previous line if the
- 'conf_delete_join' setting is turned on.
-
-
-
-
- Bingo 3.10 Reference Manual
- 50
-
-
-
-
- Default_del
- ----------------------------------------------------------------------
- Does one of two things depending on whether or not a block is marked.
- If a block is marked, the 'cut' function is executed. If no block is
- marked, the 'del_char' function is executed.
-
- Default_bspace
- ----------------------------------------------------------------------
- Similar to 'default_del', except that if no block is marked, a
- 'back_space' function is executed.
-
- Del_word_rt
- ----------------------------------------------------------------------
- Deletes from the current cursor position to the start of the next word
- to the right.
-
- Del_word_lt
- ----------------------------------------------------------------------
- Deletes from the current cursor position to the start of the next word
- to the left.
-
- New_line
- ----------------------------------------------------------------------
- Inserts a new line before the current line, without moving the cursor.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 51
-
-
-
-
- Block Handling
- --------------
-
- Marking
- -------
- Block marking is extremely flexible. Three types of marking are
- supported. Line marking considers lines to be the smallest
- indivisible chunks of text. It is primarily used when editing large
- sections of program code, since much of this type of editing involves
- moving lines.
- Point marking, on the other hand, considers single characters to
- be the smallest indivisible portions of text. this is useful for
- replicating portions of lines, rather than whole lines.
- While Point marking "snakes" the mark from one point to the next,
- Vertical marking lets you define corners of a column-oriented block.
- There are two methods of marking, governed by the 'conf_automark'
- function. If auto marking is turned off, marking proceeds as follows:
- go to the beginning of the block you wish to mark; execute the
- appropriate mark function for the block type you are interested in;
- move to the end of the block you wish to mark; mark again.
- If auto marking is turned on, things work differently. Now, when
- you mark, you turn marking 'on'. As you move about the file, the
- block will follow you until you decide to mark the end. However, you
- do not have to mark the end of the block; Bingo will simply assume the
- current position is the other end of the block.
- You can also use the 'extend_mark' function. This simply extends
- the current marking scheme to the current cursor position. If there
- is no mark in the file, 'Extend_mark' will display an error message.
-
- Operations on Blocks
- --------------------
- Bingo supports two slightly different sets of block operations.
- The first set will be familiar to users of many programming editors,
- while the second will bring back memories of any Wordstar compatible
- editor they may have used.
- The first set of operations consists of three functions: 'cut',
- 'copy', 'paste'. 'cut' snips the marked region to the block buffer,
- removing it from the file. 'copy' does the same thing, but it leaves
- the marked text intact in the file. In both cases, if nothing is
- marked and you have this option turned on, Bingo will assume you wish
- the current line to be line marked.
- 'paste' is very simple: whatever is currently in the block buffer
- is placed at the current cursor position, based on the marking method
- used. If the contents were point marked, the contents are simply
- 'squirted' into the text. If the contents were line marked, the lines
- are inserted above the current line.
- There is also an alternate type of paste operation, that of
- 'paste_replace'. In this case, the paste buffer's contents overwrite
- the needed amount of space in the text, rather than squirting between
- existing text. This type of pasting will only work for Column and
- Line marked blocks. Be careful! You can hurt yourself with this one.
-
- Bingo 3.10 Reference Manual
- 52
-
-
-
-
- The second type of block operations available are similar in
- nature to those used by Wordstar-compatible editors. Block operations
- consist of three steps: mark the text, move to the destination
- position, invoke the function.
- 'block_move' moves the currently marked blocked of text to the
- current cursor position. 'block_copy' does the same thing, except it
- leaves a copy behind. 'block_move' and 'block_copy' will not allow
- you to manipulate blocks between files.
- 'block_delete' is functionally identical to Cut, except that it
- requires that a block be marked; the setting of the auto line cut
- toggle has no effect on 'block_delete'.
- Remember that since each file can have independently marked
- sections of text, you cannot use the 'block_move' and 'block_copy'
- functions to manipulate text between separate files.
-
- Named Buffers
- -------------
- In addition to the default paste buffer, Bingo supports 26 named
- buffers, 'a'-'z'. In order to change which buffer is currently in
- use, use the 'name_buffer' function. Press the letter of the buffer
- you want, or <return> for the default buffer. Until you change the
- buffer, Bingo will use the currently named buffer for all its
- operations. All buffers will be saved when a swapping operation is
- being done.
-
- Emacs_yank
- ----------
- This function melds the unkill stack and the paste buffer
- together in the following manner. If the most recent block
- operation/deletion was a block operation, 'emacs_yank' works exactly
- like 'paste', pushing the paste buffer contents into the text. If the
- most recent operation was a deletion (word, line, -eol, -bol),
- 'emacs_yank' works like the 'paste_kill' function, pulling text from
- the undo stack without disturbing its contents. This allows you to
- use the deletion commands to manipulate text in concert with the paste
- buffer operations. Note that this is not identical to EMACS's 'yank'
- functionality, but it is useful.
-
- Function List
- ----------------------------------------------------------------------
-
- Line_mark
- ----------------------------------------------------------------------
- Drop a line marker. The block will be expanded or shrunk, depending
- on the last drop made. Line marks consider the line to be the
- smallest markable element of text.
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 53
-
-
-
-
- Point_mark
- ----------------------------------------------------------------------
- Drop a point marker. The block will be expanded or shrunk, depending
- on the last drop made. Point marks consider the character to be the
- smallest markable element of text.
-
- Vertical_mark
- ----------------------------------------------------------------------
- Drop a vertical marker. Vertical, or column, blocks are defined by and
- upper and an opposing lower corner.
-
- Extend_mark
- ----------------------------------------------------------------------
- Extends the current marked block, using whichever marking scheme is in
- place. Does nothing if no block is marked.
-
- Unmark
- ----------------------------------------------------------------------
- Unmark all text in current buffer.
-
- Cut
- ----------------------------------------------------------------------
- Cut the marked text to the block buffer. The marked text is deleted
- from the file.
-
- Copy
- ----------------------------------------------------------------------
- Copy the marked text to the block buffer. The marked text is NOT
- deleted from the file.
-
- Paste
- ----------------------------------------------------------------------
- Pastes the contents of the block buffer into the text at the current
- position. If the contents were line marked, the contents will be
- pasted, as lines, above the current line.
-
- Paste_replace
- ----------------------------------------------------------------------
- Pastes the contents of the block buffer at the current location,
- overwriting the needed amount of space. This is only valid when the
- paste buffer is Line or Vertical marked.
-
- Block_move
- ----------------------------------------------------------------------
- Moves the currently marked blocked of text to the cursor position.
-
- Block_copy
- ----------------------------------------------------------------------
- Copies the currently marked blocked of text to the cursor position.
-
-
-
- Bingo 3.10 Reference Manual
- 54
-
-
-
-
- Block_delete
- ----------------------------------------------------------------------
- Deletes the currently marked block of text to the block buffer;
- identical to cut.
-
- Block_save
- ----------------------------------------------------------------------
- Writes the currently marked text to a file.
-
- Swap_buf_and_block
- ----------------------------------------------------------------------
- Takes the currently marked portion, and swaps it with the current
- contents of the paste buffer. The two blocks need not be of the same
- type.
-
- Report_bsize
- ----------------------------------------------------------------------
- Reports the number of lines and characters (line breaks in point
- marked blocks count as one character) the currently marked block
- spans.
-
- Name_buffer
- ----------------------------------------------------------------------
- Allows you to change the current paste buffer. <return> specifies the
- default buffer, and 'a'-'z' specify their respective buffers.
-
- Buffer_info
- ----------------------------------------------------------------------
- Displays various pertinent information about all the paste buffers.
-
- Look_buffer
- ----------------------------------------------------------------------
- Displays the contents of the current buffer in a non-editable window.
- This only displays up to the first 100 lines in the buffer.
-
- Cut_append
- ----------------------------------------------------------------------
- Works exactly like 'Cut', except it appends the marked text to the
- current contents of the buffer. The text in the buffer and the marked
- text must be of the same type.
-
- Copy_append
- ----------------------------------------------------------------------
- Just as 'Cut_append', but performs a copy instead.
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 55
-
-
-
-
- Emacs_yank
- ----------------------------------------------------------------------
- Melds the unkill stack and the paste buffer together. If the most
- recent block operation/deletion was a block operation, 'emacs_yank'
- works exactly like 'paste', pushing the paste buffer contents into the
- text. If the most recent operation was a deletion (word, line, -eol,
- -bol), 'emacs_yank' works like the 'paste_kill' function, pulling text
- from the undo stack without disturbing its contents. This allows you
- to use the deletion commands to manipulate text in concert with the
- paste buffer operations.
-
- Mark_word
- ----------------------------------------------------------------------
- This marks the current word, using the defined word characters. Only
- legal word text is marked.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 56
-
-
-
-
- Undo and Error Parsing
- ----------------------
-
- Undo Capabilities
- -----------------
- With the advent of version 3.10, Bingo now supports true multi-
- level undo. With few exceptions, every operation in Bingo can be
- completely "undone". You can designate how many operations will be
- saved by Bingo, from 0 (no Undo active) to 2048 via the 'conf_undo'
- function. This undo stack is global, i.e., all of the buffers share
- in this one stack in common.
- In order to undo an operation, use the 'undo' function to undo
- the operation. Use a series of 'undo' functions to rollback a
- sequence of operations. As each operation is undone, it is popped off
- of the undo stack, no longer available.
- There are a number of technical issues you need to be aware of in
- conjunction with undo. They are:
-
- a) a few operations, particularly those which execute a single
- operation over a large number of lines (such as 'shift_block'-ing
- 5 thousand lines) will fail to be saved because of memory
- constraints. You will be notified in these cases.
-
- b) all block operations will be saved, regardless of the size of
- the blocks, as these have been specially coded to be supported.
-
- c) Undo uses additional virtual memory space, particularly in
- cases when it is saving delete operations, as it must save the
- deleted text so as to make undoing the delete feasible. Because
- of this, you may choose to turn undo off in cases when extremely
- large file manipulation is needed.
-
- d) search and replace operations are treated as if each
- replacement is a single operation t be rolled back.
-
- Additional Undo Capability
- --------------------------
- The full Undo capability is good for the wholesale rolling back
- of changes, but some additional deletion recovery is provided: Bingo
- keeps a stack of recently deleted items; text deleted by 'del_eol',
- 'del_bol', and 'del_line' functions. This stack is kept in reverse
- order; that is, the most recently deleted text is placed in top of the
- unkill stack.
- Additionally, you have an option regarding text cut to the paste
- buffer. Normally, when you place text into the paste buffer (Using
- the 'cut', 'copy', etc. functions), if the paste buffer already
- contains something, that text is discarded. However, if you set the
- 'cut to stack' option on (in the General Config Menu, or with the
- 'conf_cut_stack' function), this text will be pushed onto the stack
- also.
-
-
- Bingo 3.10 Reference Manual
- 57
-
-
-
-
- You can control the size of the unkill stack using the
- 'conf_kill_size' function (1 to 10240 lines), or through the config
- menus. You cannot, however, turn it off.
-
- Manipulating the Unkill Stack
- -----------------------------
- There are three functions available to help you deal with the
- unkill stack. 'rotate_kill' will pop up a list of the current stack's
- contents. By moving the menu bar and hitting return, you can move the
- selected entry to the top of the stack.
- 'unkill' and 'paste_kill' are very similar. They take the top
- member of the stack and insert it in the current position. If the top
- member of the stack was a full line, it will be inserted above the
- current line. 'unkill' also removes the top member from the stack.
-
- Error Parsing
- -------------
- Bingo provides the capability to automatically parse compiler
- generated error messages. The procedure for this is fairly simple.
- First, you must have a text file containing the error output of
- the compiler (or assembler) in question. This usually obtained by
- running said compiler and redirecting its output to a file. Bring
- this file into the editor.
- Next, call the 'setup_err_parse' function, and give it the name
- of the file. If the name matches a file in the ring, Bingo will tell
- you that error processing is setup properly.
- Now it is simple; simple call the 'next_error' or 'prev_error'
- functions. The following things will happen:
-
- 1) Bingo will see if a next (or previous) error can be found.
- If not, it will report that no more errors exist.
- 2) Assuming an error line is found, the file name and line
- number will be picked out of the line. Bingo will perform and
- edit_file operation on the file name, then jump to the offending
- line. All of this will happen within the current window.
- 3) Also, any on-screen window which contains the file being
- parsed will be updated. The current error line will be
- highlighted automatically.
-
- As you can see, error parsing is super useful. For a further example
- of how it works, see the example macro in the section on the KEYCFG
- program.
-
- Error Parsing Method
- --------------------
- Bingo parses error files using a "fuzzy" or "best-guess"
- algorithm. It checks each line as follows.
- First, Bingo attempts to find a valid file name on the line. The
- file name must contain a period, and it must have a file extension.
- The file name cannot be a .EXE or .COM file, and it may contain the
- full path specification (new with version 2.10e).
-
- Bingo 3.10 Reference Manual
- 58
-
-
-
-
- After finding such a file name, Bingo verifies that the named
- file exists on disk or in the current ring. If it does, Bingo now
- begins to look for the line number within the error file. Bingo will
- look for the first number to follow the file name, and use this as the
- line number.
- If both a file name and a line number are found, the line will be
- recognized as a valid error/warning line.
-
- This algorithm will work for the Borland and Microsoft
- developmental tools. However, in some cases, you may have to consult
- your manual in order to find what command-line switches have to be set
- for your compiler to output errors in a usable message format.
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!!!!!! Note that linker errors do not !!!!!!!!!
- !!!!!!!! have line numbers, and so will !!!!!!!!!
- !!!!!!!! not be recognized. !!!!!!!!!
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- However, whenever Bingo encounters a situation where there are no more
- errors, it will display a message saying so. Further, it will display
- a portion of the last non-blank line in the error file on the message
- line with the "No more Errors" message, so you can verify that all
- went well.
-
-
- Function List
- ----------------------------------------------------------------------
-
- Setup_err_parse
- ----------------------------------------------------------------------
- This function will prompt you for a file name. Bingo will from then
- on use the named file as the error file. This must be called before
- next_error, prev_error, or last_error are called.
-
- Next_error
- ----------------------------------------------------------------------
- Moves, within the current window, to the next error as found in the
- current error file. If no more errors can be found, Bingo will say
- so, and display the last non-blank line in the error file. Otherwise,
- Bingo will edit the appropriate file into the current window, as well
- as highlighting the line in the error file being referenced.
-
- Prev_error
- ----------------------------------------------------------------------
- Same as error except it moves backward through the error file.
-
- Last_error
- ----------------------------------------------------------------------
- Re-displays the last error message, if there was one.
-
-
- Bingo 3.10 Reference Manual
- 59
-
-
-
-
- Rotate_kill
- ----------------------------------------------------------------------
- Pops up the current kill stack and allows you to arbitrarily move a
- line of text to the top of the stack.
-
- Unkill
- ----------------------------------------------------------------------
- Inserts the top member of the stack at the current position. If the
- top member of the stack was a full line, it is inserted above the
- current line. Removes the top member from the stack.
-
- Paste_kill
- ----------------------------------------------------------------------
- Inserts the top member of the stack at the current position. If the
- top member of the stack was a full line, it is inserted above the
- current line. Leaves the stack itself alone.
-
- Restore_line
- ----------------------------------------------------------------------
- Restores the current line to its former form.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 60
-
-
-
-
- File Handling
- -------------
-
- Bingo has extensive file handling capabilities, more than almost
- any other editor available. Literally, there is little you could want
- to do with a file which Bingo will not let you do.
- A couple of words are in order about the file format. Bingo
- cares not at all if the file you are reading is delimited by carriage-
- return/linefeed pairs or just linefeed characters; Bingo will read
- both with equal aplomb. Similarly, Bingo doesn't object to files
- ending with the EOF character (ASCII 26). On output, the output
- format is governed by the configuration settings accessible through
- the 'conf_eof' and 'conf_lfs' functions.
-
- Function List
- ----------------------------------------------------------------------
-
- Edit_file
- ----------------------------------------------------------------------
- Asks for a file name. If the file is already in the ring, it simply
- switches to it. If it is not in the ring, it loads the file.
-
- Choose_file
- ----------------------------------------------------------------------
- Pops up a list of current files in the ring, and an option for a new
- file. Selecting the New File option performs an 'edit_file' function.
-
- Load_file
- ----------------------------------------------------------------------
- After asking for a file name, it loads that file from disk. If the
- file is already in the ring, the in-memory version is first deleted
- from memory.
-
- Rename_file
- ----------------------------------------------------------------------
- Renames current file. Does not save it to disk automatically.
-
- Switch_file
- ----------------------------------------------------------------------
- Switches to a different file, performing a quit on the current file
- first. If you escape out of the quit option, the switch operation
- will abort.
-
- Save_file
- ----------------------------------------------------------------------
- Saves the current file; does not exit.
-
- Modify_save
- ----------------------------------------------------------------------
- Saves current file ONLY if it has been modified.
-
-
- Bingo 3.10 Reference Manual
- 61
-
-
-
-
- Quit
- ----------------------------------------------------------------------
- Exits current file. If the file was modified, it will ask you if you
- wish to save the file; a <return> indicates yes.
-
- Abort
- ----------------------------------------------------------------------
- Exits the file, no protection, no save.
-
- File
- ----------------------------------------------------------------------
- Saves and exits current file.
-
- Next_file
- ----------------------------------------------------------------------
- Moves to the next file in ring.
-
- Prev_file
- ----------------------------------------------------------------------
- Moves to the previous file in the ring.
-
- Quit_all
- ----------------------------------------------------------------------
- Performs a quit on each file in the ring.
-
- Abort_all
- ----------------------------------------------------------------------
- Aborts all files, no questions asks.
-
- File_all
- ----------------------------------------------------------------------
- Saves and exits all files.
-
- Save_all
- ----------------------------------------------------------------------
- Saves all files.
-
- Modify_save_all
- ----------------------------------------------------------------------
- Saves each modified file in the ring.
-
- Delete_file
- ----------------------------------------------------------------------
- Asks for a file name to delete on disk.
-
- Zap_file
- ----------------------------------------------------------------------
- Deletes the disk copy of the current file.
-
-
-
-
- Bingo 3.10 Reference Manual
- 62
-
-
-
-
- Block_load
- ----------------------------------------------------------------------
- Loads a file from disk into the current position of the file.
-
- Clean_file
- ----------------------------------------------------------------------
- Resets the 'modified' status of the file to FALSE.
-
- Clean_all
- ----------------------------------------------------------------------
- Resets the 'modified' status of all files in the ring to FALSE.
-
- Backup_file
- ----------------------------------------------------------------------
- Forces a backup attempt for the current file; this will only have an
- effect if the file's timed backup setting is on.
-
- Backup_all
- ----------------------------------------------------------------------
- Forces a backup attempt on each file in the ring. For each file, this
- will only have an effect if the file's timed backup setting is on.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 63
-
-
-
-
- Info
- ----
-
- Function List
- ----------------------------------------------------------------------
-
- Help
- ----------------------------------------------------------------------
- The 'help' function attempts to read the file BINGO.HLP located in the
- same directory as BE.EXE. This file can consist of anything you wish,
- and contain up to 1000 lines as you wish (it must fit into memory...).
-
- File_info
- ----------------------------------------------------------------------
- This function simply brings up some useful information about the
- current file.
-
- Sys_info
- ----------------------------------------------------------------------
- This function simply brings up some useful information about Bingo in
- general.
-
- Ascii_table
- ----------------------------------------------------------------------
- This function serves a dual purpose. First, it will pop up a display
- of all 256 characters, serving as a handy reminder of the characters
- available. As you move the cursor over the table, the decimal, octal,
- hexadecimal, and mnemonic values, if appropriate.
- Further, by moving onto a particular character and hitting
- return, you will add this character to the string displayed at the
- top. You can build a string up to about 30 characters in length. The
- <Backspace> key will delete the last character on the string. When
- you press <Escape> to leave, the contents of the string will be
- inserted into the text at the current cursor position.
-
- Version_info
- ----------------------------------------------------------------------
- Displays various version information and the name of the person this
- copy was registered to, if it is a registered copy.
-
- Main_menu
- ----------------------------------------------------------------------
- Invokes the main menu.
-
- Show_recognize
- ----------------------------------------------------------------------
- This function will pop up a display of the currently defined text
- recognition relationships for the current buffer.
-
-
-
-
- Bingo 3.10 Reference Manual
- 64
-
-
-
-
- Macros
- ------
-
- Bingo provides tremendous support for the creation, management,
- and execution of keyboard macros. This level of support was initially
- dictated by my own experiences developing software, and later added to
- by user feedback.
- Bingo retains the status of the last function executed internally
- as a True or False value; you can see this reflected on the far right
- end of the active status line. If, during the execution of a macro a
- function returns a False value, the macro will terminate. Further, if
- applicable, the repeat command will terminate. This allows you to
- execute macros "until function failure" based on things like trying to
- move beyond the beginning of the line.
- Also, you can terminate the execution of a macro by pressing the
- Scroll Lock key and holding it until the macro terminates.
-
- Macro Space
- -----------
- Bingo will dynamically increase its macro space to compensate
- when you add or release memory. Thus, macro space is limited by
- available memory.
-
- Defining Macros
- ---------------
- There are four ways to define macros, all very similar. You can
- define the scrap key to hold a macro, a single key to hold a macro,a
- two key combination to hold a macro, or a three key combination to
- hold a macro. Any of these functions will also end a macro definition
- if one is currently in progress. Macros can be defined across any
- number of activities. Pressing <Escape> at any time as the response
- to a query from Bingo will end the macro presently being recorded.
-
- Ending Macro Definition
- -----------------------
- When you wish to end a macro definition, you can use any of the
- macro functions which would start a macro definition ('onekey_def',
- 'twokey_def', 'threekey_def', 'define_scrap') as well as the
- 'end_macro' function. It is important to have at least one of these
- functions directly assigned to a key; if you use them from the menu,
- you will record the keystrokes leading to them menu as well!
-
- Saving Macros
- -------------
- Using the single key save and load functions, you can save
- favorite macros to named files for later recall. Single saving also
- saves the key sequence the macro is attached to, and loading it in
- again will redefine the key.
-
-
-
-
- Bingo 3.10 Reference Manual
- 65
-
-
-
-
- Saving the Entire Key Set
- -------------------------
- Bingo also allows you to save the entire key table, including all
- key assignments and all macros, for later recall. Recalling a keyset
- file will overwrite the entire key table, so be warned.
- When you save a keyset file, you can name the keyset file, and
- you can have it saved in Bingo's home directory or in an arbitrary
- directory. If you name it Keycfg.set, it becomes the default file
- keyset, depending where you put it. When Bingo starts up, it looks
- first in the current directory, then in its home directory for
- KEYCFG.SET. This allows you to have multiple key configurations in
- different disk locations while still maintaining one executable.
-
- Executing a Macro File
- ----------------------
- You may also execute any macro which was single saved to a file
- at any time. This executes it one, without disturbing the current key
- table assignments. Good for macros used infrequently, but which are
- very useful. I have a whole library of interesting ones saved at this
- point.
-
- Function List
- ----------------------------------------------------------------------
-
- Define_scrap
- ----------------------------------------------------------------------
- Start scrap macro definition.
-
- Onekey_def
- ----------------------------------------------------------------------
- Start single-key macro definition.
-
- Twokey_def
- ----------------------------------------------------------------------
- Start two-key macro definition.
-
- Threekey_def
- ----------------------------------------------------------------------
- Start a three-key macro definition.
-
- Scrap
- ----------------------------------------------------------------------
- Execute the scrap macro.
-
- Single_key_save
- ----------------------------------------------------------------------
- Save a single macro to a file for later recall. Saves the key it is
- attached to also.
-
-
-
-
- Bingo 3.10 Reference Manual
- 66
-
-
-
-
- Single_key_load
- ----------------------------------------------------------------------
- Load a single macro from a file. Overwrites the current definition
- for the key, if it has one.
-
- Key_set_save
- ----------------------------------------------------------------------
- Saves entire keyset, including macros, but not the scrap.
-
- Key_set_load
- ----------------------------------------------------------------------
- Load entire keyset.
-
- Run_macro_file
- ----------------------------------------------------------------------
- Runs a macro from a file saved with single_key_save.
-
- Undefine_key
- ----------------------------------------------------------------------
- Undefines a key.
-
- End_macro
- ----------------------------------------------------------------------
- Ends the recording of a current macro. Mostly useless, but it made
- for a useful menu entry.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 67
-
-
-
-
- Navigation
- ----------
-
- Navigation in Bingo is very straightforward. You may move in
- terms of characters, lines, words, windowfuls, and the entire file.
- You can also jump to the beginning and end of a marked block.
- Finally, you can jump to a specified line, or by a relative number of
- lines, or to a column, or by a relative number of columns, or by both
- lines and columns in the file using the Jump function.
- In addition, Bingo supports placemarks. I had never really used
- placemarks much, or "bookmarks" as they are sometimes called. But a
- buddy of mine told me to try them when in big files, and I was
- impressed. But the editor I tried them in allowed only one; this is
- just not enough. So I went one better. Actually, I went 9 better.
- Bingo provides 10 placemarks. You can drop one or jump to one.
- Each placemark defines a file, a line, and a column. When you try to
- jump to a placemark and the file it pertains to is not in the ring,
- the file will be fetched.
-
- Function List
- ----------------------------------------------------------------------
-
- Down_page
- ----------------------------------------------------------------------
- Moves down one windowful.
-
- Up_page
- ----------------------------------------------------------------------
- Moves up one windowful.
-
- Cursor_right
- ----------------------------------------------------------------------
- Moves right one char; wraps if necessary and if bounce mode is active.
-
- Cursor_left
- ----------------------------------------------------------------------
- Moves left one char, wraps if necessary and if bounce mode is active.
-
- Cursor_up
- ----------------------------------------------------------------------
- Moves up one line.
-
- Cursor_down
- ----------------------------------------------------------------------
- Moves down one line.
-
- Back_tab
- ----------------------------------------------------------------------
- Moves back to the previous tab stop. Does not change the text at all.
-
-
-
- Bingo 3.10 Reference Manual
- 68
-
-
-
-
- Begin_line
- ----------------------------------------------------------------------
- Goes to beginning of line.
-
- End_line
- ----------------------------------------------------------------------
- Goes to end of line.
-
- Top_of_file
- ----------------------------------------------------------------------
- Jump to top of file.
-
- Bot_of_file
- ----------------------------------------------------------------------
- Jump to bottom of file.
-
- Next_word
- ----------------------------------------------------------------------
- Goes to beginning of next word.
-
- Prev_word
- ----------------------------------------------------------------------
- Goes to beginning of previous word.
-
- Top_of_screen
- ----------------------------------------------------------------------
- Jumps to the top of screen.
-
- Bottom_of_screen
- ----------------------------------------------------------------------
- Jumps to the bottom of screen.
-
- Top_of_block
- ----------------------------------------------------------------------
- Jumps to the top of marked block.
-
- Bottom_of_block
- ----------------------------------------------------------------------
- Jumps to the bottom of marked block.
-
- Jump
- ----------------------------------------------------------------------
- Jump to position, column, line or both. The format is:
- [(+/-)row][,(+/-)column]
- If the number is prefaced with a '+' character, Bingo will jump the
- relative distance forward. If the number is prefaced with a '-'
- character, Bingo will jump the relative distance backwards. Otherwise
- the number will be interpreted as an absolute. Either number, or
- neither, may be omitted.
-
-
-
- Bingo 3.10 Reference Manual
- 69
-
-
-
-
- Center_line
- ----------------------------------------------------------------------
- Makes the current line the center line of the current window, and
- repaint the entire screen, all windows.
- Begin_of_text
- ----------------------------------------------------------------------
- Moves the cursor to the first non-space character on the current line.
-
- Indent_up
- ----------------------------------------------------------------------
- Moves to previous line with same indentation scheme as current line.
-
- Indent_down
- ----------------------------------------------------------------------
- Moves to next line with same indentation scheme as current line.
-
- Snap_to_mouse_xy
- ----------------------------------------------------------------------
- Moves the cursor to the current mouse position, changing windows if
- necessary.
-
- Mouse_scroll
- ----------------------------------------------------------------------
- Moves the cursor to the mouse position when the mouse button is
- released; while the button is depressed, the file will scroll up and
- down, depending on where the mouse cursor is moved. The closer the
- cursor is to the top and bottom (and left/right for horizontal
- movement) of the window, the faster the file will scroll.
-
- Place_mark
- ----------------------------------------------------------------------
- This function will pop up a list of the current definitions of the ten
- placemarks. By pressing '0' to '9', you define the selected placemark
- as the current position & file. Each placemark contains the file
- name, the line, the column.
-
- Jump_mark
- ----------------------------------------------------------------------
- This function will pop up a list of the defined placemarks and allow
- you to choose which one '0'-'9' you wish to jump to. If the specified
- file name is not in the ring, Bingo will go and get it.
-
- Scroll_up
- ----------------------------------------------------------------------
- Scroll the display up one line, keeping the cursor in its same place.
-
- Scroll_down
- ----------------------------------------------------------------------
- Scroll the display down one line, keeping the cursor in its same
- place.
-
-
- Bingo 3.10 Reference Manual
- 70
-
-
-
-
- Scroll_left
- ----------------------------------------------------------------------
- Scrolls the screen to left (the text to the right).
-
- Scroll_right
- ----------------------------------------------------------------------
- Scrolls the screen to right (the text to the left).
-
- Last_position
- ----------------------------------------------------------------------
- Returns to the previous cursor position in the current file.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 71
-
-
-
-
- System Operations
- -----------------
-
- Bingo supports a number of system operations. While they are not
- large in number, they are large in utility.
-
- Simple Execution and Shelling
- -----------------------------
- The 'exec_command' function simply executes a given DOS command
- line and returns. It does not do anything fancy, and Bingo will
- remain in memory (consuming quite a bit of memory) but it is fast and
- simple for issuing short commands.
- The 'shell' function is identical to 'exec_command', except it
- takes no arguments. It simply gives you a DOS shell.
-
- Swap Execution and Shelling
- ---------------------------
- More often than not, particularly in the case of executing
- command-line compilers, you simply can't afford to let Bingo hang
- around in memory, since it consumes a bit. So Bingo provides two
- other methods for executing commands. While they appear identical in
- form and function to the previous pair of functions, 'swap_execute'
- and 'swap_shell', are much more interesting.
- While they, too, execute a command or shell to DOS, prior to
- doing so, they save all relevant information such as copies of the
- current files, etc., then swap Bingo out of memory. When this
- happens, a 3k kernel is left behind to manage things until the command
- is finished; then it will reload Bingo. Notice that the method of
- Bingo swapping out is now much different with version 3.00; thanks to
- Ralf Brown's excellent SPAWNO swapping routines.
-
- Function List
- ----------------------------------------------------------------------
-
- Chdir
- ----------------------------------------------------------------------
- Change the currently logged directory.
-
- Exec_command
- ----------------------------------------------------------------------
- Execute a DOS command, while leaving Bingo completely resident in
- memory.
-
- Shell
- ----------------------------------------------------------------------
- Shell to DOS, leaving Bingo completely resident in memory.
-
- Swap_execute
- ----------------------------------------------------------------------
- Execute a DOS command while swapping Bingo out, leaving behind an 3k
- kernel.
-
- Bingo 3.10 Reference Manual
- 72
-
-
-
-
-
- Swap_shell
- ----------------------------------------------------------------------
- Shell to DOS while swapping as above.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 73
-
-
-
-
- Printing
- --------
-
- Prior to version 2.01, there were two functions to print, one for
- the file and one for a marked block. As of version 2.01, these have
- been combined into 'print_file', which prints a block if it is marked,
- otherwise it prints the file.
- There are a number of options governing printing. You can ask
- for line numbers to be printed, page headers (time, page, file name),
- and decide whether Bingo should terminate a line with a single
- linefeed, or with linefeed/carriage return pairs.
- You can also send standalone linefeed or formfeed character, or
- send a sequence of ASCII values.
-
- Function List
- ----------------------------------------------------------------------
-
- Print_file
- ----------------------------------------------------------------------
- Print the current file, or a marked block if there is one, using the
- current printer settings, to the current destination. Whenever Bingo
- encounters a formfeed character, it will assume that is the start of a
- new page, and start the remainder of the line at the left margin.
-
- Send_lf
- ----------------------------------------------------------------------
- Send a line feed character to the destination.
-
- Send_ff
- ----------------------------------------------------------------------
- Send a formfeed character to the destination
-
- Send_sequence
- ----------------------------------------------------------------------
- Send a sequence of character values to the printer; e.g.
- 12,12,12,12,12
- sends a series of 5 ASCII 12's (decimal) to the destination
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 74
-
-
-
-
- Searching
- ---------
-
- There are two search algorithms present in Bingo. One is very
- simple and very fast, and part of it is hand-coded in assembler for a
- bit more speed yet. For 95% of what you want to do, it is just right.
- However, with the advent of version 2.01, a second search
- algorithm was added; a regular-expression method. Regular expressions
- are a mathematical way to describe strings of text, and are very
- powerful. Bingo's algorithm is reliable but not overly speedy; I
- suggest you keep this in mind when using it.
- If you are not familiar with regular expressions, I am not going
- to attempt to explain them to you here. If, however, you have used
- them before, I will explain the notations I used in coding Bingo's
- algorithm.
- To perform a regexp search, use the 'R' modifier on you search
- (or replace). If you use this modifier, the string will be
- interpreted as follows:
-
- - classes, i.e. [0-9] and 'not' classes, i.e. [~0-9]
- - occurrences of once, once or none (?), one or more (+), none
- or more (*)
- - grouping {}
- - ORing of {} groups |
- - wild card character .
- - match begin and end of lines with ^ and $, respectively
- - support for debugging regular expression search
- patterns
- - along with regular expression searches, you can specify the
- replacement in terms of the matched text. '@n' in the
- replacement pattern places the text matching the nth group.
- '@@' matches the entire matched text. This allows you to do
- some nifty text manipulation.
-
- For some simple examples, see below.
-
- It is easy to limit the search area to a specific range by
- marking a range of text in any of Bingo's three modes. Then use the
- 'M' modifier to say you wish to match text only within the Marked
- area.
- The 'C' option in the 'search' function will count the number of
- occurrences of the target string in the rest of the search area.
- The 'G'lobal option for search and replace operations starts from
- the current cursor position, not from the top of the file.
- Try the Search and Macro capability -- it is sharp.
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 75
-
-
-
-
- Regular Expression Search and Replace Examples
- ----------------------------------------------
- Here are some examples of regular example search and replace.
-
- Search for --> [a-z]+/.
- would match any sequence of one or more letters between 'a' and
- 'z' followed by a single period.
-
- Search for --> help[a-z]+/.
- would match a sequence of 'help' followed by one or more letters
- then a single period. It would match 'helpoooooo.' and 'helpp.'
- but not 'help.'
-
- Search for --> 19{87}|{88}
- would match '19' followed by one occurrence of either '87' or
- '88'.
-
- Search for --> 19{87}*|{88}
- would match '19' followed by none or more occurrences of '87' or
- a single occurrence of '88'. Thus it would match '19',
- '1987878787', or '1988'.
-
- Search for --> .
- matches any single character. (Note: /. would match a an actual
- period.)
-
- Search for --> ^[a-z]+
- matches a sequence of 1 or more letters, provided it starts a
- line.
-
- Search for --> ^[a-z]+$
- matches a sequence of 1 or more letters, provided it starts a
- line and ends a line.
-
- Search for --> ^[a-z]+/.[a-z]+
- basically matches file names made up of alpha characters, which
- are found at the beginning of a line.
-
- Search for --> ^$
- matches a blank line.
-
- Search for --> ^.
- matches a non-blank line.
-
- These last two allow you to do some neat stuff using
- the macro capability, i.e., apply a macro to every
- non-blank line.
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 76
-
-
-
-
- Search for --> {[a-z]+}{/.}{[a-z]+}
- Replace with --> @3.@1
- This will match a sequence of one or more letters, followed by a
- period, followed by one or more letters (a file name,
- essentially). The replace will put the text matching the 3rd
- group first, then a period, then the text matching the 1st group.
- On a file name, this will have the effect of reversing the order
- of the name and the extension, i.e:
-
- filename.txt
-
- would become
-
- txt.filename
-
- since 'filename' would match the first group and 'txt' matches
- the third group.
-
-
- Incremental Searching
- ---------------------
- Version 3.10 adds an incremental search facility. This searches
- forward, finding a match as you extend the string. Hitting the <TAB>
- key will cause it to find the next match. Pressing <Backspace> will
- backup one match. Pressing <Return> will end the search and leave
- you at your current position; Pressing <Escape> will return to where
- the search began.
-
- Function List
- ----------------------------------------------------------------------
-
- Again
- ----------------------------------------------------------------------
- Repeat the last search operation. If none has yet been done, works
- just like search. If the last search operation done was a search and
- replace, only the search portion is done.
-
- Search
- ----------------------------------------------------------------------
- Search for text. Will ask for the target text, and then the
- modifiers:
- A Accent
- B Backwards
- C Count
- D Debug
- F search through all Files
- I Ignore case
- M Marked
- R Regexp
- T start at the Top of the workspace
- The 'A' option tells Bingo to highlight the 'found' text until
-
- Bingo 3.10 Reference Manual
- 77
-
-
-
-
- the next keystroke arrives.
- The 'B' modifier will search backwards.
- The 'C' option simply counts the number of occurrences.
- The 'D' option tells Bingo that, if you also specify regular
- expression searching, before searching display Bingo's interpretation
- of your regular expression.
- The 'F' option tells Bingo to treat all the loaded files as the
- search space. This allows Bingo to find the next occurrence, even if
- it is in another file.
- The 'I' option tells Bingo to ignore case when searching.
- The 'M' option tells Bingo to only matched text *completely*
- within marked text.
- The 'R' option tells Bingo to interpret the input string as a
- regular expression. See the section on searching for more details.
- The 'T' option tells Bingo to start at the beginning of the
- search space. If the 'I' option is also used, this is the bottom of
- the file; if not, the top of the file. If the 'F' option is also
- used, it is the last/first file.
-
- Isearch
- ----------------------------------------------------------------------
- Incremental search. Searches for a match to the target string
- interactively, as you type in each character, Bingo searches for a
- match and moves there. Pressing <TAB> finds the next search; pressing
- <Backspace> backs up one match. Pressing <Return> will end the search
- and leave you at your current position; Pressing <Escape> will return
- to where the search began.
-
- Isearch_files
- ----------------------------------------------------------------------
- Works just like Isearch, only it will search across files. If a match
- is not found in the current file, it will look in the next, and so on.
-
- Replace
- ----------------------------------------------------------------------
- Search and replace text. Will ask for target, replacement text, and
- three modifiers:
- B Backwards
- D Debug
- F search across Files
- G Global Search/Replace
- I Ignore Case
- M Marked
- P Preserve
- R Regexp
- T Top of search space
- If Global is selected, Bingo will simply replace all matching
- occurrences with the replacement text. If not, Bingo will stop at
- each match and ask:
- Yes: replace and continue.
- No: don't replace, but continue search.
-
- Bingo 3.10 Reference Manual
- 78
-
-
-
-
- Only: Replace this and stop
- Quit: stop, no replacement.
- Global: Continue with global replacement
-
- 'M', 'R', 'F', 'T' and 'A' options work as in the search case.
- 'P' tells Bingo to preserve the original cursor location and
- return to it when done with the replace operation.
- 'D' is useful for regular expression work. It tells Bingo to
- display its conception of the target string (grouping, classes,
- occurrence, etc).
-
- Search_apply
- ----------------------------------------------------------------------
- Will act like the 'search' function, but will ask for either:
- - a key to apply.
- - a Bingo command line to execute (as if it were used with the
- 'cmd_line' function).
- - a Chess command (as if it were used with the 'exec_chess'
- function).
- when found. It will work like the replace function, but instead of
- replacing, it will execute the given key. DO NOT use this function
- while recording a macro.
-
- Mark_last_found
- ----------------------------------------------------------------------
- His will unmark the file and mark the last found text if you have not
- moved.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 79
-
-
-
-
- Utilities
- ---------
-
- Bingo provides large number of utilities to be used to manipulate
- text. Some of the functions available can:
-
- - change the case of a block
- - strip the high bit from characters in a block
- - place tabs within text, and expand tabs within text
- - shift blocks a certain number of spaces
- - align lines with other lines
- - sort blocks, in ascending or descending order, on a
- particular column
- - fill a vertically marked block with a specific character
- - format a paragraph
- - count the number of words over a span of lines
- - insert the current time and date into the file
- - center text
-
- The big thing with the utilities is: play with them. They allow
- you to do some really useful things to your text,particularly when you
- are reformatting. Particularly, entab/detab/indent_tab are very
- useful when importing files from other systems/editors. You can take
- a file with hard tabs in it which assumed a tab size of 8 characters,
- detab it, change the tab size to 3, entab it, and save it ready for
- another editor which demands hard tabs with a tab size of 3.
-
- Function List
- ----------------------------------------------------------------------
-
- Entab
- ----------------------------------------------------------------------
- Compresses the line marked region specified or the entire file by
- converting spaces to tabs.
-
- Indent_tab
- ----------------------------------------------------------------------
- Compresses the leading spaces of the line mark region specified or the
- entire file by converting into the proper tabs. Rounds to the nearest
- tab stop, thus "normalizing" the indention to tab stops.
-
- Detab
- ----------------------------------------------------------------------
- Expands the line marked region specified or the entire file by
- converting tabs to spaces.
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 80
-
-
-
-
- Shift_block
- ----------------------------------------------------------------------
- Shifts the specified line marked region the number of columns
- specified. Positive numbers indicate right-shifting, negative
- numbers, left-shifting. The character 't' is used to signify tab
- widths '-3t' shifts the block left 3 tab widths.
-
-
- Lcase_block
- ----------------------------------------------------------------------
- Lower cases the marked region.
-
- Ucase_block
- ----------------------------------------------------------------------
- Upper cases the marked region.
-
- Fcase_block
- ----------------------------------------------------------------------
- Flips the case of the marked region.
-
- Word_count
- ----------------------------------------------------------------------
- Counts the words in the line marked region, default the whole file. A
- word here is defined as non-whitespace and non-punctuation characters,
- NOT by the settings of the 'conf_word' function.
-
- Strip_highbit
- ----------------------------------------------------------------------
- Strips the 8th bit in the line marked region, default the whole file.
-
- Sort_block
- ----------------------------------------------------------------------
- Sorts block, ascending or descending, on a given column.
-
- Reform_para
- ----------------------------------------------------------------------
- Reformats a block of text to conform to the right margin; a paragraph
- is defined as text between blank lines. The total amount of text
- contained in a single paragraph cannot be larger than 30000
- characters. The indention of the first line (the current line) is
- always preserved. If Autoindent mode is turned on, the indention of
- the first line will be preserved for each succeeding line.
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 81
-
-
-
-
- Repeat
- ----------------------------------------------------------------------
- Repeats:
- - a key to apply.
- - a Bingo command line to execute (as if it were used with the
- 'cmd_line' function).
- - a Chess command (as if it were used with the 'exec_chess'
- function).
- N times. If N is '*', the function repeats until a search fails. The
- function halts repetition on a search failure. DO NOT use this
- command while you are recording a macro; you will get unpredictable
- results when you replay the macro.
-
- Dup_line
- ----------------------------------------------------------------------
- Duplicates the current line and increments cursor to the next line.
-
- Align
- ----------------------------------------------------------------------
- Slides the line marked region left or right to match indentation with
- the line immediately above the first marked line. If no lines are
- marked, the current line is aligned.
- Match_delim
- ----------------------------------------------------------------------
- Finds the proper match for a delimiter. Delimiters are configurable
- by the 'conf_delims' functions.
-
- Time_stamp
- ----------------------------------------------------------------------
- Inserts the current date and time into the text.
-
- Fill_block
- ----------------------------------------------------------------------
- Fills a vertically marked block with a specified character.
-
- Center_text
- ----------------------------------------------------------------------
- Centers the current non-space text of the current line (or line marked
- block) on its line, relative to the right margin.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 82
-
-
-
-
- Windows
- -------
-
- Window_vertical
- ---------------
- Bingo provides the ability to split windows vertically. There
- are some restrictions, however. Vertical windows must always exist in
- pairs; that is, two windows sharing one status line. They are also
- even resized together. This is not a large problem, but you should be
- aware of it.
-
- Window_one and Window_zoom
- --------------------------
- While window_one and window_zoom superficially perform the same
- action, remember that zoom is simply a toggle, while the 'window_one'
- function eliminates all windows except the current, growing the
- current window to full size.
-
- Window_max
- ----------
- This is a new function which is very useful -- it resizes the
- current window to its maximum dimension by resizing all of the other
- windows down to their *smallest* dimensions. Very useful.
-
- Function List
- ----------------------------------------------------------------------
-
- Window_edit
- ----------------------------------------------------------------------
- This function ask for a file name, then splits the window and
- essentially performs and edit_file function for the requested file
- name.
-
- Window_load
- ----------------------------------------------------------------------
- Works like window_edit, except it forces a reload of the named file.
-
- Window_split
- ----------------------------------------------------------------------
- This simply splits the current window in two and uses the current file
- for both.
-
- Window_vertical
- ----------------------------------------------------------------------
- Splits the current window vertically. Windows can only be split so
- once.
-
- Window_close
- ----------------------------------------------------------------------
- Closes the current window and expands the above window to use its
- space.
-
- Bingo 3.10 Reference Manual
- 83
-
-
-
-
-
- Window_zoom
- ----------------------------------------------------------------------
- Toggles the display between zoomed mode. When the display is zoomed,
- the current window takes up the entire display, but Bingo 'remembers'
- the rest of the windows and will restore them when zoom mode is
- toggled again.
-
- Window_one
- ----------------------------------------------------------------------
- This function makes the current window the only window, wiping out all
- other windows.
-
- Window_next
- ----------------------------------------------------------------------
- This moves to the next window down, or wraps to the top window if
- necessary.
-
- Window_previous
- ----------------------------------------------------------------------
- This moves to the next window up, or wraps to the bottom if necessary.
-
- Window_top
- ----------------------------------------------------------------------
- Jumps to the top-most, left-most window.
-
- Window_bottom
- ----------------------------------------------------------------------
- Jumps to the bottom-most, right-most window.
-
- Window_resize
- ----------------------------------------------------------------------
- This allows you to resize the current window (and its left or right
- sibling, if it exists) and the window below (and *its* left or right
- sibling, if it exists) by 'rubberbanding' the current status line up
- and down, and left and right. Note that resizing left and right is
- new for version 3.10.
-
- Window_max
- ----------------------------------------------------------------------
- Resizes the current window to its maximum dimension by shrinking all
- of the other windows to their smallest dimensions.
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 84
-
-
-
-
- Extra Functions
- ---------------
-
- Pick and Exec
- -------------
- This function asks for a function descriptor to execute. The
- same function descriptors are used as are used by KEYCFG. If you give
- it an unrecognized descriptor, a list of all supported functions are
- popped up for your convenience. If you give it substring, such as
- 'win', all functions descriptors which contain 'win' anywhere will be
- shown; in this case the window functions. Tie this to an easy-to-
- remember key and all of Bingo's functions are at your fingertips.
- This is also useful when you are trying to remember a particular
- function descriptor and you don't have the documentation handy.
-
- Repeat_last
- -----------
- This is a handy function. It will execute the most-recently-
- executed function again. It won't change what that most-recently-
- executed function was.
-
- Box Draw Mode
- -------------
- This is an enormously useful capability. When the
- 'toggle_box_draw' function is executed, you will be asked whether you
- wish to use:
- a) erasure mode
- b) single line drawing
- c) double line drawing
- d) any arbitrary character drawing
- After you make your choice, the 4 cursor movement functions will
- respond differently. When you move the cursor up via the 'cursor_up'
- function, the cursor will move up, but it will trail a line (of the
- appropriate drawing type) behind. Corners and intersections will be
- handled automatically. The line characters will be placed into the
- text as if Bingo was in overwrite mode.
- As of version 3.10, the AnyChar mode has been added, which will
- allow you draw with any character from the ASCII table.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 85
-
-
-
-
- Cmd_line
- --------
- This function gives you a command line entry space on the status
- line. You may enter any valid Bingo function. You only need to enter
- enough of the function to make it unique; for example, 'swap_ex' is
- enough to get you the swap_execute function.
- Further, you can pass parameters to the function you enter
- directly on the command line, using the following notation:
-
- ~<string>~ loads the string as an argument and follows it
- with a carriage return.
- '<string>' loads the string as an argument, but does NOT
- follow it with a carriage return. If this
- argument is intended to be used in a string-entry
- box, Bingo will NOT wait for further input.
- `<string>` loads the string as and argument, and then waits
- for user input until a carriage return is entered
- before proceeding.
-
- For example:
-
- search ~hello~ ~~ : search for the string 'hello' with the
- default search modifiers.
-
- search 'hello' ~~ : \
- search ~hello~ : - these are the same; both search for
- the string 'hello' but leave you at the
- modifier prompt.
-
- search `hello` ~i~ : searches for the string 'hello', but
- waits for user input after entering
- 'hello'. After the user enters a
- carriage return, Bingo continues and
- performs the search using the 'i' ignore
- case option.
-
- Another example:
- conf_autoindent ~~ : toggles the current autoindent setting
- conf_autoindent 'y' : turns the autoindent setting on
-
- Further, if you need to use any of '`~ in a command line, preface them
- with a forward slash (/). If you need to use a forward slash, use
- two. For example:
-
- search ~search for tilde(/~)~ ~~
-
- would search for the string "search for tilde(~)" using the default
- search modifiers.
- This new command-line notation may seem a bit cryptic at first,
- but it is far more flexible than the prior method. It allows you to
- execute virtually any Bingo command from the command-line with any
-
- Bingo 3.10 Reference Manual
- 86
-
-
-
-
- arguments.
-
- Text Recognition
- ----------------
-
- Version 3.10 introduces a powerful text recognition system. Text
- recognition is the ability for Bingo to "watch" what the user types
- and take a specified action when a certain character sequence is
- observed. In the case of Bingo, you can specify that when a certain
- string is seen, a certain CHESS function is called. Since that Chess
- function can be the 'run' command, the CHESS statement can actually
- run a CHESS program file.
-
- You define text recognition relationships in profile files (see
- the section on profile files for more information on other uses of
- profile files) using lines of the form:
-
- &recog=<text to recognize>!<chess function to execute>
-
- For example, in the profile file for .TST file (PROFILE.TST), you
- might lose the line:
-
- &recall=hello!do_hello_func()
-
- would cause upon activation the CHESS function 'do_hello_func' to be
- called.
-
- The <text to recognize> IS case sensitive. If you need to use an
- exclamation point in the <text to recognize>, preface it wit a forward
- slash '/'. If you need to use a '/' in the text, use two (2) forward
- slashes.
-
- Now, we have discussed how to *define* text recognition. There
- are several functions available to let you deal with text recognition.
- First, 'show_recognition' will pop up a window showing the current
- text recognition definitions for the current buffer.
-
- The 'conf_recognize' function is very important. It allows you
- to choose what type of recognition is active. You can choose between
- two types. The first type of recognition is 'Automatic'. In this
- mode, as long as there is at least one text recognition relationship
- defined Bingo will *always* watch the keyboard input stream looking
- for a match. This is often not the ideal solution.
-
- The second type of recognition is 'On-Demand'. In this mode,
- Bingo normally does not watch the input stream. Only when another
- function 'one_recognize' is executed, does Bingo begin to watch the
- input stream. Bingo will continue to watch the input stream until it
- sees a match, and then it will revert to not watching. This allows
- you the ability to have a stored bank of definitions you can activate
- with the touch of a keystroke.
-
- Bingo 3.10 Reference Manual
- 87
-
-
-
-
-
- Function List
- ----------------------------------------------------------------------
-
- Pick_exec
- ----------------------------------------------------------------------
- This allows you to pick a function descriptor and have it executed.
-
- Global
- ----------------------------------------------------------------------
- This allows you to execute any
- - a key to apply.
- - a Bingo command line to execute (as if it were used with the
- 'cmd_line' function).
- - a Chess command (as if it were used with the 'exec_chess'
- function).
- globally, throughout all the files in the ring. When invoked, it asks
- for a keystroke to execute globally. The keystroke can invoke a
- macro, or simple be tied to a function. For each file in the ring,
- Bingo will ask if you wish the function to be executed; your options
- are the same as they are when doing a search and replace operation:
- Y Yes, do operation, go to next file
- N No, don't do operation, but do go to next file
- O Yes, do the operation, but abort the global operation
- afterwards.
- G Yes, do the operation, and do it for all remaining
- files without asking.
- Q Abort the global operation right now.
-
- Query_quote
- ----------------------------------------------------------------------
- Inserts an integer or sequence of integers as its raw ASCII character.
- The decimal values must be comma delimited. This function does NOT
- change the cursor position.
-
- Toggle_display
- ----------------------------------------------------------------------
- Toggles the display size between 25 lines and 43/50 lines. Will in
- all likelihood screw up the cursor shape, since the scan line counts
- will change.
-
- Load_profile
- ----------------------------------------------------------------------
- Loads the profile file of your choice, searching first the current
- directory then Bingo's home directory.
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 88
-
-
-
-
- Write_profile
- ----------------------------------------------------------------------
- Saves the text settings of the active buffer to the profile file of
- your choice in either the current directory or Bingo's home directory.
- The settings you can use include the ones from the .INI listing (see
- the section on BINGO.INI) as well as the text recognition keyword (see
- the section on text recognition) and one additional one:
- &run=<chess_fname>
- See the Chess documentation for more information on the &run keyword.
-
- Repeat_last
- ----------------------------------------------------------------------
- Repeats the last function executed.
-
- Display_file
- ----------------------------------------------------------------------
- Will pop up the named file into a scrollable box, similar to the help
- file.
-
- Exec_chess
- ----------------------------------------------------------------------
- This function will execute a single line of Chess code, typically a
- function or a function with its arguments.
-
- One_recognize
- ----------------------------------------------------------------------
- This function tells Bingo's text recognition system (when it is in On-
- Demand mode) to watch for the next match and then go back to On-Demand
- mode.
-
- View_screen
- ----------------------------------------------------------------------
- Allows you to view the DOS screen which was active when you prior to
- starting Bingo. This is only available if you have this option turned
- on via the 'conf_scr_save' function.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 89
-
-
-
-
- Chess: Bingo's Extension Language
- ---------------------------------
-
- Introduction
- ------------
- This section serves as the reference text for the Chess
- procedural language used by Bingo. Chess is a simple yet powerful
- language with much in common with the C programming language. While
- Bingo has been around for a number of years, as it grew more and more
- powerful I began to see that a procedural language would be necessary
- for users to fully unlock the power of Bingo. And so, in November of
- 1991 I began looking into interpreter and compiler theory.
- Adding a procedural language to an application is not a trivial
- undertaking. There are a number of issues which all conflict with
- each other: the addition couldn't bloat Bingo beyond measure; the
- language couldn't be too trivial to be useful; Bingo had to work as
- easily with it as without it.
- It was immediately clear that implementing an interpreter was far
- easier than a compiler. However, interpreted code is usually far
- slower than compiled code. But when I reflected on this, it occurred
- to me that most of a subprogram would be calls to Bingo functions,
- which would operate very quickly indeed. So an interpreter was indeed
- feasible for what I had in mind.
- Modeling the interpreter after the C programming language was
- also appealing, not just because I am most comfortable programming in
- C. I was able to locate several texts which used C as a teaching
- interpreter. This made the learning much easier.
- By April of 1992, I had a working standalone interpreter,
- designed so it would graft easily onto another application, and I had
- learned a whole lot about lexical analysis and interpreter theory.
- Now all I had to do was graft this onto Bingo! After a lot of design
- work, I started implementing it, and within a month it was reasonably
- complete. The time since has been spent refining the interpreter,
- judiciously adding to the system function library, and testing,
- testing, testing!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 90
-
-
-
-
- Things to Possibly Come
- -----------------------
- Obviously, given the design of Chess, adding more library
- functions is in the future. Chess's capabilities have to be kept in
- step with Bingo's own growth. However, it is paramount that Chess
- stay relatively small. The code for Chess added less than 20k in
- total to Bingo's executable and I don't want that to grow unchecked.
- This release of Chess is fully functionally, but the code is
- currently tuned for functionality, not for speed. Future versions of
- Chess will be much more optimized for execution speed.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 91
-
-
-
-
- The Body of a Chess Program
- ---------------------------
- A Chess program consists of the following format:
-
- <type> <global_varname1>
- ...
- <type> <global_varnameN>
- {
- <type> <local_varname1>
- ...
- <type> <local_varnameN>
- <statement1>
- ...
- <statementN>
- }
- <function_name1>
- <argtype> <arg1>
- ...
- <argtype> <argN>
- {
- }
- ...
- <function_nameN>
- {
- <argtype> <arg1>
- ...
- <argtype> <argN>
- {
- }
-
- The variables declared as <global_varname> are known as global
- variables, while the variables declared as <local_varname> are local
- variables. Now we will take a look at what comprises these variables
- and statements.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 92
-
-
-
-
- Variables and Constants and Comments
- ------------------------------------
- Like most procedural languages, Chess programs are composed of
- three basic building blocks, Variables, Constants, and Comments.
- Variables are locations which hold information. You can
- visualize them as shoeboxes with names. Each of these locations can
- hold one of two basic types of information, integers (whole numbers)
- or characters (like the letter 'a'). Additionally, Chess uses
- 'arrays' of variables (groups of 1 or more basic objects) and
- 'pointers' to basic objects. Arrays and pointers will be discussed in
- the next section. Variables which haven't had a value assigned to
- them always start out loaded with zeros.
-
- Integers and Characters:
-
- Integer Chess variables are defined like this:
- int int_var;
- This defines the variable 'int_var' as a Chess integer. Chess integer
- variables are represented internally as 4-byte values able to hold
- whole-number values in the range of -2147483648 to +2147483647.
- Character Chess variables are defined like this:
- char c_var;
- This defines the variables 'c_var' as a character variable. Chess
- character variables are 1-byte values, and the values they can hold
- equate to the IBM Extended ASCII character set (see Bingo's ASCII
- Chart for a complete listing). These letters have integer
- representation as well, for instance, the character 'A' has s decimal
- representation of 65.
- Variable names can be comprised of letters [a-zA-Z], digits [0-
- 9], and the underscore character, and they are case sensitive. The
- first 7 characters are significant. You can define multiple variables
- on the same line:
- int int_var1,int_var2;
-
- Constants:
-
- Constants are numeric, character and string literal values.
- Numeric constants consist of an optional negative sign [-] and one or
- more digits[0-9]. For example:
- 123 12345 -90 -987654321
- are all integer constants.
- Character constants consist of a single character, (such as A),
- between single quotes ('). For example:
- 'A' 'a' '1' 'p'
- are all character constants.
- String constants are the third type of constant Chess supports.
- String constants consist of a string of characters enclosed between
- double quotes. For example:
- "Hello!" "Hi" "12,345 bottles of Beer"
- are all string constants.
-
-
- Bingo 3.10 Reference Manual
- 93
-
-
-
-
- Comments:
-
- Comments are also very important in Chess; they are strings of
- text in a program which are there for we humans to read, and for Chess
- to ignore. Comments help the programmer document what he is doing in
- the program. Comments begin with the two-letter sequence '/*' and
- extend until the end of the current line. For example:
- int i; /* define i as an integer
- The sequence '/* define i as an integer' is a comment.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 94
-
-
-
-
- Arrays and Pointers
- -------------------
- Using the two basic building block data types, integer and
- character, you can derive two other types of variables. Arrays are
- "lists" of like types, and Pointer variables are variables which hold
- the address or location of other variables.
-
- Arrays:
-
- To define a character array, use the following:
- char var_name[10];
- What does this mean? This means, define a variable named 'var_name'
- as a list of 10 character blocks. In Chess, you will deal with
- 'strings' as a data type; a 'string' is a pointer to an array of
- characters containing a sequence of characters followed by a zero
- byte. Hence the term "zero terminated" string.
- Similarly, an integer array would look like this:
- int int_name[20];
- This would define 'int_name' as a list of 20 integer blocks.
- So what does this mean? Well, with arrays, you can access each
- element individually. For example:
- int i[20];
- i[0]=1;
- i[19]=2;
- This code fragment shows that you can access each individual element.
- Note that when you define an array N elements long, the elements are
- numbered 0 to (N-1).
-
- Pointers:
-
- A *pointer* variable is a variable which holds the address of
- another variable. For example, in the declaration:
- int i[20];
- i[5], i[6], and i[8] are all Integer variables; however, 'i' all by
- itself is a pointer to the integer array, called an Integer Pointer.
- Similarly, in the declaration:
- char hello[20];
- hello[0], hello[5], and hello[9] are all Character variables. 'hello'
- all by itself is a Character Pointer; a variable which holds the
- address of a character array.
- What do you need pointers for? Well, primarily you use them to
- pass arguments back and forth to user and library functions. You will
- see a lot of this in the sections on functions, but here are some
- examples:
- {
- char temp[80]; a)
- strcpy(temp,"Hello!"); b)
- }
- This program does 2 things. First, a) declares an array of characters
- 80 characters long. Then, b) calls the library function 'strcpy'.
- 'strcpy' is used to copy the contents of one string into another.
-
- Bingo 3.10 Reference Manual
- 95
-
-
-
-
- Strings in Chess are similar to those in C, as they are character
- arrays terminated by a character with a value of zero (0). So, strcpy
- will fill in the contents of the array 'temp' with the string
- "Hello!". After this function call, temp will look like this:
- temp[0]='H'
- temp[1]='e'
- temp[2]='l'
- temp[3]='l'
- temp[4]='o'
- temp[5]='!'
- temp[6]=0
-
- You can do arithmetic on pointers, similar to C, with on caveat.
- Look at this example:
- {
- char temp[80]; a)
- strcpy(temp,"Hello!"); b)
- msg("%s",temp); c)
- temp=temp+1; d)
- msg("%s",temp); e)
- }
- Here we loaded 'temp' with the string "Hello!", just as before, then
- we did c), using the library function 'msg' to display the contents of
- 'temp, the string "hello!". Then d) increments temp by one byte. Now
- when we execute e), temp points one byte further along than it did,
- and 'msg' will print out "ello!". Now, temp[0] is 'e', not 'h'.
- Similarly, you can increment integer pointers, but there is
- something to remember. Look at this example:
- {
- int temp[80]; a)
- temp[0]=1; b)
- temp[1]=2; c)
- msg("%ld",temp[0]); d)
- temp=temp+4; e)
- msg("%ld",temp[0]); f)
- }
-
- In this code fragment, a) declares am array of integers. In b) and c)
- we set the first and second members of the arrays to 1 and 2
- respectively. d) using the 'msg' function to print the value of
- temp[0], which is 1. e) increments temp by *4* bytes -- this is very
- necessary as each integer is 4 bytes wide. Now when we print out
- temp[0], we get 2, as temp points to a different place.
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 96
-
-
-
-
- Sometimes you will wish to declare a pointer without declaring
- any storage to go along with it. You can do this in the following
- way:
- {
- char temp[80]; a)
- char p[0]; b)
- strcpy(temp,"Hello"); c)
- p=temp; d)
- msg("%s",p); e)
- }
- Here, a) declares a character array with space for 80 characters. b)
- declares a character array with *no* members; this declares 'p' to be
- a pointer to a character buffer. c) copies the string "Hello" into
- 'temp'. d) assigns 'p' to point at 'temp'. Finally, e) prints the
- character buffer pointed to by 'p', the string "Hello".
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 97
-
-
-
-
- Operators and Expressions
- -------------------------
-
- Operators
- Operators are used to do mathematical operations, such as
- subtraction and division. There are sixteen operators recognized by
- Chess. Assuming 'a' and 'b' are declared as integers, they are:
-
- Operator/Precedence Description
- ------------------- -----------
- unary + (1) When used all by itself before a number
- (or variable), denotes the number as a
- positive. It is for readability
- purposes.
-
- unary - (1) Used to show a number (or variable) is
- negative. For example: -a to use the
- negative of 'a'.
-
- * (2) Multiplication. For example: a*b
- multiples a times b.
-
- / (2) Division. For example: a/b divides a
- by b. Fractions are discarded, so 5/3
- is one; 4/3 is also one.
-
- % (2) Modulo or remainder operator. a%b
- calculates the remainder of a when
- divided by b. So 7%3 is 1, and 8%3 is
- 2.
-
- + (3) Addition. a+b adds a and b together.
-
- - (3) Subtraction. a-b subtracts b from a.
-
- < (4) Less than comparison. a<b will evaluate
- to 1 if a is less than b, 0 if not.
-
- > (4) Greater than comparison. a>b will
- evaluate to 1 if a is greater than b, 0
- if it is not.
-
- <= (4) Less than or equal comparison. a<=b
- will evaluate to 1 if a is less than or
- equal to b, 0 if not.
-
- >= (4) Greater than or equal comparison. a>=b
- will evaluate to 1 if a is greater than
- or equal to b, 0 if not.
-
-
-
- Bingo 3.10 Reference Manual
- 98
-
-
-
-
- == (4) Equal comparison. a==b evaluates to 1
- if a is equal to b, 0 if not.
-
- != (4) Not equal comparison. a!=b will
- evaluate to 1 if a is not equal to b, 0
- if it is.
-
- && (4) Boolean AND operator. a&&b evaluates to
- 1 if both a and b are nonzero, 0 if
- either or both are 0.
-
- || (4) Boolean OR operator. a||b evaluates to
- 1 if either a or b, or both, are
- nonzero. If both are zero, evaluates to
- zero.
-
- = (5) Assignment. a=b sets a to be the value
- of b.
-
- The precedence value shows the order in which the operators are
- processed. For example:
- 7*3+5
- would evaluate the 7*3 first, since '*' has a precedence higher than
- '+', then the 21+5 would be evaluated, giving 26.
- Parenthesis can be used to change the order of operations. For
- example:
- (7*3)+5 evaluates to 26 while
- 7*(3+5) evaluates to 56.
-
- Expressions
-
- Expressions are comprised of operators, parenthesis, and values.
- Operators and parenthesis were discussed above. Values are made up
- several different things:
- Constants Variables Functions
- Constants were discussed previously, as were variables. Functions,
- both user and library, always return a value and work like special
- variables. For example:
- int i;
- i=(7+8)*happy(1)+hello(2);
- where 'happy' and 'hello' are function names.
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 99
-
-
-
-
- Program Statements
- ------------------
-
- While Chess is very similar to the C programming language, there
- are only 5 real statements:
- if if-else
- while return
- break
- In addition, a valid expression is a valid statement.
- Chess statements must be one to a line of text; you cannot have a
- statement (and this includes an expression) span more than one line.
- Each statement may be followed on its line by a comment. Each
- statement may be followed by a semicolon (;).
-
- IF
- The 'if' statement is used to make simple decisions. Its syntax
- is:
- if (expression)
- <statement>
- If the 'expression' evaluates to a nonzero value, the <statement> will
- be executed. If 'expression' evaluates to zero, <statement> will be
- skipped. So:
- int i,j;
- i=5;
- j=0;
- if(i<5)
- j=10;
- Here, 'j' will be left the value '0', because the comparison 'i<5'
- will evaluate to zero.
-
- IF-ELSE
- The 'if-else' statement is also used to make simple decisions.
- Its syntax is:
- if (expression)
- <statement1>
- else
- <statement2>
- If the 'expression' evaluates to a nonzero value, <statement1> will be
- executed. If 'expression' evaluates to zero, <statement2> will be
- executed. So:
- int i,j;
- i=5;
- j=0;
- if(i<5)
- j=10;
- else
- j=5;
- Here, 'j' will be left the value '5', because the comparison 'i<5'
- will evaluate to zero.
-
-
-
- Bingo 3.10 Reference Manual
- 100
-
-
-
-
- WHILE
- The 'while' statement is used to repeat the execution of a
- statement, testing at the beginning of each iteration. The syntax is:
- while (expression)
- <statement>
- Here, for as long as 'expression' evaluates to a nonzero value,
- statement will be executed. Before each <statement> is executed,
- 'expression' will be re-evaluated. So:
- int i;
- i=0;
- while(i<10)
- i=i+1;
- Here the statement 'i=i+1' will be executed 10 times, and 'i' will be
- left with the value '10';
-
- DO ... WHILE
- The 'do ...while' statement is used to repeat the execution of a
- statement, testing at the end of each iteration. The syntax is:
- do
- <statement>
- while (expression)
- Here, for as long as 'expression' evaluates to a nonzero value,
- statement will be executed. After each <statement> is executed,
- 'expression' will be re-evaluated. So:
- int i;
- i=0;
- do
- i=i+1;
- while(i<10)
- Here the statement 'i=i+1' will be executed 10 times, and 'i' will be
- left with the value '10';
-
- RETURN
- The 'return' statement is used to interrupt control flow at the
- current level and return a value. It is primarily used to terminate
- the execution of a function. For example:
- square (n)
- int n;
- {
- return( n * n );
- }
- This function will takes a single integer as an argument, and returns
- its square.
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 101
-
-
-
-
- BREAK
- The break statement interrupts the execution of the currently
- looping WHILE statement. It can only be used within a WHILE loop.
- For example:
-
- int i,j;
- i=0;
- while(1)
- if(i==10)
- break;
- else
- i=i+1;
- j=0;
- This will loop until 'i' is equal to 10, then 'break' out of the loop
- and assign zero to 'j'.
-
- Compound Statements
- In the above definitions, several statements operate on other
- statements. In addition to using a single statement for <statement>,
- you can use multiple statements as a single statement via the '{}'
- operators. For example:
- int i;
- i=0;
- while(1){
- if(i==10)
- break;
- i=i+1;
- }
- Here the sequence: { if(i==10) break; i=i+1; } is treated as a single
- statement. This allows you to create complex code using the above
- simple statements.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 102
-
-
-
-
- User Functions
- --------------
- Functions are very powerful constructs used to encapsulate common
- chunks of functionality. Function always return a value; if they do
- not explicitly return a value, they will return zero. They can be
- used anywhere in an expression, except to the left of an assignment
- operator. *User* functions are function which you, the user, write
- for your own benefit.
-
- An Example Chess Program:
- int i,j;
- square
- int n;
- {
- return(n*n);
- }
- {
- i=1;
- while (i<10)
- {
- j=square(i);
- msg("%ld*%ld = %ld",i,i,j);
- }
- }
-
- Declaration
- The declaration of a function is as follows:
- <fname>
- <argtype> arg1;
- ...
- <argtype> argN;
- {
- <statement1>
- ...
- <statementN>
- }
- A function may have zero or more arguments declared. If there are no
- arguments passed to it, the parentheses are not necessary. If you
- look at the example above, you will note several things. First of
- all, to *call* the function, you use the syntax:
- <function_name> ( arg1 .. argN )
- the user function 'square' is called in the above example as:
- j=square(i);
- This calls the function 'square', passing the argument value of 'i'
- into 'square'. This value maps to 'square's first argument, 'n',
- which is multiplied by itself and the returned, placed into 'j'.
- The number of arguments *passed* into a function must equal the
- number of arguments *declared* for the function. For example, you
- could not use:
- j=square(10,3);
- as this tries to use 2 arguments for the function square, which is
-
- Bingo 3.10 Reference Manual
- 103
-
-
-
-
- declared to use only one.
- Arguments are passed into functions by passing their value.
- Therefore, a function cannot change the value of an argument. For
- instance, in our example above, 'i' is not changed by the use of 'n*n'
- in the function. If we had a function:
- foo
- int n;
- {
- n=10;
- }
- and we called it using:
- i=5;
- foo(i);
- 'i' would still have a value of 5, since changes to 'n' within the
- function 'foo' don't affect the argument 'i'.
- So how do you have a function change a variable? To do this, you
- must pass a *pointer* to the variable you wish to change. For
- example:
- foo
- int n[0]
- {
- n[0]=10;
- }
- and we called it using:
- int i[1];
- i[0]=4;
- foo(i);
- Now 'i[0]' will have the value '10'. Here what was passed to 'foo'
- was not the value of 'i[0]', but rather the address of the integer
- array variable 'i'.
- You can do the same thing for strings. Consider:
- foo
- char s[0];
- {
- strcpy(s,"Hello");
- }
- and
- char temp[80];
- foo(temp);
- Here the call to 'foo' passes in the pointer 'temp' to the argument
- 's'. Then 'foo' uses the system function 'strcpy' to copy in the
- string "Hello" to the address 's'. Since 's' maps to 'temp', the
- string "Hello" is actually copied into the array 'temp'.
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 104
-
-
-
-
- Variable Scope
- There is one important concern to keep in mind when using
- functions, and that is "variable scope". To illustrate this, look at
- this program:
- int i;
- hello
- int n;
- { /* function hello
- i=i+n;
- }
- { /* main program
- int i;
- i=0;
- while(i<10){
- hello(i);
- i=i+1;
- }
- }
- Here you will notice the variable 'i' is declared twice, once as a
- global value and once as a local value within the main program. So
- how does Chess know which one to use? That is where variable scope
- comes into play.
-
- The Rules of Scoping
- 1) If the reference is within the main program and the variable
- is declared within the main program, that declaration is used.
- 2) If the reference is within the main program and the variable
- is *not* declared within the main program, the global declaration
- is used.
- 3) If the reference is within a function and the variable is
- declared within the function, that declaration is used.
- 4) If the reference is within a function and the variable is
- *not* declared within the function, the global declaration is
- used.
-
- So how do these rules apply above? There are two declarations of the
- variable 'i'. When 'i' is referenced within the main program, the
- main program declaration should be used. These variable 'i' is
- separate from the global declaration of 'i' on the first line. Now
- when 'i' is referenced within the function 'hello', there is now local
- declaration within 'hello', so therefore the global declaration of 'i'
- on the first line is used.
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 105
-
-
-
-
- Library Functions
- -----------------
- Library functions are functions which are predefined for you by
- Chess. There are many, and they can perform a variety of tasks. See
- the "Library Function Reference" section for details. Library
- functions can be used just like user functions. If a user function or
- variable is defined with the same name as a library function, the user
- function or variable will be ignored.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 106
-
-
-
-
- Using Chess From Within Bingo
- -----------------------------
-
- Bingo is a powerful text editing engine and Chess is a very
- capable procedural language. How do you use the two in concert to
- meet your editing needs?
-
- - how to run a chess program
- - how to embed chess calls in macros in keycfg
- - how to tie programs to keys
- - show all the power of the 'run' command
-
-
- Chess Code in a *.CFG File
- --------------------------
- The first place Chess program code can exists is in your .CFG
- file, which KEYCFG turns into a .SET file. This is where you place
- the Chess functions you wish to be able to execute within a Bingo
- editing section. The way this is done is by enclosing a full chess
- program, or just a collection of Chess subfunctions in your .CFG file.
- The code itself is placed between the two lines:
- chess-begin
- and
- chess-end
- each on a line alone. For example:
-
- <normal Keycfg key assignments...>
- chess-start
- char temp[80];
- { /* main program
- msg("Bingo has started up!");
- getkey();
- }
- /* this function will run the current file as subprogram.
- run_current
- {
- char temp[80],name[20]; /* declare working variables
- int i;
-
- bingo("modify_save"); /* save current file if dirty
- i=ask("file_path",temp) /* get the file's path
- ask("file_name",name) /* get the file's name
- strcpy(temp+i,name); /* add the name to the path
- return(run(temp)); /* run the file and return
- }
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 107
-
-
-
-
- show_count /* function to count off
- int n; /* one parameter
- { /* start function
- int i; /* declare an int
- i=1; /* start at 1
- while (i<=n){ /* until n...
- msg("Now at %ld!",i); /* show the value
- getkey(); /* wait for a keystroke
- i=i+1; /* add 1 to i
- }
- msg("All done!!!!"); /* all finished!
- getkey(); /* wait for a final keystroke
- } /* end of the function
- chess-end
-
- Here the code in the main body of the program will be executed
- when Bingo starts up. The functions 'run_current' and 'show_count' is
- defined but not actually used by the start up code.
-
- Attaching Chess Functions to Keystrokes
- ---------------------------------------
- In the above example the function 'run_current' was defined
- without being directly used. It is easy to attach this, or any other
- defined Chess function, to a specific set of keystrokes. You do this
- via Keycfg such as:
- #e run_current();
- would define the Alt-e keystroke combination to run the function
- 'run_current' with no arguments. Likewise:
- #c show_count(9);
- defines the Alt-c combination to invoke the function 'show_count'
- function with an argument of 9.
-
- The Chess Command Line in Bingo
- -------------------------------
- From within Bingo itself, you can execute an arbitrary Chess
- function, with or without arguments, with no problem. The function
- used to do this is 'exec_chess'. This function will present a command
- line, on which a single Chess function call and its arguments can be
- entered. For example, assuming the above code was entered in the .CFG
- file and compiled to a .SET file by KEYINFO, this line:
- show_count(4);
- would invoke the 'show_count' function with an argument of 4.
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 108
-
-
-
-
- Chess Program Files
- -------------------
- One place Chess program code can reside is in your .CFG file
- (which is turned into a .SET file); another is in a Chess program
- file. A Chess program file is a text file containing a Chess
- function. For example:
-
- --------------- cut here ------------------------------------------
- /* this routine functions the same as HEXKEY.COM
- /* it displays the hex and decimal value of a keystroke
- {
- int i;
- msg("Press any key ... (Escape exits)");
- i=getkey();
- while((i%256)!=27)
- {
- msg("Value is %04lx [%06ld] ... Press a key ...",i,i);
- i=getkey();
- }
- }
- --------------- cut here ------------------------------------------
-
- This program duplicates the functionality of the HEXKEY.COM program --
- it outputs the scan code/ASCII value of a keystroke. It will loop
- until you press the Escape key. This program is included with the
- distribution of Bingo as HEXKEY.CHS. To run this program (or any
- other Chess program) from inside Bingo, use the Chess interpreter.
- When the Chess interpreter prompts you for input, use the Chess system
- call 'run'. For example, in this case you would use the 'exec_chess'
- function and the input:
- run("hexkey.chs");
- This is assuming HEXKEY.CHS is in the current directory. *Any* Chess
- program file can be run from within Bingo in this manner.
-
- Attaching Chess Functions to Profile Files
- ------------------------------------------
- Another very powerful way to execute Chess files is through a
- profile file. Profile files are discussed in detail in the Bingo
- manual under the 'write_profile' function. One of the parameters
- which can be set in a profile file is the '&run' parameter. This
- parameter is used to name a file containing a Chess program to
- execute. The syntax for using this in the profile file is:
- &run=c:\test.chs
- This instructs Bingo to execute the Chess program contained in
- "c:\test.chs" when the profile file is loaded. Remember, profile
- files are loaded based on a file's extension.
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 109
-
-
-
-
- Running a Chess File on Start Up
- --------------------------------
- Finally, you can tell Bingo to directly execute a Chess program
- file using the '-c' command line flag. For example:
- be -cc:\test.chs
- will run the Chess program file "c:\test.chs" on start up. Note that
- you may only run one Chess file on start up, though of course that
- program could run as many others as it wanted, using the Chess library
- function 'run'.
-
- Order of Execution on Start Up
- ------------------------------
- On start up, both keyboard macros and Chess programs can be start
- up automatically. It is important to know the order in which this
- will occur. The order is as follows:
- 1) macro files entered per file via the '-x' flag
- 2) Chess start up code (main program code from .CFG file)
- 3) line/column commands per file via the '-p' flag
- 4) Chess file for each profile file loaded
-
- Debugging Chess Programs
- ------------------------
- In order to make developing Chess programming easier, a
- rudimentary tracing function has been provided, accessed through the
- 'conf_chess_trace' function. When this option is turned on, prior to
- execution of each line of Chess code a dialogue box will be popped up
- showing the line number and the line of code. If you press the
- 'Enter' key, execution will continue. Pressing Escape will abort the
- execution.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 110
-
-
-
-
- Library Function Reference
- --------------------------
-
- Bingo from within Chess
- -----------------------
- Normally, the best way to call Bingo functions from within Chess
- is by using the function name directly, capitalizing the first letter
- of the function name. For example:
- {
- Edit_file("temp.");
- Top_of_file();
- Begin_line();
- Replace("~hello~ ~goodbye~ ~ig~");
- File();
- }
- This Chess program file loads the file TEMP., goes to the top of the
- file, replaces each occurrence of "hello" with "goodbye", then saves
- the file and exits.
- Note that as an argument, you may use the same command line input
- as is normally used in the 'cmd_line' function. See the section on
- 'cmd_line' for a complete description of this notation.
- Ask
- ----------------------------------------------------------------------
- Format: int ask(char what[], ...)
- Description: Used to 'ask' the status of various internal
- Bingo/Chess variables. Over 50 variables, both text and integer, are
- available for your inspection. 'Ask' can be used only to retrieve
- values of system variables; it cannot set them.
- The calling sequence may differ for each variable, but generally
- they are of the format:
- i=ask(<ask argument>,[possible extra arguments...])
- as in
- i=ask("file_new") and
- i=ask("file_name",dest)
- The first of these checks whether the current file is new (returning 1
- for True) while the latter places the current file's name into the
- character buffer 'dest', returning the length of the name.
-
- Atoi
- ----------------------------------------------------------------------
- Format: int atoi(char aval[])
- Description: Converts the ASCII string representation of a number
- into its integer equivalent. For example, suppose the character
- buffer test[80] contains the string "12345". Then the call
- i=atoi(test)
- would return the integer value 12,345 into the integer variable 'i'.
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 111
-
-
-
-
- B_cmd
- ----------------------------------------------------------------------
- Format: int b_cmd(char cmd[],...)
- Description: Used to execute Bingo commands from within Chess. For
- example:
- i=b_cmd("down_page");
- would attempt to execute the Bingo command 'down_page'. The
- True/False return value of 'down_page' will be returned and placed in
- the integer variable 'i'. To execute a Bingo command and preload
- arguments, make use of the Chess functions 'Key' and 'Str'. For
- example:
- i=b_cmd("swap_execute",str("dir/p"),key("return"));
- would execute the command "dir/p", swapping out to DOS. The return
- value would be placed in 'i'. See the sections of 'Str' and 'Key'
- respectively for a more in-depth discussion of how they work.
- 'b_cmd' is an acceptable method of executing a Bingo function
- from within Chess, a better method is described in the section "Bingo
- from within Chess".
-
- Beep
- ----------------------------------------------------------------------
- Format: int beep(void)
- Description: Sounds a beep on the PC speaker, using Bingo's current
- frequency and duration settings. Always returns integer 1.
-
- Box_pick
- ----------------------------------------------------------------------
- Format: int box_pick(char title[],int style,int start,
- char pick1[], ... char pickN[])
- Description: Used to allow the user to pick from a set of options.
- Displays a dialogue box, with one line for each choice. You may pick
- from 3 different styles:
- 1 --> display only
- 2 --> display a menu bar, with Return selecting the choice
- 3 --> display a menu bar, but also allow the first character of
- each choice to select a choice.
- The 'start' parameter allows control over where the menu bar in
- styles 2 and 3 begins, with 0 being the first possibility, 1 the
- second possibility, and so on. After the first 3 arguments, any
- number of character buffer arguments may be added. These are the
- possible choices. For example:
- i=box_pick("Test choices",2,0,"Choice 1",Choice 2","Choice 3");
- would allow the user to choose from between 3 choices ("Choice 1",
- "Choice 2", "Choice 3") using a menu bar.
- 'box_pick' returns the number of the choice made, with 0 being
- the first, 1 the second, etc. If the user presses Escape, a -1 is
- returned.
- Be aware there is an upper limit of about 40 on the number of
- arguments you can use. When you need to choose from a larger list of
- choices, use the 'pick_file' function.
-
-
- Bingo 3.10 Reference Manual
- 112
-
-
-
-
- Clear_regs
- ----------------------------------------------------------------------
- Format: int clear_regs()
- Description: Used to clear each of the Chess working copies of the
- internal 80x86 registers to zero (0).
-
- Gen_interrupt
- ----------------------------------------------------------------------
- Format: int gen_interrupt(int int_num);
- Description: Generates an 80x86 interrupt, specifically, it
- generates interrupt number 'int_num'. Prior to generating the
- interrupt, the registers are loaded with the values in Bingo's
- internal working copies, and after the interrupt, the values are saved
- in Bingo's internal working copies. This function is very powerful
- and can be used to do a great many things, but you must be VERY
- CAREFUL! This function if used improperly can have catastrophic
- results.
-
- Get_str
- ----------------------------------------------------------------------
- Format: int get_str(char dest[],char prompt[],int max)
- Description: Used to ask for string input from the user via Bingo's
- internal dialogue box. 'get_str' will place the string in the 'dest'
- character buffer. 'prompt' will be used as a prompt string to tell
- the user what you are asking for. 'max' is the maximum number of
- characters allowed. 'dest' must have room for 'max' + 1 characters.
- For example:
- char ret[21];
- int i;
- ret[0]=0;
- i=get_str(ret,"What is your name?",20);
- declares a character buffer with room for 21 characters, an integer,
- sets the char buffer 'ret' to empty, then asks for the users name, no
- longer than 20 characters, placing the result in the buffer 'ret'.
- 'get_str' returns the character last pressed.
-
- Get_yesno
- ----------------------------------------------------------------------
- Format: int box_yesno(char text[],int default)
- Description: Asks the user a yes/no question, allowing only yes, no,
- and abort as return values. It displays the text in the character
- buffer 'text' and a choice of Yes/No. The default choice is No if the
- 'default' argument is 0, Yes if the 'default' argument is 1. The user
- can press 'y' for Yes, 'n' for No, Return for the current option, or
- Escape to abort.
- If the user chooses Yes, 'box_yesno' will return 1. If the user
- chooses No, it will return 0. If the user hits Escape, 'box_yesno'
- will return -1.
-
-
-
-
- Bingo 3.10 Reference Manual
- 113
-
-
-
-
- Get_char
- ----------------------------------------------------------------------
- Format: int box_char(char text[])
- Description: Displays the contents of the character buffer 'text' on
- the screen, in a dialogue box. It waits for a keystroke, and returns
- the ASCII value of the keystroke.
-
- Get_curr_text
- ----------------------------------------------------------------------
- Format: int get_curr_text(char dest[],int len)
- Description: Places a copy of 'len' characters, starting from the
- current file's current cursor position, into the destination character
- buffer 'dest'. If the current line does not contain 'len' characters
- past the current cursor position, the return buffer will be padded
- with spaces on the right side.
-
- Get_fname
- ----------------------------------------------------------------------
- Format: int get_fname(char dest[], char prompt[],int defok,
- int wildok)
- Description: Allows you to make use of Bingo's file name validation
- and directory list-picking intrinsics. This will prompt the user for
- a file name using 'prompt'. If the 'defok' flag is True (nonzero) and
- the file name has no extension, Bingo will attempt to use the defined
- default extension ('conf_def_ext') and fine a match. If 'wildok' is
- False (zero) and wild card characters are present, 'get_fname' will
- present the user with a directory list-picker. Once a selection has
- been made, the selection will be placed in the character buffer
- 'dest'.
- 'get_fname' returns an integer greater than or equal to zero for
- True, less than zero for False.
-
- Get_reg
- ----------------------------------------------------------------------
- Format: int get_reg(char reg_name[]);
- Description: Returns the integer value of Bingo's internal working
- copy of the 80x86 register named in reg_nam. Se 'set_re' for a list
- of the names of valid registers.
-
- Get_text
- ----------------------------------------------------------------------
- Format: int get_text(int line,int column,char dest[],int len);
- Description: Places a copy of 'len' characters, starting from the
- current file's 'line' and 'column' position, into the destination
- character buffer 'dest'. If the 'line' does not contain 'len'
- characters past the 'column' position, the return buffer will be
- padded with spaces on the right side.
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 114
-
-
-
-
- Getkey
- ----------------------------------------------------------------------
- Format: int getkey(void)
- Description: Waits for a returns the value of a keypress. Whether
- the extended keyboard BIOS is utilized is dependent on Bingo's setting
- ('conf_key_bios'). This value is not simply the 8-bit ASCII value of
- the keypress, but the 16-bit scan-code/ASCII combination. The
- HEXKEY.COM utility will help in discerning particular key-values.
-
- Itoa
- ----------------------------------------------------------------------
- Format: int itoa(int val,char dest[])
- Description: Converts a character buffer representation of a number
- into its integer equivalent. For example:
- int i;
- char temp[20];
- strcpy(temp,"12345");
- i=atoi(temp);
- will leave 'i' with the value 12,345.
-
- Key
- ----------------------------------------------------------------------
- Format: int key(char s[])
- Description: This is a specialized function very similar to 'str'.
- It is used in conjunction with 'b_cmd' to pass keystrokes to intrinsic
- Bingo commands. For example:
- b_cmd("window_resize",key("down_arrow"),
- key("down_arrow"),key("return"));
- would resize the current window to be 2 lines bigger (assuming there
- was room, of course). The series of 'key' statements "preload" the
- keystrokes shown in the order shown. Allowable key names currently
- include:
- return
- escape
- up_arrow
- down_arrow
- left_arrow
- right_arrow
- ctrl_home
- delete
- end
- home
- tab
- Note: In the above example, remember that the command would have to be
- all on the same line to be properly interpreted by Chess.
-
- Memcpy
- ----------------------------------------------------------------------
- Format: int memcpy(char dest[], char src[], int n)
- Description: Copies 'n' bytes of memory from the buffer 'src' to the
- buffer 'dest'.
-
- Bingo 3.10 Reference Manual
- 115
-
-
-
-
- Msg
- ----------------------------------------------------------------------
- Format: int msg(char format[], ...)
- Description: Displays a formatted message on the status line. This
- message will remain displayed until normal screen processing re-
- displays the status line, or until an 'update_display' command is
- issued. Formatting follows the same conventions as the 'sformat'
- function.
-
- Pick_file
- ----------------------------------------------------------------------
- Format: int pick_file(char fname[],char title[],int style,
- int start)
- Description: Used as an alternative to the 'box_pick' function when
- the number of choices is large. This function will work the same as
- 'box_pick', except that the choices will be contained in the file
- whose name is in the character buffer 'fname'. 'Pick_file' returns
- the same values as 'box_pick' does.
-
- Put_char
- ----------------------------------------------------------------------
- Format: int put_char(int val)
- Description: Interprets an integer value 'val' exactly as if it was
- typed in. For example:
- put_char(17408);
- will cause Bingo to interpret the keystroke F10. Likewise:
- put_char(65)
- will cause Bingo to interpret the keystroke 'A'.
-
- Put_text
- ----------------------------------------------------------------------
- Format: int put_text(int insert,int line,int col,char text[]);
- Description: This function allows the user to place a string of
- zero-terminated text, contained in the character buffer 'text', into
- the current file. The text will be placed on line number 'line' at
- column 'col'. If the 'insert' flag is True (nonzero), any text
- currently located there will be pushed to the right. If the 'insert'
- flag is False (zero), any text located in that space will be
- overwritten. For example:
- put_text(1,100,4,"Hi!")
- will cause the text string "Hi!" to be inserted on line 100 starting
- at column 4.
-
- Put_text_curr
- ----------------------------------------------------------------------
- Format: int put_text_curr(int insert,char text[]);
- Description: Function similarly to 'put_text', however the text will
- be placed at the current cursor position in the current file.
-
-
-
-
- Bingo 3.10 Reference Manual
- 116
-
-
-
-
- Run
- ----------------------------------------------------------------------
- Format: int run(char fname[])
- Description: Allows the user to run another Chess program, contained
- in the file named in 'fname'. This file will have access to global
- variables defined in the currently executing Chess program.
-
- Set_display
- ----------------------------------------------------------------------
- Format: int set_display(int on)
- Description: Sets on (on nonzero) or off (on = zero) whether the
- display (screen) gets updated during subsequent Bingo/Chess commands.
- Turning this off can significantly increase performance. Remember,
- however, to issue an 'update_display()' call when you need the screen
- repainted, and to turn it back on again at some point.
-
- Set_msg_wait
- ----------------------------------------------------------------------
- Format: int set_msg_wait(int on)
- Description: Sets on (on nonzero) or off (on = zero) whether Bingo
- waits for a keystrokes after the messages where Bingo would normally
- do this. For example, the 'replace' command normally pauses for 3
- seconds or a keystroke after it executes. Turning this off can speed
- up such processing.
-
- Set_recall
- ----------------------------------------------------------------------
- Format: int set_recall(int on)
- Description: Normally, Bingo saves two types of string entry
- histories, the standard string entry history and the filename history.
- This function allows you to turn on or off this action for both,
- either, or neither of these histories. For example:
-
- set_recall(""); : turns off both histories
- set_recall("file"); : turns on filename histories
- set_recall("string"); : turns on standard string history
- set_recall("string","file"); : turns on both
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 117
-
-
-
-
- Set_reg
- ----------------------------------------------------------------------
- Format: int set_reg(char regname[],int val)
- Description: Used to set the value of one of Bingo's working copies
- of the internal 80x86 registers. The register names and their range
- of legal values are as follows:
-
- Name Size Name Size
- ---------------------------------------------
- ax 16 bit al 8 bit
- bx 16 bit ah 8 bit
- cx 16 bit bl 8 bit
- dx 16 bit bh 8 bit
- si 16 bit cl 8 bit
- di 16 bit ch 8 bit
- cflag 16 bit dl 8 bit
- flags 16 bit dh 8 bit
-
- Sformat
- ----------------------------------------------------------------------
- Format: int sformat (char dest[],char str[],...)
- Description: Allows formatting of strings using the C language
- 'printf' conventions. Places the formatted string in 'dest'. While
- the full complement of replacements are available, only three basic
- primitives will be described here.
- %ld integer
- %s string
- %c character
- 'Sformat' returns the length of the formatted string. For example:
- int i,j;
- char dest[80];
- char temp[30];
- i=sformat(dest,"Hi %s.","Chris");
- --> 'dest' contains "Hi Chris."
- --> 'i' contains 9
-
- i=sformat(dest,"Hello %s %c.","Chris",'S');
- --> 'dest' contains "Hi Chris S."
- --> 'i' contains 11
-
- j=99;
- strcpy(temp,"Chris");
- i=sformat(dest,"%ld red balloons, %s!",j,temp);
- --> 'dest' contains "99 red balloons, Chris!"
- --> 'i' contains 21
- Note: All of Borland TurboC's 'printf' primitives are supported, but
- you must remember a few things. In particular, Chess integers are 4-
- bytes longs, not normal Turbo C integers. Thus:
- i=300000;
- sformat(dest,"%d",i);
- will not work properly.
-
- Bingo 3.10 Reference Manual
- 118
-
-
-
-
- Str
- ----------------------------------------------------------------------
- Format: int str(char s[])
- Description: This is a specialized function very similar to 'key'.
- It is used in conjunction with 'b_cmd' to pass strings of text to
- intrinsic Bingo commands. For example:
- b_cmd("swap_execute",str("dir /p"),key("return"));
- would cause Bingo to swap to DOS and execute the command "dir/p". The
- 'key("return")' preloads the keystroke 'Return' as well.
-
- Strcat
- ----------------------------------------------------------------------
- Format: int strcat(char dest[],char src[])
- Description: Concatenates the contents of one zero-terminate string
- onto another:
- char temp1[20],temp2[20];
- strcpy(temp1,"Hi ");
- strcpy(temp2,"Chris!");
- strcat(temp1,temp2);
- would leave the string "Hi Chris!" in the character buffer 'temp1'
-
- Strcmp
- ----------------------------------------------------------------------
- Format: int strcmp(char s1[],char s2[])
- Description: Compares two strings (character buffers). Returns 0 if
- the strings match, <0 if string 's1' is less than 's2', and >0 if 's1'
- is greater than 's2'. For example:
-
- strcmp("Hello","Hi") returns <0
- strcmp("Hello","Alfie") returns >0
- strcmp("hello",Hello") returns 0
-
- Strcpy
- ----------------------------------------------------------------------
- Format: int strcpy(char dest[],char src[])
- Description: Copies the contents of 'src', a zero-terminated string,
- into the character buffer 'dest', including the 0. Always returns 1.
-
- Strlen
- ----------------------------------------------------------------------
- Format: int strlen(char src[])
- Description: Returns the length of the zero-terminated string in
- 'src'. For example:
- char tempo[80];
- strcpy(tempo,"Hi!")
- i=strlen(tempo);
- would leave 'i' with the value of 3.
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 119
-
-
-
-
- Strndx
- ----------------------------------------------------------------------
- Format: int strndx(char src[],char c)
- Description: Returns the integer offset of the *first* occurrence of
- 'c' in the zero-terminated string 'src'. Return -1 if 'c' is not
- found. Position zero (0) is the first character. For example:
- strndx("Hello",'o') returns 4
- strndx("Hello",'l') returns 2
- strndx("Hello",'p') returns -1
-
- Update_display
- ----------------------------------------------------------------------
- Format: int update_display(void)
- Description: Refreshes the current window and the command line.
- Always returns 1.
-
- Valid_name
- ----------------------------------------------------------------------
- Format: int valid_name(char s[])
- Description: Attempts to validate the file name in the character
- buffer 's'. Will interpret the ":temp:" and ":home:" identifiers
- automatically. Will convert forward slashes to back slashes. Will
- attempt to expand 's' to a full directory specification. Always
- returns 1.
- 's' MUST have enough room for the expanded file name; on MS-DOS
- file systems, this equates to roughly 80 characters.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 120
-
-
-
-
- "Ask" Arguments
- ---------------
-
- Chess's 'ask' library function is the means through which a
- program can retrieve information about Bingo's current settings and
- status. This section will list each of the 'ask' arguments
- recognized, and what they return. Most 'ask' arguments return an
- integer, and are used like this:
- i=ask("file_autoindent");
- True/False arguments such as 'file_autoindent' return 1 for True, 0
- for False.
- Other types of 'ask' arguments fetch character buffer data, such
- as:
- char dest[80];
- ask("file_name",dest);
- would place the current filename in the character buffer 'dest'.
-
- File_autoindent
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_autoindent")
- Description: Auto indent setting for current file.
- Returns: Integer, 1 if set to True, 0 for False.
-
- File_bspace
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_bspace")
- Description: Backspace mode setting for current file.
- Returns: Integer 0-3, meaning:
- 0 --> No Tab Delete
- 1 --> One Tab Delete
- 2 --> Delete All
- 3 --> Rubout
-
- File_changes
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_changes")
- Description: Changes to current file since last backup.
- Returns: Integer number equal to the number of "change"
- events which have hit the current file. This is the same number of
- changes which the timed backups are triggered from.
-
- File_cmode
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_cmode")
- Description: C-Mode setting for the current file.
- Returns: Integer describing which type of C-Mode indention is
- active for the current file. Types are:
- 0 None
- 1 ANSI
- 2 Classical
-
-
- Bingo 3.10 Reference Manual
- 121
-
-
-
-
- File_column
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_column")
- Description: Column position in current file.
- Returns: Integer denoting the column position of the current
- file. 1 is the first column, etc.
-
- File_dialogue
- ---------------------------------------------------------------------
- Returns: Integer denoting the line the cursor is on in the
- current file. The first line is 1.
-
- File_matching
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_matching")
- Description: Matching mode for the current file.
- Returns: Integer True (1) or False (0) depending when the
- current files Matching mode setting.
-
- File_name
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_name",char dest[])
- Description: File name, with extension, of the current file.
- Returns: Into the character buffer 'dest', retrieves the file
- name, without the path, of the current file. For example, editing the
- file "c:\edit\temp.c":
- char temp[80];
- ask("file_name",temp);
- --> 'temp' now contains "temp.c"
- Note: There must be sufficient space in 'dest' for the file name.
-
- File_new
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_new")
- Description: Was the current file new when loaded?
- Returns: True (1) or False (0) depending on if the current
- file was created when it was loaded.
-
- File_number
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_number")
- Description: Number of the current file in the ring.
- Returns: Integer, ranging from 0 to (number of files - 1),
- denoting the number of the current file in the ring. The first file
- is 0, the second is 1, etc. This is not to be confused with the
- "file_id_no", which is unique for each file edited in the session.
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 122
-
-
-
-
- File_path
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_path",char dest[])
- Description: Path name of the current file, ending with
- backslash.
- Returns: Into a character buffer 'dest', the full path
- including the drive, of the current file. For example, editing the
- file "c:\edit\temp.c":
- char temp[80];
- ask("file_path",temp);
- --> 'temp' contains "c:\edit\"
- Note: "file_path" will always end with a backslash, so that the
- "file_name" can be concatenated onto the end of the path. 'dest' must
- have enough room for the "file_path".
-
- File_recmode
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_recmode")
- Description: Current text recognition mode setting for the
- current buffer.
- Returns: Integer corresponding to the setting of the text
- recognition mode (0=On-Demand (Sleeping), 1=Automatic, 2=On-Demand
- (waiting for a match)).
-
- File_recog
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_recog",int n,char trigger[],char chess[])
- Description: Text recognition relationship 'n' for the current
- buffer. The first relationship has n=0.
- Returns: Into 'trigger', the character string which is the
- trigger Integer corresponding to the setting of the text recognition
- mode (0=On-Demand (Sleeping), 1=Automatic, 2=On-Demand (waiting for a
- match)).
-
-
- File_rmargin
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_rmargin")
- Description: Right margin setting for current file.
- Returns: Integer which is the setting of the right margin for
- the current file.
-
- File_smart_tabs
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_smart_tabs")
- Description: Smart tab setting for current file.
- Returns: Integer True (1) or False (0) denoting the setting
- of the SmartTabs option for the current file.
-
-
-
-
- Bingo 3.10 Reference Manual
- 123
-
-
-
-
- File_tabsize
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_tabsize")
- Description: Tab size for the current file.
- Returns: Integer value of the current file's tab size
- setting.
-
- File_timed
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_timed")
- Description: Timed backup setting for the current file.
- Returns: Integer setting of the timed backup option for the
- current file.
-
- File_w_height
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_w_height")
- Description: Current window height.
- Returns: Integer height, in rows, of the current window.
- This does not include the status line.
-
- File_w_left
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_w_left")
- Description: Current window left location.
- Returns: Integer column upon which the current windows left
- side starts.
-
- File_w_top
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_w_top")
- Description: Current window one pos.
- Returns: Integer value of the row upon which the current
- windows top row sits.
-
- File_w_width
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_w_width")
- Description: Width of current window.
- Returns: Integer width, in columns, of the current window.
-
- File_wordwrap
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_wordwrap")
- Description: Word wrap setting of current file.
- Returns: Integer True (1) or False (0) setting of the current
- files Word wrap option.
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 124
-
-
-
-
- File_x
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_x")
- Description: X location of cursor within the current window.
- Returns: Integer X, or column, location of the cursor within
- the window, using the window top as row 1, and the window left as
- column 1.
-
- File_y
- ----------------------------------------------------------------------
- Calling Sequence: ask("file_y")
- Description: Y location of cursor on the current window.
- Returns: Integer Y, or row, location of the cursor within the
- window, using the window top as row 1, and the window left as column
- 1.
-
- Sys_autoindent
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_autoindent")
- Description: System auto indent setting.
- Returns: Integer default auto indent setting, True (1) or
- False (0).
-
- Sys_autostrip
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_autostrip")
- Description: System autostrip setting.
- Returns: Integer default high bit stripping setting, True (1)
- or False (0).
-
- Sys_autotrail
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_autotrail")
- Description: System autotrail setting.
- Returns: Integer default auto trailing space setting, True
- (1) or False (0).
-
- Sys_backups
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_backups",char dest[])
- Description: System backup extension.
- Returns:
-
- Sys_bounce
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_bounce")
- Description: System cursor bounce setting.
- Returns: Integer default bounce cursor setting, True (1) or
- False (0).
-
-
-
- Bingo 3.10 Reference Manual
- 125
-
-
-
-
- Sys_bspace
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_bspace")
- Description: System backspace setting.
- Returns: Integer default backspace setting. See the entry
- for "file_bspace" for a listing of valid return codes.
-
- Sys_carriage
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_carriage")
- Description: Carriage return setting.
- Returns: Integer default carriage-return-splits-line setting,
- True (1) or False (0).
-
- Sys_cmode
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_cmode")
- Description: System C-Mode setting.
- Returns: Integer default C-Mode setting; see the entry for
- file_cmode for an explanation of return codes.
-
- Sys_cols
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_cols")
- Description: System number columns.
- Returns: Integer number of columns on the screen.
-
- Sys_delete
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_delete")
- Description: Delete joins lines setting.
- Returns: Integer default setting for the delete-join option,
- True (1) or False (0).
-
- Sys_extensions
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_extensions", int which, char dest[])
- Description: Default file extensions.
- Returns: The [which] currently defined file extension. For
- example:
- char temp[80];
- ask("sys_extensions",3,temp);
- will retrieve the 3rd defined file extension into the character buffer
- 'dest'. If the extension is not defined, 'dest' will be filled in
- with the empty string "".
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 126
-
-
-
-
- Sys_fcount
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_fcount")
- Description: Count of files - 1 in the ring.
- Returns: Integer number of files currently in the ring, less
- one.
-
- Sys_inmacro
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_inmacro")
- Description: Is Bingo currently replaying a macro?
- Returns: Integer default sys_inmacro setting, True (1) or
- False (0).
-
- Sys_insmode
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_insmode")
- Description: Default insert mode.
- Returns: Integer default Insert mode setting, True (1) or
- False (0).
-
- Sys_mark_paste
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_mark_paste")
- Description: System mark-pasting block setting.
- Returns: Integer mark-pasting setting, True (1) or False (0).
-
- Sys_matching
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_matching")
- Description: System matching mode setting.
- Returns: Integer default Matching mode setting, True (1) or
- False (0).
-
- Sys_mouse
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_mouse")
- Description: Is a mouse available?
- Returns: Integer True (1) or False (0), denoting whether the
- mouse is available.
-
- Sys_para
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_para")
- Description: Indention starts new paragraph.
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 127
-
-
-
-
- Sys_rdefs
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_rdefs",char dest[])
- Description: Replace default string.
- Returns: Places in the 'dest' character buffer the current
- Replace default string.
-
- Sys_recmode
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_recmode")
- Description: Systemwide default text recognition mode setting.
- Returns: Integer corresponding to the setting of the text
- recognition mode (0=On-Demand (Sleeping), 1=Automatic, 2=On-Demand
- (waiting for a match)).
-
- Sys_recording
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_recording")
- Description: Is Bingo currently recording a macro?
- Returns: True (1) or False (0), depending on whether Bingo is
- currently recording a macro.
-
- Sys_rmargin
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_rmargin")
- Description: System right margin setting.
- Returns: Integer value of the current default right margin
- setting.
-
- Sys_rows
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_rows")
- Description: Number of rows on screen.
- Returns: Integer number of rows displayed on the screen.
-
- Sys_sdefs
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_sdefs",char dest[])
- Description: Search defaults.
- Returns: Places in the 'dest' character buffer the current
- Search default string.
-
- Sys_smart_tabs
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_smart_tabs")
- Description: System smart tab setting.
- Returns: Integer default SmartTab setting, True (1) or False
- (0).
-
-
-
-
- Bingo 3.10 Reference Manual
- 128
-
-
-
-
- Sys_tabsize
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_tabsize")
- Description: System tab size.
- Returns: Integer default Tab Size setting.
-
- Sys_timed
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_timed")
- Description: System timed backup setting.
- Returns: Integer denoting the number of "changes" which can
- elapse between autosaves. Zero (0) means no saves will be done.
-
- Sys_undo_many
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_undo_many")
- Description: System undo setting.
- Returns: Integer denoting the maximum number of undo events
- Bingo is saving. Zero (0) means no undo events are being saved.
-
- Sys_word_delim
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_word_delim",char dest[])
- Description: System defined word delimiters.
- Returns: Copies into the character buffer 'dest' the string
- of characters which are *not* in a word.
-
- Sys_wordwrap
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_wordwrap")
- Description: System word wrap setting.
- Returns: Integer default word wrap setting, True (1) or False
- (0).
-
- Sys_zoom
- ----------------------------------------------------------------------
- Calling Sequence: ask("sys_zoom")
- Description: Is the current window zoomed?.
- Returns: Integer default zoom window setting, True (1) or
- False (0).
-
- Version
- ----------------------------------------------------------------------
- Calling Sequence: ask("version", char dest[])
- Description: Current Bingo version.
- Returns: Copies into the character buffer 'dest' a zero
- terminated string containing the current Bingo versions. This string
- will be at most 20 characters, including the zero.
-
-
-
-
- Bingo 3.10 Reference Manual
- 129
-
-
-
-
- Ws_size
- ----------------------------------------------------------------------
- Calling Sequence: ask("ws_size")
- Description: Interpreter workspace size.
- Returns: Integer size of the currently executing Chess
- subprogram size, in characters.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 130
-
-
-
-
- Chess Execution Errors
- ----------------------
- Abort
- ----------------------------------------------------------------------
- This error will be generated when the execution of a Chess program is
- interrupted by the user by pressing and holding the Scroll Lock key.
-
- Arguments
- ----------------------------------------------------------------------
- This error will be generated when the number of arguments used to call
- a function does not equal the number of arguments declared for the
- function.
-
- Bingo Intrinsic
- ----------------------------------------------------------------------
- This error is generated by a call to the 'b_cmd' library function when
- the first argument passed to it does not equal a valid Bingo intrinsic
- function.
-
- Class
- ----------------------------------------------------------------------
- This error will be generated when a variable which is not an array is
- referenced with an array subscript.
-
- Declaration
- ----------------------------------------------------------------------
- This error is generated when a Chess program attempts to reference a
- variable which has not been declared.
-
- Exec Interp
- ----------------------------------------------------------------------
- This error will be generated when Bingo lacks memory to execute the
- command line given in the 'Chess_exec' function.
-
- Function Table Overflow
- ----------------------------------------------------------------------
- This will be generated when the number of declared functions exceeds
- the size of the function table set using the BOPTS utility program.
-
- Interpreter Parsing
- ----------------------------------------------------------------------
- This is an error generated when the Chess interpreter has encountered
- illegal syntax.
-
- Left Brace
- ----------------------------------------------------------------------
- This error is generated when a left brace ('{') is not found when
- Chess expects to find one.
-
-
-
-
- Bingo 3.10 Reference Manual
- 131
-
-
-
-
- Left-Value
- ----------------------------------------------------------------------
- This error is generated when Chess finds that the value on the left
- side of an assignment statement is illegal, such as a constant or a
- function.
-
- Link
- ----------------------------------------------------------------------
- This error is generated when Chess is unable to resolve all of the
- function and variable references in a program.
-
- Range
- ----------------------------------------------------------------------
- This error is generated when you attempt to reference an array element
- outside the declared range.
-
- Right Paren
- ----------------------------------------------------------------------
- This error is generated if Chess fails to find matching right
- parentheses or right braces.
-
- Stack (Pop)
- ----------------------------------------------------------------------
- This is an internal error indicating a stack error; report these to
- the error as soon as possible, along with a copy of the code that
- caused it.
-
- Stack (Push)
- ----------------------------------------------------------------------
- This is an internal error indicating a stack error; report these to
- the error as soon as possible, along with a copy of the code that
- caused it.
-
- Symbol
- ----------------------------------------------------------------------
- This error is generated when Chess cannot find a symbol used as either
- a variable or function.
-
- Syntax
- ----------------------------------------------------------------------
- This error is generated when basic Chess syntax rules are broken.
-
- System Call
- ----------------------------------------------------------------------
- This error is generated when a call to one of Chess's library
- functions is called without the proper number of arguments.
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 132
-
-
-
-
- System Variable
- ----------------------------------------------------------------------
- This error is generated when a call to the 'ask' library function uses
- the incorrect number of arguments, or if the 'ask' argument is
- unrecognized.
-
- Variable Table Overflow
- ----------------------------------------------------------------------
- This will be generated when the number of declared variables exceeds
- the size of the variable table set using the BOPTS utility program.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 133
-
-
-
-
- Some Example Chess Code
- -----------------------
-
- This section will have some example Chess code which you may find
- useful.
-
- Example #1: Execute the Current File
- ------------------------------------
- This function is also seen elsewhere, but it is so useful it
- warrants inclusion again. It first saves the current file if need be,
- then builds its full filespec and executes it as Chess program file.
-
- run_current{
- char temp[80],name[20]; /* declare working variables
- int i;
- b_cmd("modify_save"); /* save current file if dirty
- i=ask("file_path",temp) /* get the file's path
- ask("file_name",name) /* get the file's name
- strcpy(temp+i,name); /* add the name to the path
- return(run(temp)); /* run the file and return
- }
-
- Example #2: Factorials
- ----------------------
- This pair of functions finds the factorials of numbers.
- 'find_fact' asks the user for a number and calls 'do_fact' to actually
- figure it out. 'do_fact' uses the classical recursive method to
- calculate the factorial of an integer.
-
- find_fact{
- char temp[30];
- int i;
- if((get_str(temp,"Find factorial of What number?",2)%256)!=27){
- /* if the user didn't press escape
- i=atoi(temp); /* convert to an integer
- i=do_fact(i); /* find its factorial
- msg("%s factorial is %ld",temp,i); /* print it out
- getkey(); /* wait for a keypress
- }
- }
- do_fact /* this function is a recursive one
- int n; /* single parameter
- {
- if(n<1) /* if illegal, return 0
- return(0);
- else if(n==1) /* if we are done with recursive call
- return(1);
- else /* else, recurse another level
- return(do_fact(n-1)*n);
- }
-
-
- Bingo 3.10 Reference Manual
- 134
-
-
-
-
- The Included Chess Files
- ------------------------
-
- Version 3.10 includes 15 sample CHESS program files/functions.
- Each of these files are meant to be both useful and to illustrate
- important Chess programming concepts. The sample files are
-
- BIOS_INT.CHS : This sample file includes two routine to access
- the BIOS keyboard interrupt. One routine can return keypress
- information, the other will wait for a keypress and then return,
- without processing the keypress.
-
- CINDENT1.CHS : This sample file will change all occurrences of
- C mode indention #2 to C mode indention #1. I.e.,
- if -- becomes --> if{
- { stuff...
- stuff... }
- }
- This sample file is a very good example of using Bingo commands
- with complex arguments to perform operations. Useful in
- conjunction with the 'global' command to change whole sets of
- files to a uniform C mode indention.
-
- CINDENT2.CHS : This sample file will change all occurrences of
- C mode indention #1 to C mode indention #2. I.e.,
- if{ -- becomes --> if
- stuff... {
- } stuff...
- }
- This sample file is a very good example of using Bingo commands
- with complex arguments to perform operations. Useful in
- conjunction with the 'global' command to change whole sets of
- files to a uniform C mode indention.
-
- COMMENT.CHS : Block comments a set of lines using '/*' in
- front of each linemarked lines. A parameter 'aft' is used to
- decide whether or not an accompanying '*/' is placed after each
- line.
-
- COMPILE.CHS : VERY useful program files. Designed to be run
- as a standalone CHESS program file (run("compile.chs") from the
- 'exec_chess' function). The main code pops up a menu of choices
- using the 'box_pick function. Then, two functions
- "compile_review" and "parse_errs" are used to run the command
- line and parse the errors. This program file illustrates many
- key CHESS programming ideas.
-
- ERRORP.CHS : This is a cousin of COMPILE.CHS; the difference
- is that ERRORP.CHS is designed to be used to parse errors from
- the command-line.
-
-
- Bingo 3.10 Reference Manual
- 135
-
-
-
-
- FACT.CHS : This is a simple recursion example, finding the
- factorial of a number.
-
- HEXKEY.CHS : This routine displays the hexadecimal and
- decimal value of a keystroke.
-
- HOME&END.CHS : This is a pair of functions which were inspired
- by the gang on the IBMAPP forum of Compuserve. They are
- alternative begin and end of line functions, which depending on
- the current cursor position, may move further up or down the
- file. A good example of how to replace standard Bingo functions
- with enhanced functions.
-
- LEAP.CHS : Since the 'leap_' functions were dropped from
- version 3.10 of Bingo, this file contains replacement functions
- in Chess.
-
- QUIT.CHS : This is an alternative 'quit' function, in which
- the default reply to quitting a modified file is not to save it -
- - the reverse of the standard function.
-
- S_AGAIN.CHS : This contains functions which search for the
- last target again, only one function forces the search to be in
- the forward direction, the other in the reverse.
-
- SIDEBY.CHS : These two functions allow for side by side
- scrolling of two vertical windows.
-
- STRIP.CHS : This is a simple program file to strip comments
- from a CHESS program file; since they are unnecessary to run it
- and take up space.
-
- VARTABS.CHS : This is a collection of functions designed to
- let you set tabs on a ruler line at arbitrary positions and then
- have Bingo use a replacement tab function to perform tabbing.
- This would have to be incorporated into you .CFG file for it to
- work most effectively.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 136
-
-
-
-
- The Author
- ----------
-
- I received my M.S. in Computer Science from The Ohio State
- University in March of 1990, and am now employed by a large
- engineering/manufacturing firm in the Baltimore area. I was raised in
- a steel town in Eastern Pennsylvania, and attended The Pennsylvania
- State University as an undergraduate, graduating in May of 1988. I
- hold a first-degree Black Belt in Tae Kwon Do, and I am an avid reader
- of science-fiction, fantasy, military fiction, mythology, and just
- about any other occurance of the printed word. Bingo was developed on
- an original IBM PC (8088!) through version 2.10d, and since on a
- Gateway 2000 386DX/25. Since April '92, Bingo has been developed
- while running under IBM's awesome OS/2 2.0 operating system.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 137
-
-
-
-
- Acknowledgements
- ----------------
-
- There are many I must acknowledge for the inspiration for writing
- this program: family, friends, colleagues. In addition, I want to
- thank Borland for their excellent Turbo C compiler, which I used to
- write Bingo; IBM for making my beloved baby, lo those many years ago;
- IBM again for creating OS/2 2.0, which has speeded development
- considerably, and all the other folks who wrote software I used to
- create Bingo. In particular, thanks to Ralf Brown for his excellent
- SPAWNO libraries which I used in this version. Thanks to Gateway
- computers, for making my workhorse. Thanks to all my computer science
- professors, who instilled the knowledge to write such an application
- in me, often against my will.
- Thanks to the members of the Columbus Computer Society (CCS),
- particularly the members of the Programmer's SIG, several of whom
- served as Beta test people during versions 1.0 to 2.0, putting their
- programs In Harm's Way as they tested features.
- Thanks to Jorge, Bradley, Alan, Mike, Pierre, Mike, all of the
- beta testers who worked on v3.10, and all the others for more positive
- feedback than anyone could hope for.
- Thanks to the BedPiglet, for understanding the time involved in
- doing this, and for her smile. I *am* going to marry this girl, this
- coming October 16th. Life just gets better!!!!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 138
-
-
-
-
-
- Index
- -----
- .CFG . . . . . . . . . . . . . . . . . . . . . . . . 19, 107-110, 136
- .INI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25, 89
- abort . . . . . . . . . . . . . 28, 29, 45, 61, 62, 88, 110, 113, 131
- abort_all . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 62
- again . . . . . 27, 29, 33, 49, 52, 65, 77, 84, 85, 117, 134, 136, 138
- align . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80, 82
- ascii_table . . . . . . . . . . . . . . . . . . . . . . . . . . 37, 64
- ask 6, 28-31, 36, 62, 74, 77-79, 83, 88, 107, 111, 113, 121-130, 133, 134
- ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
- Association of Shareware Professionals . . . . . . . . . . . . . . 3
- atoi . . . . . . . . . . . . . . . . . . . . . . . . . 111, 115, 134
- b_cmd . . . . . . . . . . . . . . . . . . . . 112, 115, 119, 131, 134
- back_space . . . . . . . . . . . . . . . . . . . . . . . . . . 49-51
- back_tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
- backup_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
- backup_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
- BE.EXE . . . . . . . . . . . . . . . . . . . . 10-12, 22, 23, 38, 64
- beep . . . . . . . . . . . . . . . . . . . . . . . . 29, 30, 42, 112
- begin_line . . . . . . . . . . . . . . . . . . . . . . . . . 69, 111
- begin_of_text . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
- block_copy . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 54
- block_delete . . . . . . . . . . . . . . . . . . . . . . . . . 53, 55
- block_load . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
- block_move . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 54
- block_save . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
- bot_of_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
- bottom_of_block . . . . . . . . . . . . . . . . . . . . . . . . . . 69
- bottom_of_screen . . . . . . . . . . . . . . . . . . . . . . . . . 69
- box_char . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
- box_pick . . . . . . . . . . . . . . . . . . . . . . . 112, 116, 135
- box_yesno . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
- buffer_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
- carriage . . . . . . . . . . . . . . . . 45, 46, 49, 61, 74, 86, 126
- center_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
- center_text . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
- chdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
- Chess . 1, 2, 6, 9, 11, 15, 18, 19, 22, 23, 31, 47, 79, 82, 87-96, 98,
- 100, 103, 105, 106-113, 115, 117, 118, 121, 130-132, 134-136
- choose_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
- clean_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
- clean_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
- cmd_line . . . . . . . . . . . . . . . . . . . . 79, 82, 86, 88, 111
- conf_auto_cut . . . . . . . . . . . . . . . . . . . . . . . . . 23, 44
- conf_autoindent . . . . . . . . . . . . . . . . . . . . . . . . 41, 86
- conf_automark . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
- conf_backspace . . . . . . . . . . . . . . . . . . . . . . . . . . 42
- conf_backups . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- conf_bmarg . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-
- Bingo 3.10 Reference Manual
- 139
-
-
-
-
- conf_bounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
- conf_button_wait . . . . . . . . . . . . . . . . . . . . . . . . . 42
- conf_carriage . . . . . . . . . . . . . . . . . . . . . . . . . 46, 49
- conf_chess_trace . . . . . . . . . . . . . . . . . . . . . . 47, 110
- conf_cmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
- conf_color . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
- conf_cut_stack . . . . . . . . . . . . . . . . . . . . . . . . 43, 57
- conf_def_ext . . . . . . . . . . . . . . . . . . . . . . . . 43, 114
- conf_delete_join . . . . . . . . . . . . . . . . . . . . . . . 46, 50
- conf_delims . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 82
- conf_dialogue . . . . . . . . . . . . . . . . . . . . . . . . . 28, 47
- conf_eof . . . . . . . . . . . . . . . . . . . . . . . . . . . 41, 61
- conf_eol_display . . . . . . . . . . . . . . . . . . . . . . . . . 45
- conf_erronly . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
- conf_exit_to_pick . . . . . . . . . . . . . . . . . . . . . . . . . 45
- conf_insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- conf_key_bios . . . . . . . . . . . . . . . . . . . . . . . . 44, 115
- conf_kill_size . . . . . . . . . . . . . . . . . . . . . . . . 43, 58
- conf_lfs . . . . . . . . . . . . . . . . . . . . . . . . . . . 40, 61
- conf_lines_per . . . . . . . . . . . . . . . . . . . . . . . . . . 43
- conf_lmarg . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
- conf_mark_paste . . . . . . . . . . . . . . . . . . . . . . . . . . 48
- conf_matching . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
- conf_mdelay . . . . . . . . . . . . . . . . . . . . . . . . . . 35, 42
- conf_mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
- conf_name_save . . . . . . . . . . . . . . . . . . . . . . . . 45, 47
- conf_para . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
- conf_prn . . . . . . . . . . . . . . . . . . . . . . . . . 43, 45, 46
- conf_prn_eol . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
- conf_prn_header . . . . . . . . . . . . . . . . . . . . . . . . . . 46
- conf_prn_lineno . . . . . . . . . . . . . . . . . . . . . . . . . . 46
- conf_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
- conf_recognize . . . . . . . . . . . . . . . . . . . . . . . . 47, 87
- conf_resume_pos . . . . . . . . . . . . . . . . . . . . . . . . . . 47
- conf_rmargin . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- conf_scr_save . . . . . . . . . . . . . . . . . . . . . . . 45, 47, 89
- conf_search . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- conf_shadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
- conf_smart_tabs . . . . . . . . . . . . . . . . . . . . . . . . . . 44
- conf_sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
- conf_stripping . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- conf_tabsize . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- conf_timed_backups . . . . . . . . . . . . . . . . . . . . . . . . 46
- conf_tmarg . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
- conf_trail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
- conf_undo . . . . . . . . . . . . . . . . . . . . . . . . . . . 47, 57
- conf_video_mode . . . . . . . . . . . . . . . . . . . . . . . . . . 43
- conf_vmem . . . . . . . . . . . . . . . . . . . . . . . . . . . 13, 48
- conf_wild_load . . . . . . . . . . . . . . . . . . . . . . . . . . 47
- conf_win_close . . . . . . . . . . . . . . . . . . . . . . . . . . 42
- conf_word . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 81
-
- Bingo 3.10 Reference Manual
- 140
-
-
-
-
- conf_wordwrap . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- copy . . . 4, 5, 8, 10, 12, 44, 52-55, 57, 62, 64, 95, 104, 114, 132
- copy_append . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
- cursor_down . . . . . . . . . . . . . . . . . . . . . . . . . . 35, 68
- cursor_left . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
- cursor_right . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
- cursor_up . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 85
- cut . . . . . . . . . . . . . . . . . . 23, 43, 44, 49, 51-55, 57, 109
- cut_append . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
- default_bspace . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
- default_del . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
- define_scrap . . . . . . . . . . . . . . . . . . . . . . . . . 65, 66
- del_bol . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 50, 57
- del_char . . . . . . . . . . . . . . . . . . . . . . . . . . . 49-51
- del_eol . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 50, 57
- del_line . . . . . . . . . . . . . . . . . . . . . . . . . 49, 50, 57
- del_word_lt . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
- del_word_rt . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
- delete_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
- detab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1, 80
- display_file . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
- down_page . . . . . . . . . . . . . . . . . . . . . . . . 35, 68, 112
- dup_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
- edit_file . . . . . . . . . . . . . . . . . . . . . . 58, 61, 83, 111
- emacs_yank . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 56
- end_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
- end_macro . . . . . . . . . . . . . . . . . . . . . . . . . . . 65, 67
- entab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1, 80
- exec_chess . . . . . . . . . . . . . . 79, 82, 88, 89, 108, 109, 135
- exec_command . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
- extend_mark . . . . . . . . . . . . . . . . . . . . . . . . . . 52, 54
- fcase_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
- file . 1, 2, 4, 9-11, 13-15, 17-19, 21-25, 28-33, 35, 36, 40-47, 50,
- 52-55, 57-59, 61, 62-64, 66-71, 74-81, 83, 87-89, 107-112,
- 114, 116, 117, 120-126, 134-136
- file_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
- file_autoindent . . . . . . . . . . . . . . . . . . . . . . . . . 121
- file_bspace . . . . . . . . . . . . . . . . . . . . . . . . . 121, 126
- file_changes . . . . . . . . . . . . . . . . . . . . . . . . . . 121
- file_cmode . . . . . . . . . . . . . . . . . . . . . . . . . 121, 126
- file_column . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
- file_id_no . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
- file_matching . . . . . . . . . . . . . . . . . . . . . . . . . . 122
- file_name . . . . . . . . . . . . . . . . . . . 107, 111, 121-123, 134
- file_new . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 122
- file_number . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
- file_path . . . . . . . . . . . . . . . . . . . . . . . 107, 123, 134
- file_rmargin . . . . . . . . . . . . . . . . . . . . . . . . . . 123
- file_smart_tabs . . . . . . . . . . . . . . . . . . . . . . . . . 123
- file_tabsize . . . . . . . . . . . . . . . . . . . . . . . . . . 124
- file_timed . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
-
- Bingo 3.10 Reference Manual
- 141
-
-
-
-
- file_w_height . . . . . . . . . . . . . . . . . . . . . . . . . . 124
- file_w_left . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
- file_w_top . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
- file_w_width . . . . . . . . . . . . . . . . . . . . . . . . . . 124
- file_wordwrap . . . . . . . . . . . . . . . . . . . . . . . . . . 124
- file_x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
- file_y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
- fill_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
- get_char . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
- get_curr_text . . . . . . . . . . . . . . . . . . . . . . . . . . 114
- get_fname . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
- get_str . . . . . . . . . . . . . . . . . . . . . . . . . . . 113, 134
- get_text . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
- get_yesno . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
- getkey . . . . . . . . . . . . . . . . . . . . . . 107-109, 115, 134
- global . . . . . . . . 41, 42, 44, 57, 78, 79, 88, 92, 105, 117, 135
- help . . . . . . . . 3, 5, 7, 10, 29, 34, 36, 58, 64, 76, 89, 94, 115
- indent_down . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
- indent_tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
- indent_up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
- info . . . . . . . . . . . . . . . . . . . 4, 29, 36, 45, 46, 55, 64
- insert_tab . . . . . . . . . . . . . . . . . . . . . . . . . . 44, 49
- isearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
- isearch_files . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
- itoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
- jump . . . . . . . . . . . . . . . . . . . . . . . . . . . 58, 68-70
- jump_mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
- key . 10, 11, 15-21, 23, 27-29, 33, 34, 36, 44, 64-67, 77, 79, 82, 85,
- 88, 107, 109, 110, 112, 115, 119, 131, 135
- key_set_load . . . . . . . . . . . . . . . . . . . . . . . . . 15, 67
- key_set_save . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
- KEYCFG . . . . . . . . . . . 10, 15, 19-21, 33, 58, 66, 85, 107, 108
- KEYINFO . . . . . . . . . . . . . . . . . . . . . . . . . . . 21, 108
- last_error . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
- lcase_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
- line_mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
- load_file . . . . . . . . . . . . . . . . . . . . . . . . . 18, 19, 61
- load_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
- look_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
- main_menu . . . . . . . . . . . . . . . . . . . . . . . . . . . 27, 64
- mark_last_found . . . . . . . . . . . . . . . . . . . . . . . . . . 79
- mark_word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
- match_delim . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 82
- memcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
- modify_save . . . . . . . . . . . . . . . . . . . 18, 61, 62, 107, 134
- modify_save_all . . . . . . . . . . . . . . . . . . . . . . . . 18, 62
- Mouse . . . . . . . . 1, 2, 15, 17, 20, 24, 27, 33-37, 42, 45, 70, 127
- mouse_scroll . . . . . . . . . . . . . . . . . . . . . . . . . 34, 70
- msg . . . . . . . . . . . . . . . 96, 97, 103, 107-109, 116, 117, 134
- name_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 55
- new_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
-
- Bingo 3.10 Reference Manual
- 142
-
-
-
-
- next_error . . . . . . . . . . . . . . . . . . . . . . . . 18, 58, 59
- next_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
- next_word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
- one_recognize . . . . . . . . . . . . . . . . . . . . . . . . . 87, 89
- onekey_def . . . . . . . . . . . . . . . . . . . . . . . . . . 65, 66
- paste . . . . . . . . . . . . . . . 1, 24, 28, 43, 48, 52-58, 60, 127
- paste_kill . . . . . . . . . . . . . . . . . . . . . . 53, 56, 58, 60
- paste_replace . . . . . . . . . . . . . . . . . . . . . . . . . 52, 54
- pick_exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
- pick_file . . . . . . . . . . . . . . . . . . . . . . . . . . 112, 116
- place_mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
- point_mark . . . . . . . . . . . . . . . . . . . . . . . . . . 34, 54
- prev_error . . . . . . . . . . . . . . . . . . . . . . . . . . 58, 59
- prev_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
- prev_word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
- print_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
- put_char . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
- put_text . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
- put_text_curr . . . . . . . . . . . . . . . . . . . . . . . . . . 116
- query_quote . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
- quit . . . . . . . . . . . . . . . . . . . . 29, 45, 61, 62, 79, 136
- quit_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
- reform_para . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 81
- rename_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
- repeat . . . . . . . . . . . . . . 2, 5, 24, 65, 77, 82, 85, 89, 101
- repeat_last . . . . . . . . . . . . . . . . . . . . . . . . . 85, 89
- replace . . . 1, 18, 24, 41, 52, 54, 57, 75-79, 88, 111, 117, 128, 136
- report_bsize . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
- restore_line . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
- rotate_kill . . . . . . . . . . . . . . . . . . . . . . . . . . 58, 60
- run . . . . 10, 11, 19, 22, 23, 38, 67, 87, 89, 107-110, 117, 134-136
- run_macro_file . . . . . . . . . . . . . . . . . . . . . . . . . . 67
- save_all . . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 62
- save_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
- save_settings . . . . . . . . . . . . . . . . . . . . . . . 23, 25, 40
- scrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
- scroll_down . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
- scroll_left . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
- scroll_right . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
- scroll_up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
- search . . . . 1, 18, 19, 24, 30, 41, 57, 75-79, 82, 86, 88, 128, 136
- search_apply . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
- send_ff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
- send_lf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
- send_sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
- setup_err_parse . . . . . . . . . . . . . . . . . . . . . . 18, 58, 59
- sformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
- shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72, 73
- shift_block . . . . . . . . . . . . . . . . . . . . . . . . . . 57, 81
- show_recognize . . . . . . . . . . . . . . . . . . . . . . . . . . 64
- single_key_load . . . . . . . . . . . . . . . . . . . . . . . . . . 67
-
- Bingo 3.10 Reference Manual
- 143
-
-
-
-
- single_key_save . . . . . . . . . . . . . . . . . . . . . . . . 66, 67
- snap_to_mouse_xy . . . . . . . . . . . . . . . . . . . . . . . 34, 70
- sort_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
- str . . . . . . . . . . . . . . . . . . . . . 112, 113, 115, 119, 134
- strcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
- strcmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
- strcpy . . . . . . . . . . . . . 95-97, 104, 107, 115, 118, 119, 134
- strip_highbit . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
- strlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
- strndx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
- swap_buf_and_block . . . . . . . . . . . . . . . . . . . . . . . . 55
- swap_execute . . . . . . . . . . . . . . . . . . 18, 72, 86, 112, 119
- swap_shell . . . . . . . . . . . . . . . . . . . . . . . . . . 72, 73
- switch_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
- sys_autoindent . . . . . . . . . . . . . . . . . . . . . . . . . 125
- sys_autostrip . . . . . . . . . . . . . . . . . . . . . . . . . . 125
- sys_autotrail . . . . . . . . . . . . . . . . . . . . . . . . . . 125
- sys_backups . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
- sys_bounce . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
- sys_bspace . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
- sys_cmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
- sys_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
- sys_delete . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
- sys_extensions . . . . . . . . . . . . . . . . . . . . . . . . . 126
- sys_fcount . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
- sys_inmacro . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
- sys_insmode . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
- sys_matching . . . . . . . . . . . . . . . . . . . . . . . . . . 127
- sys_mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
- sys_rdefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
- sys_recording . . . . . . . . . . . . . . . . . . . . . . . . . . 128
- sys_rmargin . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
- sys_rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
- sys_sdefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
- sys_smart_tabs . . . . . . . . . . . . . . . . . . . . . . . . . 128
- sys_tabsize . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
- sys_timed . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
- sys_word_delim . . . . . . . . . . . . . . . . . . . . . . . . . 129
- sys_wordwrap . . . . . . . . . . . . . . . . . . . . . . . . . . 129
- sys_zoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
- text recognition . . . . . . . . . . 1, 24, 47, 64, 87, 89, 123, 128
- threekey_def . . . . . . . . . . . . . . . . . . . . . . . . . 65, 66
- time_stamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
- toggle_autoindent . . . . . . . . . . . . . . . . . . . . . . . . . 50
- toggle_box_draw . . . . . . . . . . . . . . . . . . . . . . . . . . 85
- toggle_cmode . . . . . . . . . . . . . . . . . . . . . . . . . 40, 50
- toggle_display . . . . . . . . . . . . . . . . . . . . . . . . . . 88
- toggle_ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
- toggle_wrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
- top_of_block . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
- top_of_file . . . . . . . . . . . . . . . . . . . . . . . . . 69, 111
-
- Bingo 3.10 Reference Manual
- 144
-
-
-
-
- top_of_screen . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
- twokey_def . . . . . . . . . . . . . . . . . . . . . . . . . . 65, 66
- ucase_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
- undefine_key . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
- undo . . . . . . . . . . . . . . . . 1, 2, 6, 24, 47, 53, 56, 57, 129
- unkill . . . . . . . . . . . . . . . . . . . . 24, 49, 53, 56-58, 60
- unmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54, 79
- up_page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
- update_display . . . . . . . . . . . . . . . . . . . . 116, 117, 120
- valid_name . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
- version 1, 2, 4-6, 8, 13, 14, 18, 23, 31, 42, 46, 57, 58, 61, 64, 72,
- 74, 75, 77, 84, 85, 87, 129, 135-138
- version_info . . . . . . . . . . . . . . . . . . . . . . . . . 4, 64
- vertical_mark . . . . . . . . . . . . . . . . . . . . . . . . . . 54
- view_screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
- virtual memory . . . . . . . . . . . 1, 2, 11, 13, 14, 24, 38, 48, 57
- window_bottom . . . . . . . . . . . . . . . . . . . . . . . . . 18, 84
- window_close . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
- window_edit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
- window_load . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
- window_max . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 84
- window_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
- window_one . . . . . . . . . . . . . . . . . . . . . . . . 18, 83, 84
- window_previous . . . . . . . . . . . . . . . . . . . . . . . . 18, 84
- window_resize . . . . . . . . . . . . . . . . . . . . . . 18, 84, 115
- window_split . . . . . . . . . . . . . . . . . . . . . . . . . 18, 83
- window_top . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
- window_vertical . . . . . . . . . . . . . . . . . . . . . . . . . . 83
- window_zoom . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 84
- word_count . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
- write_profile . . . . . . . . . . . . . . . . . . . . . . . . 89, 109
- ws_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
- zap_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bingo 3.10 Reference Manual
- 145
-
-