
- what about quick logon with no menu 0?
- what's wrong with the doors?
- finish up smenugen.slt -> write menus  "QDMENU.ZIP"
  write docs ie set expert OFF, etc.
- include BIMOD.ASC in the distribution zip
- default to 1 directory when starting object edit?

- (??) +/- level should move user to next *defined* level
- fix user capture name to be something better ??
  use last name if possible
- do something better to log quick logons
- put "List info" into separate script?
- "del" on empty line in editor -> delete line
- hangup causes weird message in usage log; implement manually ?
  check out total time online problem

- pass default protocol to editor for msg uploads?

- if no dirs defined, use _up_ and _down_
- Fix up: menu editor (esp. list menus)
  that stupid lister... 255 menus
  Ŀ
   127. The 127th menu!           
   128.  ...                      

  3 pages: 1-59, G
  use pgup, pgdn
  box from 1 to 22
  1-20    21-40   41-60   61-80   81-100
  101-120 121-140 141-160 161-180 181-200
  101-120 121-140 141-160 161-180 181-200
  201-220 221-240 241-256


- protocol editor (add names?)

- Editor:
  - Help screen erasing-> need better way?

- XHost:
  - implement (maybe/wait Squish) message downloading (?) -> door
  - reading: how to resume on end of messages? (S)ince?

-  find Squish message base format
        convert message base to sq format ?
       p: easy echomail, everything already exists
       c: might be very complicated, slow w/my setup
          forces user to get squish too, even w/o echomail
       a: write converter <-> squish...?

/-----------------------------------------------------------------------------/
Sysbyte:

    1: Lock rate
    2: Direct Connect
    4: Capture all calls
    8: Closed system
   16: Display On
   32: Exit after call
   64: Sound ON
  128:       OFF
  256: Allow real names
  512: No file lists
 1024: Don't test uploads
 2048: No user records
 4096: Use file_id.diz
/-----------------------------------------------------------------------------/
Protocol Control Byte

1:   Active
2:   Batch
4:   External
8:   Bimodem Intercommunications Log (instead of DSZLOG)
/-----------------------------------------------------------------------------/
Conference Data file:

Access Level[1] Flags[1] Conf_Status[1] ConfName[20] Path[45]
FileDirNum[1] TextFileNum[1] DoorNum[1] MaxMsgs[2] MaxDays[1]
Reserved[3] Endbyte[1] Cr/Lf[2]

{[80]}

Status:     AEPM    All messages private (NCOP), Echo area (NOP), Private conf,
        00000000    Messages available

File directories in            nnn.DIR
Text files                     nnn.TXT
Doors                          nnn.DOR

 dir    [80]
 Level[1] Flag[1] Descr[30] Path[45] endbyte[1] [^M^J]
 - text files  [80]
 Level[1] Flag[1] Descr[30] Path[45] endbyte[1] [^M^J]
 - door  [131]
 Level[1] Flag[1] Descr[30] Path[45] endbyte[1] [^M^J]    -> 80
 Param[45] Time[2] Control[1] [^001] [^M^J]               -> 51

 [Control = 00000000]
               AIIIS      Ansi, Info:3, Script = 1 | Prog = 0

 bit 1 ON if Door is a SALT script else EXE or COM
 bit 2 ON if ANSI mode is required
 bit 4 ON if DOOR.SYS is needed
 bit 8 ON if DORINFO1.DEF is needed
 bit 16 ON if PCBOARD.SYS is needed

 32 and on -> for scripts CVT-1, CVT-2, CVT-3
/-----------------------------------------------------------------------------/

All conferences in CONFS.DAT,
Messages in     xxx.MSG,
                xxx.IDX.

Read pointers: conf 1-40 in USERS.DAT

NOP:           conf 40-999 in READ.PTR
     
              READ.PTR format:
     
              active[1] bitmap[variable] last_reads[(high_conf-40) * 2]
     
              bitmap size: (high_conf - 40)/8, + 1 if (high_conf%8 > 0)
                            * 2
              The record length is known once the highest conference is set.
     
     
User file packing: delete user, set his active flag in READ.PTR to 0

//READ.PTR packing:  a user who joins an extended conference for the first
//                   time will have a record with active = 0 allocated to him;
//                   active is then set to 1, and all other bytes to 0.
//

/-----------------------------------------------------------------------------/
Levels

defined in LEVELS.DAT

510 bytes index (2 bytes/level)
so beginning of definitions are at 255*2 = 510

    header: index[510]
each level: descr[30] time[2] bytes[4] ratio[1] = [35]
max size: 510 + 255 * 35 = 9435 bytes

/-----------------------------------------------------------------------------/
 Message Index File format:

 - Header [128] reserved [unused for now]

 - Each message:
   Status[1] Number_Chars[2] Date_Chars[4] Start_Chars[4] End_Chars[4]
   RefChars[2] To[26] From[26] Subject[26] Res[36]

   Overall length:  128 bytes/message + 128 header bytes

- message format: status byte    UERHDP  Echo, Replies, Has read, Deleted, Pvt
                               00000000  U=Read unavailable
                                 268421
/-----------------------------------------------------------------------------/
File List format:

In all: Info, CR/LF
file[12] spc[2] date[8] spc[1] size[8] spc[2] descr[<=45] CR/LF[2]
12345678.ZIP  12-12-93 12345678  Descr blah blah blah(^P)next line ... 10 lines
                                 1234567890123456789012345678901234567890123456
4 tabs 1 space                  |next lines
max 512 bytes/file
/-----------------------------------------------------------------------------/
Script Return Codes

1 : End of Call
2 : Exit to Terminal
3 : Exit to DOS

/-----------------------------------------------------------------------------/
User File

Record length = 320

 Status_Char[1] Alias[26] Password[13] Level[1] Flags[1] Real_Name[26]
 area_code[2] Phone[4] City_State[25] Country[31] unused[3]
 Protocol_Char[1] byte_Chars[4] UloB_Chars[4] DloB_Chars[4]
 UloF_chars[2] DloF_Chars[2] unused[8] Last_on_Chars[4]
 Time_left_chars[2] Total_Calls[2] Comment[30] scanbitmap[5]
 regbitmap[5] longptr[4] readptr[80] reserved[30]

// for later, part of reserved: page_length[1] colors[8]
// maybe: # of messages written, read.

 Status Char includes:

    C AXsBS ( xxxxxxx, Capture, xxxxxx, ANSI, Xpert, scan on, Blacklist, Status)
   00000000
/-----------------------------------------------------------------------------/

 Menu editor: Pick Menu/Delete Menu
              Change name
              Change Commands

 Menus:  MENU.DEF
         menu 0 is for quick logons/protected by syspass
         menu 1 is main menu
         Max 20 global commands
         Max 46 commands/menu
             25 230/5 -> 46
         global[100] menu0[255] menu1[255] etc.

         header: name[25]
         records: level[1] flags[1] key[1] command[2]
                  command[0] is 0-255 for action
                         [1] is 0-255 passed numerical option

! = Accepts arguments via command[1]
# = Supports numbered access

1       Send menu               31      Choose archive
2       Goodbye                 32      Delete from archive
3       Chat                    33      List files in archive
4       Comment                 34      Delete EXTRACT.ext
5                               35      Extract file from selected archive
6                               36      Add to EXTRACT.ext
7  !    Goto menu               37      Type file inside archive
8                               38      Contents of EXTRACT.ext
9  !    Run script
10      Shut XHost down

11 !#   Text Files              41 !#   List Files
12 !#   Doors                   42      New Files
                                43      Locate string in FILES.LST
14      Read Log                44      Upload
15      DOS Command             45      Download

16      Read messages           46 !#   Raw (DOS) directory
17      Write message           47      Add files to list
                                48      Move file
19                              49
20                              50

21      List conferences        51
22  #   Scan conferences        52
23 !#   Join conference         53
24                              54
25                              55      Change PW
26                              56      Change default protocol
27                              57      set scan prompt on/off
28                              58      set conferences to scan
29                              59      ANSI on/off
30                              60      expert mode on/off
                                61      display user info
                                62      set page length

/-----------------------------------------------------------------------------/
ARCS.CFG format:

     .[Extension]
     [List command]
     [Extract]
     [Add]
     [Delete]
     [Test]
     .[Next Extension]
     ...
/-----------------------------------------------------------------------------/
 Ideas for later
 

- "search paths" list for duplicates: could implement with flag for each
   conference... ie search on uploads y/n
- "de/select all" command for conferences
- work on user editor... change to full screen data, pop-up user list
- Remote User Editor as door
- access objects of Conf. 1 if n/a in conference
- bad uploads { don't delete files that fail arctest on/off
         { what to do with aborted/bad files... send to private dir, delete, ?
- saving host status to file
- use RING detection instead of auto-answer mode
- Conference: initial menu

- Callback/Ringback?
- file tagging? -> would have to tighten checking on list0
- exclude directories?
- MNP/rel/arq detection? no idea how... CARRIER, PROTOCOL, CONNECT
- display different menus for different levels
- ANSI on/off for text files
- Security on local computer: Allow keyboard lock until syspass
- Commands to list all users, display user info to sysop
- don't keep usage log on/off

- user list searching for messages
- Editor: - Other commands:   dump to disk

- User Editor:  - what to do about > 200 users?
                  o load in multiple phases?
                    would have to revamp loading sequence,
                    allow command to 'load more users'.
                    put loading into function
                    save fpos once 200 users are loaded
                    use +/- load more users/go back
                - allow 'edit one user' mode, remote editing
                  remote: push rec_no, then: allow List users short/long
                          commands: add user, edit one user { name, city,
                                                        level, bytes, time,
                                                        flags }
                                    delete user

- XHost:  Help system & custom prompts? go for help only...
          extended confs -> already support somewhat
        // bitmapsize
        // defined as:

        //     active[1] bitmap[variable] last_reads[(high_conf-40) * 2]
        //
        //     bitmap size: (high_conf - 40)/8, + 1 if (high_conf%8 > 0)
        //                   * 2
        //     therefore size = 1 + bitmap size + (high_conf-40)*2

- Events: what? how? quoi? merde!
          set start, end time, sliding y/n

          cycle through all events, get next one
          check time remaining vs time of event
          allow different days for events (use bitmap)
               -> allow every call
               -> would need code to calc day off week

- Colors: can get away with 1 byte/color
          biggest problem is color-change routine,
          and basic data structure... colors[7] or color1...8?

          puts("1. Error messages", 1);
          puts("2. Titles", 2);
          puts("3. Action in progress", 3);
          puts("4. General messages", 4);
          puts("5. Prompts", 5);
          puts("6. Highlights", 6);
          puts("7. User Input", 7);
          puts("8. Help messages", 8);

     each color: need 1 byte: 0-77, 128 is bold on/off

     ansiseq = "^[[3x;4x;xm";
     color = subchr(colors, cnum);
     setchr(ansiseq, 8, color/128);
     setchr(ansiseq, 3, (color&127)/10 + 48);
     setchr(ansiseq, 6, (color&127)%10 + 48);

     can't be 0... would be black on black.
     1 warn         ie Bad command
     2 title        ie Raw Dir
     3 action       ie Searching for "Text"
     4 message      ie No new messages
     5 query        ie before all input_strn prompts
     6 highlights   in prompts/queries; ie search, etc.
     7 input        in input_strn
     8 help

-  XHost: store status on file
          loadinfo is done by default, do saveinfo...
          would need to save: startup[4], calls[4], caller[25], duration[4]
                              call_date[4], status[1]
          and system info: total users, {messages, uploads, downloads}?

-  Add to Sysbyte:  when to reset, hangup on Alt-X
                    (never,    at startup, overnight)
                    (no,       yes,        prompt)
                     both off, first on,   second on

-  Change wildcard processing? by skipping check in FILES.LST, we could yes/no
                               each file...

-  log aborts and cps of transfers
-  sending messages to other confs: tedious code

/-----------------------------------------------------------------------------/
New Intercommunication Log for Bimodem

  1 -   1 Short Int      Day transfer completed
  2 -   2 Short Int      Month transfer completed
  3 -   4 Integer        Year transfer completed
  5 -   5 Short Int      Hundredths of seconds transfer completed
  6 -   6 Short Int      Second transfer completed
  7 -   7 Short Int      Minute transfer completed
  8 -   8 Short Int      Hour transfer completed
->  9 -   9 Character      Direction (S=Send,R=Receive)
-> 10 -  88 Character      Path[,Password]
-> 89 -  89 Character      Status (Blank=Successful,D=Duplicate,A=Aborted)
-> 90 - 169 Character      Description
170 - 171 Integer        Characters per Second
172 - 231 Character      Registered ID
232 - 239 Character      Encrypted Phone #
240 - 241 Integer        # of errors during transmission
242 - 243 Integer        File Date
244 - 245 Integer        File Time
-> 246 - 249 Long Integer   File Size
250 - 256 Character      Reserved for future use
/-------/
Simple setup

1       Send menu
2       Goodbye
3       Chat
10      Shut XHost down
11 !#   Text Files
14      Read Log
15      DOS Command
44      Upload
45      Download
46 !#   Raw (DOS) directory
55      Change PW
56      Change default protocol
59      ANSI on/off
60      expert mode on/off

