Record work

This commit is contained in:
mysticbbs 2012-03-25 12:43:12 -07:00
parent a4ab7a1990
commit 74156a71c0
7 changed files with 372 additions and 337 deletions

View File

@ -4089,3 +4089,7 @@
Upgrade option. Upgrade option.
+ Added CARDINAL (Unsigned 32-bit Integer) type to MPL + Added CARDINAL (Unsigned 32-bit Integer) type to MPL
+ MPLC and MIDE now calculate the error position in the file (line and
column) after the error has occured. This takes a little bit of time
but it ensures that the column/line error position is accurate.

View File

@ -14,7 +14,7 @@
# Note: the DF MCI code can also be used to display files in place of # Note: the DF MCI code can also be used to display files in place of
# prompts. # prompts.
000 |DFpreuser |CR|01[|10þ|01] |09Enter your user name: 000 |DFpreuser |CR|01[|10þ|01] |09Enter your user name: |XX
; Log in as new user prompt ; Log in as new user prompt
001 |CR|12Create an account with this BBS? |11 001 |CR|12Create an account with this BBS? |11
; User's password ; User's password
@ -22,17 +22,17 @@
; User login: Invalid PW ; User login: Invalid PW
003 |CR|12Invalid password. 003 |CR|12Invalid password.
; Displayed IMMEDATELY when a user connects if the password is set ; Displayed IMMEDATELY when a user connects if the password is set
004 |CRSystem Password: 004 |CRSystem Password: |XX
; New user password prompt ; New user password prompt
005 |CRNew User Password: 005 |CRNew User Password: |XX
; New user login: first and last name prompt ; New user login: first and last name prompt
006 |01[|10þ|01] |09Enter your full REAL name -> 006 |01[|10þ|01] |09Enter your full REAL name -> |XX
; Displayed if user doesn't enter a two word name. ; Displayed if user doesn't enter a two word name.
007 |CR|12Please enter your first AND last name!|CR 007 |CR|12Please enter your first AND last name!|CR
; Displayed if user enters a new user name that already exists. ; Displayed if user enters a new user name that already exists.
008 |CR|12User already exists.|CR 008 |CR|12User already exists.|CR
; New user login: Enter your handle/alias prompt ; New user login: Enter your handle/alias prompt
009 |01[|10þ|01] |09Enter your alias/handle -> 009 |01[|10þ|01] |09Enter your alias/handle -> |XX
; New user login: Enter your address prompt ; New user login: Enter your address prompt
010 |CR|03Enter your street address.|CR|09: 010 |CR|03Enter your street address.|CR|09:
; New user login: Enter your city/state ; New user login: Enter your city/state
@ -44,21 +44,21 @@
; New user login: Enter your data phone number ; New user login: Enter your data phone number
014 |CR|03Enter your data phone number:|CR|09: 014 |CR|03Enter your data phone number:|CR|09:
; New user login: Enter your birthdate. ; New user login: Enter your birthdate.
015 |01[|10þ|01] |09Enter your birthdate |01[|10|UF|01]|09 -> 015 |01[|10þ|01] |09Enter your birthdate |01[|10|UF|01]|09 -> |XX
; New user login: Gender (M)ale, (F)emale ; New user login: Gender (M)ale, (F)emale
016 |01[|10þ|01] |09Are you |01[|10M|01]|09ale or |01[|10F|01]|09emale -> 016 |01[|10þ|01] |09Are you |01[|10M|01]|09ale or |01[|10F|01]|09emale -> |XX
; New user login: Password prompt ; New user login: Password prompt
017 |DFprepass |CR|01[|10þ|01] |09Password -> 017 |DFprepass |CR|01[|10þ|01] |09Password -> |XX
; Displayed if user enters a password shorter than 4 chars. ; Displayed if user enters a password shorter than 4 chars.
018 |CR|12Password must be at least 4 characters long!|DE|DE|DE 018 |CR|12Password must be at least 4 characters long!|DE|DE|DE
; New user login: PW verification prompt ; New user login: PW verification prompt
019 |01[|10þ|01] |09Again -> 019 |01[|10þ|01] |09Again -> |XX
; New user login: Passwords do not match ; New user login: Passwords do not match
020 |CR|12Passwords do not match!|DE|DE|DE 020 |CR|12Passwords do not match!|DE|DE|DE
; New user login: Saving/creating new user account ; New user login: Saving/creating new user account
021 |CR|01[|10þ|01] |09Saving new account information|01... 021 |CR|01[|10þ|01] |09Saving new account information|01...
; System pause prompt ; System pause prompt
022 !go-pawz 022 |15þ|07þ|08þ|09|17Ý|15 Pause |09Þ|16|08þ|07þ|15þ
; Chat call - reason for chat ; Chat call - reason for chat
023 |CR|14Why do you wish to chat with the Sysop?|CR|09: 023 |CR|14Why do you wish to chat with the Sysop?|CR|09:
; Paging Sysop text ; Paging Sysop text
@ -80,7 +80,7 @@
; User list footer &1 = Total # of users listed ; User list footer &1 = Total # of users listed
031 |09|$D73Ä|CR |01[|10þ|01] |09Users: |07|$R46|&1 |PA 031 |09|$D73Ä|CR |01[|10þ|01] |09Users: |07|$R46|&1 |PA
; User list search string ; User list search string
032 |CR|01[|10þ|01] |09Enter Search String |01(|07Enter|01/|07All|01)|09: 032 |CR|01[|10þ|01] |09Enter Search String |01(|07Enter|01/|07All|01)|09: |XX
; File base list header ; File base list header
033 |CL|09Ú|$D77Ä|01¿|CR|09³|17 ± |15File Base Listing|$L56|FG |01|16³|CR|09À|01|$D77ÄÙ|CR |10A|02rea |10F|02ile |10B|02ase |10N|02ame |10A|02rea |10F|02ile |10B|02ase |10N|02ame|CR |09|$D77Ä 033 |CL|09Ú|$D77Ä|01¿|CR|09³|17 ± |15File Base Listing|$L56|FG |01|16³|CR|09À|01|$D77ÄÙ|CR |10A|02rea |10F|02ile |10B|02ase |10N|02ame |10A|02rea |10F|02ile |10B|02ase |10N|02ame|CR |09|$D77Ä
; File base listing format: ; File base listing format:
@ -89,7 +89,7 @@
; File upload testing FAILED text ; File upload testing FAILED text
035 Failed 035 Failed
; File base listing prompt. ; File base listing prompt.
036 |09|$D77Ä|CR |01[|10þ|01] |09Select file base |01[|10?|01/|10List|01]|09: 036 |09|$D77Ä|CR |01[|10þ|01] |09Select file base |01[|10?|01/|10List|01]|09: |XX
; Displayed if there are no available file bases ; Displayed if there are no available file bases
037 |CR|12There are no available file bases 037 |CR|12There are no available file bases
; Displayed if user hasn't selected a file base ; Displayed if user hasn't selected a file base
@ -126,7 +126,7 @@
; Displayed if batch queue is empty ; Displayed if batch queue is empty
052 |CL |15There are no files in your batch queue 052 |CL |15There are no files in your batch queue
; &1 = number of files in batch queue ; &1 = number of files in batch queue
053 |CR |09Delete which |01(|071|01-|07|&1|01)|09: 053 |CR |09Delete which |01(|071|01-|07|&1|01)|09: |XX
; Batch removed from queue &1 = Filename &2 = Size ; Batch removed from queue &1 = Filename &2 = Size
054 |CR|15|&1 |08(|07|&2 bytes|15|08) |07removed from queue. 054 |CR|15|&1 |08(|07|&2 bytes|15|08) |07removed from queue.
; File upload PASSED text ; File upload PASSED text
@ -149,8 +149,8 @@
063 |CR|12Cannot download files in local mode!|DE|DE|DE 063 |CR|12Cannot download files in local mode!|DE|DE|DE
064 |01[|10þ|01] |09Search all file groups? |11 064 |01[|10þ|01] |09Search all file groups? |11
065 |CR|12Start your transfer now. 065 |CR|12Start your transfer now.
066 UNUSED 066 |CR|14File area "|FB" is password protected.|CR|09Password: |XX
067 UNUSED 067 |CR|12Access denied.
068 |CR|12You do not have access to upload here! 068 |CR|12You do not have access to upload here!
069 |CR|12Illegal filename.|DE|DE|DE 069 |CR|12Illegal filename.|DE|DE|DE
070 |CR|14Searching for duplicate files ... 070 |CR|14Searching for duplicate files ...
@ -192,7 +192,7 @@
; &1 = base number &2 = base name &3 = scan base? (Yes or No) ; &1 = base number &2 = base name &3 = scan base? (Yes or No)
093 |07|$R04|&1|15|$R03|&3 |07|$R29|&2 093 |07|$R04|&1|15|$R03|&3 |07|$R29|&2
094 |CR|12There are no available message bases! 094 |CR|12There are no available message bases!
095 |09|$D77Ä|CR |09Selection |01[|10##|01]|09, |01[|10##|01-|10##|01]|09, |01[|10?|01/|10List|01]|09, or |01[|10Q|01]|09uit: 095 |09|$D77Ä|CR |09Selection |01[|10##|01]|09, |01[|10##|01-|10##|01]|09, |01[|10?|01/|10List|01]|09, or |01[|10Q|01]|09uit: |XX
; For strings 096 - 099: &1 = message base name ; For strings 096 - 099: &1 = message base name
096 |CR |11|&1 will NOT be scanned in QWK packets!|CR 096 |CR |11|&1 will NOT be scanned in QWK packets!|CR
097 |CR |11|&1 will be scanned in QWK packets!|CR 097 |CR |11|&1 will be scanned in QWK packets!|CR
@ -202,9 +202,9 @@
; Message base format list: ; Message base format list:
; &1 = base number &2 = base name &3 = total messages ; &1 = base number &2 = base name &3 = total messages
101 |15|$L05|&1 |07|$R32|&2 101 |15|$L05|&1 |07|$R32|&2
102 |09|$D77Ä |CR |09Select Message Base |01[|10?|01/|10List|01]|09: 102 |09|$D77Ä |CR |09Select Message Base |01[|10?|01/|10List|01]|09: |XX
103 UNUSED 103 |CR|14Message area "|MB" is password protected.|CR|09Password: |XX
104 UNUSED 104 Access denied.
105 |CR|12You don't have access to post here! 105 |CR|12You don't have access to post here!
106 |CR|12Use the full screen editor? |11 106 |CR|12Use the full screen editor? |11
107 |01[|10þ|01] |09Saving Message|01... 107 |01[|10þ|01] |09Saving Message|01...
@ -219,13 +219,13 @@
; E-mail reader prompt ; E-mail reader prompt
115 |CR|09(A)gain, (P)revious, (N)ext, (R)eply, (D)elete, (J)ump, (Q)uit? 115 |CR|09(A)gain, (P)revious, (N)ext, (R)eply, (D)elete, (J)ump, (Q)uit?
; Message read prompt. &1 = Current Msg # &2 = Total Messages ; Message read prompt. &1 = Current Msg # &2 = Total Messages
116 !to-prmpt MESSAGE 116 |CR (|&1 of |&2) Reading Messages (?/Help): |XX
117 |CR|12Delete this mail? |11 117 |CR|12Delete this mail? |11
118 |CR|15End of messages. 118 |CR|15End of messages.
; Post message TO: ; Post message TO:
119 |CR|09To: 119 |CR|09To: |XX
; post message SUBJ: ; post message SUBJ:
120 |CR|09Subject: 120 |CR|09Subject: |XX
; Files still in batch. &1 = # of files ; Files still in batch. &1 = # of files
121 |CR|BE|14There are |15|&1 |14file(s) in your batch queue.|CR|12Download them now? |11 121 |CR|BE|14There are |15|&1 |14file(s) in your batch queue.|CR|12Download them now? |11
122 |09Saved 122 |09Saved
@ -255,7 +255,7 @@
; Who's online list format: ; Who's online list format:
; &1 = node number &2 = user name &3 = action &4 = location ; &1 = node number &2 = user name &3 = action &4 = location
; &5 = baud rate &6 = gender &7 = age &8 = available? ; &5 = baud rate &6 = gender &7 = age &8 = available?
139 |07|$R02|&1 |15|$R14|&2|$R30|07|&3 139 |07|$R05|&1 |15|$R26|&2 |12|&3
; Who's online list footer ; Who's online list footer
140 |09|$D77Ä|CR |PA 140 |09|$D77Ä|CR |PA
; Last 10 callers list header ; Last 10 callers list header
@ -265,23 +265,23 @@
; &6 = Baud &8 = Address &9 = Usernote &0 = Email &A-&C = Optional 1-3 ; &6 = Baud &8 = Address &9 = Usernote &0 = Email &A-&C = Optional 1-3
142 |15|$R27|&1 |07|$R25|&3 |$L04|&2 |&4 |&5 142 |15|$R27|&1 |07|$R25|&3 |$L04|&2 |&4 |&5
; Last 10 callers footer ; Last 10 callers footer
143 |09|$D77Ä|CR|PA 143 |09 |$D77Ä|CR|PA
; Message from another node: ; Message from another node:
; &1 = Message from &2 = Node user is logged in to. ; &1 = Message from &2 = Node user is logged in to.
144 |CR|14Message from |&1 on node |&2:|10 144 |CL|09|17 ° |15Message from |14|&1 |15on node |14|&2|[K|03|16|CR
; Message from another node footer ; Message from another node footer
145 |CR|09NodeMsg: (R)eply or (ENTER/Continue): |15 145 |CR|09Node Message: |01[|10R|01]|09eply or |01[|10ENTER|01/|10Continue|01]|09: |15
146 |CR|09Send message to which node |01[|10?|01/|10List|01]|09: 146 |CR|09Send message to which node |01[|10?|01/|10List|01]|09: |XX
147 |CR|12No one is logged in on that node! 147 |CR|12No one is logged in on that node!
; Send message to node prompt: ; Send message to node prompt:
; &1 = receiver's name &2 = receiver's node number ; &1 = receiver's name &2 = receiver's node number
148 |CR|07Enter messsage for |15|&1 |07on node |15|&2|07: 148 |CR|07Enter messsage for |15|&1 |07on node |15|&2|07:
149 |CR|12You don't have access to this menu!|CR|CR|PA 149 |CR|12You don't have access to this menu!|CR|CR|PA
150 |CR|09Enter Menu Password: 150 |CR|09Enter Menu Password: |XX
151 |CR|09Enter your current password: 151 |CR|09Enter your current password: |XX
152 |CR|11(|031|08) |09MM/DD/YY|CR|11(|032|08) |09DD/MM/YY|CR|11(|033|08) |09YY/DD/MM|CR|CRDate Format |08-> |07 152 |CR|11(|031|08) |09MM/DD/YY|CR|11(|032|08) |09DD/MM/YY|CR|11(|033|08) |09YY/DD/MM|CR|CRDate Format |08-> |07
; &1 = def. page length ; &1 = def. page length
153 |CR|01[|10þ|01] |09Screen Pause Length |01[|10Enter|01/|10|&1|01]: 153 |CR|01[|10þ|01] |09Screen Pause Length |01[|10Enter|01/|10|&1|01]: |XX
154 |CR|11(|030|08) |09Ascii (No Color)|CR|11(|031|08) |09Ansi (Color)|CR|CR|09Graphics Mode |08-> |07 154 |CR|11(|030|08) |09Ascii (No Color)|CR|11(|031|08) |09Ansi (Color)|CR|CR|09Graphics Mode |08-> |07
; User name search ; User name search
; &1 = User's Name ; &1 = User's Name
@ -289,8 +289,8 @@
156 |CR|15User not found.|DE|DE|DE 156 |CR|15User not found.|DE|DE|DE
157 |CR|12You've reached your calls per day limit. Call back tomorrow!|CR|CR|PA 157 |CR|12You've reached your calls per day limit. Call back tomorrow!|CR|CR|PA
158 |CR|15No quote data available... 158 |CR|15No quote data available...
159 |CR|09Enter first line to quote: 159 |CR|09Enter first line to quote: |XX
160 |09Enter last line to quote : 160 |09Enter last line to quote : |XX
; Email reply: not valid user. &1=username ; Email reply: not valid user. &1=username
161 |CR|11|&1 is not a valid user on this system. 161 |CR|11|&1 is not a valid user on this system.
; &1 = maximum length of each line &2 = maximum number of lines ; &1 = maximum length of each line &2 = maximum number of lines
@ -300,7 +300,7 @@
; Line editor "backing up to line". &1 = new line number ; Line editor "backing up to line". &1 = new line number
165 |15Backing up to line |&1.|03 165 |15Backing up to line |&1.|03
; Line editor "command" prompt. ; Line editor "command" prompt.
166 |CR|09Command |01[|10?|01/|10Help|01]|09: 166 |CR|09Command |01[|10?|01/|10Help|01]|09: |XX
; Line editor "command" prompt help ; Line editor "command" prompt help
167 |CR|03(|11A|03)bort Message (|11C|03)ontinue Message (|11U|03)pload Message|CR(|11Q|03)uote Message (|11S|03)ave Message (|11H|03)elp|CR(|11T|03)itle Change 167 |CR|03(|11A|03)bort Message (|11C|03)ontinue Message (|11U|03)pload Message|CR(|11Q|03)uote Message (|11S|03)ave Message (|11H|03)elp|CR(|11T|03)itle Change
168 |CR|12Abort message? |11 168 |CR|12Abort message? |11
@ -308,9 +308,9 @@
; Archive list format: ; Archive list format:
; &1 = archive number &2 = archive name &3 = archive extension ; &1 = archive number &2 = archive name &3 = archive extension
170 |15|$R02|&1 |10|$R22|&2 |11|&3 170 |15|$R02|&1 |10|$R22|&2 |11|&3
171 |09|$D30Ä|CR|01[|10þ|01] |09Select Archive #: 171 |09|$D30Ä|CR|01[|10þ|01] |09Select Archive #: |XX
172 |CR|09Deposit how many minutes |01[|100|01-|10|TL|01]|09: 172 |CR|09Deposit how many minutes |01[|100|01-|10|TL|01]|09: |XX
173 |CR|09Withdraw how many minutes |01[|100|01-|10|TB|01]|09: 173 |CR|09Withdraw how many minutes |01[|100|01-|10|TB|01]|09: |XX
; Message group list header ; Message group list header
174 |CL|CR|$D13 |09Ú|$D54Ä|01¿|CR|$D13 |09³|17 ± |15Message Groups|$D37 |16|01³|CR|$D13 |09À|01|$D54ÄÙ|CR|$D14 |10#|02# |10M|02essage |10G|02roup |10N|02ame|07|$D24 |02A|10reas|CR|$D14 |09|$D54Ä 174 |CL|CR|$D13 |09Ú|$D54Ä|01¿|CR|$D13 |09³|17 ± |15Message Groups|$D37 |16|01³|CR|$D13 |09À|01|$D54ÄÙ|CR|$D14 |10#|02# |10M|02essage |10G|02roup |10N|02ame|07|$D24 |02A|10reas|CR|$D14 |09|$D54Ä
; Message group list format ; Message group list format
@ -318,7 +318,7 @@
175 |$D14 |07|$R04|&1 |15|$R41|&2 |12|&3 175 |$D14 |07|$R04|&1 |15|$R41|&2 |12|&3
176 |CR|12There are no available message groups. 176 |CR|12There are no available message groups.
; Message group list prompt ; Message group list prompt
177 |$D14 |09|$D54Ä|CR|$D14 |01[|10þ|01] |09Select Message Group |01[|10Enter|01/|101|01]|09: 177 |$D14 |09|$D54Ä|CR|$D14 |01[|10þ|01] |09Select Message Group |01[|10Enter|01/|101|01]|09: |XX
178 |CR|12Send E-mail to the Sysop? |11 178 |CR|12Send E-mail to the Sysop? |11
; 179-180 are System broadcast messages header/footer ; 179-180 are System broadcast messages header/footer
; &1 = User who sent system broadcast ; &1 = User who sent system broadcast
@ -333,7 +333,7 @@
; &1 = language number &2 = language description ; &1 = language number &2 = language description
183 |15|$R03|&1|14|&2 183 |15|$R03|&1|14|&2
; Language select footer ; Language select footer
184 |CR|09Select language: 184 |CR|09Select language: |XX
; Language file does not exist ; Language file does not exist
185 |CR|12Language file does not exist. 185 |CR|12Language file does not exist.
; Displayed if user's language does not exist. ; Displayed if user's language does not exist.
@ -368,7 +368,7 @@
; &1 = File base number &2 = File base name &3 = Scan? (Yes or No) ; &1 = File base number &2 = File base name &3 = Scan? (Yes or No)
201 |07|$R04|&1|15|$R03|&3 |07|$R29|&2 201 |07|$R04|&1|15|$R03|&3 |07|$R29|&2
; Select scanned file bases prompt ; Select scanned file bases prompt
202 |09|$D77Ä|CR |09Selection |01[|10##|01]|09, |01[|10##|01-|10##|01]|09, |01[|10?|01/|10List|01]|09, or |01[|10Q|01]|09uit: 202 |09|$D77Ä|CR |09Selection |01[|10##|01]|09, |01[|10##|01-|10##|01]|09, |01[|10?|01/|10List|01]|09, or |01[|10Q|01]|09uit: |XX
; &1 = File base name ; &1 = File base name
203 |CR |11|&1 will NOT be scanned in new file scan!|CR 203 |CR |11|&1 will NOT be scanned in new file scan!|CR
; &1 = File base name ; &1 = File base name
@ -376,7 +376,7 @@
; Displayed if file already exists when user trys to upload. ; Displayed if file already exists when user trys to upload.
205 File already exists. 205 File already exists.
; Displayed before running uploads processor ; Displayed before running uploads processor
206 |12þ |03Testing file for errors : 206 |12þ |03Testing file for errors : |XX
; File description input line. &1 = Line number ; File description input line. &1 = Line number
207 |09: 207 |09:
; Default file description if none entered/found. ; Default file description if none entered/found.
@ -391,7 +391,7 @@
; Lightbar file list: Access to file denied. ; Lightbar file list: Access to file denied.
212 |12File is not available.|PN 212 |12File is not available.|PN
; Read Message personal prompt. &1 = Current Msg # &2 = Total Messages ; Read Message personal prompt. &1 = Current Msg # &2 = Total Messages
213 !to-prmpt MESSAGE 213 |CR|09[|&1 of |&2] Reading Messages (?/Help): |XX
; File group list header ; File group list header
214 |CL|CR|$D13 |09Ú|$D54Ä|01¿|CR|$D13 |09³|17 ± |15File Groups|$D40 |16|01³|CR|$D13 |09À|01|$D54ÄÙ|CR|$D14 |10#|02# |10F|02ile |10G|02roup |10N|02ame|07|$D29 |02A|10reas|CR|$D14 |09|$D54Ä 214 |CL|CR|$D13 |09Ú|$D54Ä|01¿|CR|$D13 |09³|17 ± |15File Groups|$D40 |16|01³|CR|$D13 |09À|01|$D54ÄÙ|CR|$D14 |10#|02# |10F|02ile |10G|02roup |10N|02ame|07|$D29 |02A|10reas|CR|$D14 |09|$D54Ä
; File group list format ; File group list format
@ -400,7 +400,7 @@
; Displayed if there are no available file groups ; Displayed if there are no available file groups
216 |CR|12There are no available file groups. 216 |CR|12There are no available file groups.
; File group list prompt ; File group list prompt
217 |$D14 |09|$D54Ä|CR|$D14 |01[|10þ|01] |09Select File Group |01[|10Enter|01/|101|01]|09: 217 |$D14 |09|$D54Ä|CR|$D14 |01[|10þ|01] |09Select File Group |01[|10Enter|01/|101|01]|09: |XX
; nodechat private text: &1 = user name ; nodechat private text: &1 = user name
218 |02<|10|&1 |02private|02> |07 218 |02<|10|&1 |02private|02> |07
; Displayed when creating a new files list ; Displayed when creating a new files list
@ -458,14 +458,14 @@
; There are no voting questions. ; There are no voting questions.
243 |12Sorry, there are no voting questions. 243 |12Sorry, there are no voting questions.
; Voting booth prompt &1 = Total number of questions ; Voting booth prompt &1 = Total number of questions
244 |08|$D79Ä|CR|09Vote on which question (1-|&1, or Enter/Quit): 244 |08|$D79Ä|CR|09Vote on which question (1-|&1, or Enter/Quit): |XX
; Voting on question header &1 = Question ; Voting on question header &1 = Question
245 |CL|08|$D79Ä|CR|14Question: (* = Current Vote)|CR|12|&1|CR|08|$D79Ä 245 |CL|08|$D79Ä|CR|14Question: (* = Current Vote)|CR|12|&1|CR|08|$D79Ä
; Voting on question list format ; Voting on question list format
; &1 = Answer # &2 = Answer text &3 = Current Answer? ; &1 = Answer # &2 = Answer text &3 = Current Answer?
246 |12|&3 |09(|10|$R02|&1|09) |03|&2 246 |12|&3 |09(|10|$R02|&1|09) |03|&2
; Voting prompt ; Voting prompt
247 |08|$D79Ä|CR|09Vote for which answer (Enter/Quit): 247 |08|$D79Ä|CR|09Vote for which answer (Enter/Quit): |XX
; See voting results? ; See voting results?
248 |CR|12See results? |11 248 |CR|12See results? |11
; Vote Result Header ; Vote Result Header
@ -480,13 +480,13 @@
; <Pick this to add your own answer> text ; <Pick this to add your own answer> text
252 <Pick this to add your own answer> 252 <Pick this to add your own answer>
; Enter your answer prompt ; Enter your answer prompt
253 |CR|09Enter your response: 253 |CR|09Enter your response: |XX
254 |CR|14This is a forced question. You must answer it to continue.|CR|CR|PA 254 |CR|14This is a forced question. You must answer it to continue.|CR|CR|PA
255 |CR|09Enter new file scan date |01[|10|UF|01]|09: 255 |CR|09Enter new file scan date |01[|10|UF|01]|09: |XX
256 |CR|12Set this date for all file bases? |11 256 |CR|12Set this date for all file bases? |11
; &1 = Date of the updated new scan. ; &1 = Date of the updated new scan.
257 |CR|07New scan date set to [|15|&1|07].|DE|DE|DE 257 |CR|07New scan date set to [|15|&1|07].|DE|DE|DE
258 |CRDetecting terminal emulation: 258 |CRDetecting terminal emulation: |XX
259 |TE detected. 259 |TE detected.
; Short BBS list header ; Short BBS list header
260 |CR|07Õ|08Í[ |15B|07BS |15N|07ame |08]Í|07ÍÍÍÍÍÍÍÍÍÍÍ|08Í[ |15T|07ype |08]|07Í|08Í[ |15A|07ddress |08/ |15P|07hone |08]Í|07ÍÍÍÍÍÍÍ|08Í[ |15S|07oftware |08]Í|07¸ 260 |CR|07Õ|08Í[ |15B|07BS |15N|07ame |08]Í|07ÍÍÍÍÍÍÍÍÍÍÍ|08Í[ |15T|07ype |08]|07Í|08Í[ |15A|07ddress |08/ |15P|07hone |08]Í|07ÍÍÍÍÍÍÍ|08Í[ |15S|07oftware |08]Í|07¸
@ -495,7 +495,7 @@
261 |08³ |14|$R25|&1 |09|$R06|&2 |10|$R30|&3 |12|$R10|&4 |08³ 261 |08³ |14|$R25|&1 |09|$R06|&2 |10|$R30|&3 |12|$R10|&4 |08³
; Short BBS list footer ; Short BBS list footer
262 |07ÔÍ|08ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ|07Í; 262 |07ÔÍ|08ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ|07Í;
263 |08|$D79Ä|CR|09Results for which question? (Enter/Quit): 263 |08|$D79Ä|CR|09Results for which question? (Enter/Quit): |XX
; Extended BBS list header ; Extended BBS list header
264 |CR|14Extended BBS listing: 264 |CR|14Extended BBS listing:
; Extended BBS list information ; Extended BBS list information
@ -505,7 +505,7 @@
; verify bbs? ; verify bbs?
266 |CR|12Verify that this BBS is still online? |11 266 |CR|12Verify that this BBS is still online? |11
; Extended BBS list prompt ; Extended BBS list prompt
267 |CR|09(Enter) to Continue, (D)elete, (V)erify, or (Q)uit? 267 |CR|09(Enter) to Continue, (D)elete, (V)erify, or (Q)uit? |XX
; Who's Online: blank listing. |&1 = Node number ; Who's Online: blank listing. |&1 = Node number
268 |07|$R05|&1 Waiting for connection 268 |07|$R05|&1 Waiting for connection
; Matrix login: Create a BBS account? ; Matrix login: Create a BBS account?
@ -515,39 +515,39 @@
; Matrix login: Your account is not validated. ; Matrix login: Your account is not validated.
271 |CR|14Sorry, your account has not been validated.|CR|CR|PA 271 |CR|14Sorry, your account has not been validated.|CR|CR|PA
; Matrix login: Enter matrix password ; Matrix login: Enter matrix password
272 |CR|14Enter matrix password: 272 |CR|14Enter matrix password: |XX
; Matrix login: Enter account name prompt ; Matrix login: Enter account name prompt
273 |CR|03Account name |09: 273 |CR|03Account name |09: |XX
; Matrix login: enter account password prompt ; Matrix login: enter account password prompt
274 |CR|03Account password|09: 274 |CR|03Account password|09: |XX
; Add question to voting booth question ; Add question to voting booth question
275 |CR|12Add a question to the voting booth? |11 275 |CR|12Add a question to the voting booth? |11
; Maximum of 20 voting questions text ; Maximum of 20 voting questions text
276 |CR|14Sorry, there is a maximum of 20 voting questions. 276 |CR|14Sorry, there is a maximum of 20 voting questions.
; Enter new question ; Enter new question
277 |CL|03Enter new question (Enter/Quit)|CR|09: 277 |CR|03Enter new question (Enter/Quit)|CR|09:
; Enter choices now. Max 15. ; Enter choices now. Max 15.
278 |CR|10Enter choices now. There are a maximum of 15 choices for each question.|CREnter a blank line when done.|CR 278 |CR|10Enter choices now. There are a maximum of 15 choices for each question.|CREnter a blank line when done.|CR
; Choice #. &1 = Choice number ; Choice #. &1 = Choice number
279 |09Choice #|&1: 279 |09Choice #|&1: |XX
; Allow users to add answers? ; Allow users to add answers?
280 |CR|12Allow users to add their own answers? |11 280 |CR|12Allow users to add their own answers? |11
; Save this question? ; Save this question?
281 |CR|12Save this voting question? |11 281 |CR|12Save this voting question? |11
; Move message to where? ; Move message to where?
282 |CR|09Move to which base (?/List): 282 |CR|09Move to which base (?/List): |XX
; Add BBS list: enter phone number ; Add BBS list: enter phone number
283 |03Enter BBS phone number: 283 |03Enter BBS phone number: |XX
; Add BBS list: enter BBS name ; Add BBS list: enter BBS name
284 |03Enter BBS Name : 284 |03Enter BBS Name : |XX
; Add BBS list: enter BBS location ; Add BBS list: enter BBS location
285 |03Enter Location of BBS : 285 |03Enter Location of BBS : |XX
; Add BBS list: enter sysop name ; Add BBS list: enter sysop name
286 |03Enter Sysop Name : 286 |03Enter Sysop Name : |XX
; Add BBS list: enter max baud rate ; Add BBS list: enter max baud rate
287 |03Enter Max Baud Rate : 287 |03Enter Max Baud Rate : |XX
; Add BBS list: enter BBS software ; Add BBS list: enter BBS software
288 |03Enter BBS Software : 288 |03Enter BBS Software : |XX
; File base is mandatory ; File base is mandatory
289 |CR |11|FB is marked as mandatory scanning.|CR 289 |CR |11|FB is marked as mandatory scanning.|CR
; Save this BBS entry ; Save this BBS entry
@ -555,19 +555,19 @@
; There are no entries in BBS list. ; There are no entries in BBS list.
291 |CR|12There are no entries in the BBS list. 291 |CR|12There are no entries in the BBS list.
; BBS list: enter text to search for ; BBS list: enter text to search for
292 |CR|09Enter search text or (ENTER) for All: 292 |CR|09Enter search text or (ENTER) for All: |XX
; Matrix login: Invalid PW ; Matrix login: Invalid PW
293 |CR|12Invalid password. 293 |CR|12Invalid password.
294 |CR|12Delete this BBS from the list? |11 294 |CR|12Delete this BBS from the list? |11
295 |CR|12You did not add this BBS entry. 295 |CR|12You did not add this BBS entry.
; editing message display ; editing message display
296 |CL|14Message Editor|CR|CR|03A. To : |&1|CRB. Subj : |&2|CR|CR|09Command: (!) Edit text, (Q)uit: 296 |CL|14Message Editor|CR|CR|03A. To : |&1|CRB. Subj : |&2|CR|CR|09Command: (!) Edit text, (Q)uit: |XX
; editing message to ; editing message to
297 |CR|09To: 297 |CR|09To: |XX
; editing message net address ; editing message net address
298 |CR|09Enter destination address: 298 |CR|09Enter destination address: |XX
; editing message subject ; editing message subject
299 |CR|09Subject: 299 |CR|09Subject: |XX
; editing message save changes ; editing message save changes
300 |CR|12Save changes to message? |11 300 |CR|12Save changes to message? |11
; delete autosig? ; delete autosig?
@ -585,7 +585,7 @@
308 |CR|12Invisible login? |11 308 |CR|12Invisible login? |11
309 |CR|12Sorry, this user name is not acceptable. 309 |CR|12Sorry, this user name is not acceptable.
; Message search: search text input ; Message search: search text input
310 |CR|03Enter text to search for: 310 |CR|03Enter text to search for: |XX
; Message search completed ; Message search completed
311 |CL|15Message search completed.|DE|DE|DE 311 |CL|15Message search completed.|DE|DE|DE
; Lightbar file list: DL limit is exceeded. ; Lightbar file list: DL limit is exceeded.
@ -594,9 +594,10 @@
313 |12Your download ratio would be exceeded.|PN 313 |12Your download ratio would be exceeded.|PN
; Lightbar file list: Batch queue is full. ; Lightbar file list: Batch queue is full.
314 |12Your batch queue is full.|PN 314 |12Your batch queue is full.|PN
; UNUSED
315 UNUSED 315 UNUSED
; Lightbar Y/N: YES text ; Lightbar Y/N: YES text
316 |08++(|23|00 yes |16|08/ |07no |08)++ 316 |09|17 Y|15es |09|16 N|15o |16
; Lightbar Y/N: NO text ; Lightbar Y/N: NO text
317 |09 Y|15es |09|17 N|15o |16 317 |09 Y|15es |09|17 N|15o |16
; Moving message. &1=base name ; Moving message. &1=base name
@ -619,7 +620,7 @@
328 |CR|14Sysop has shelled to DOS. Please wait. 328 |CR|14Sysop has shelled to DOS. Please wait.
329 |14Sysop has returned from DOS. Thank you. 329 |14Sysop has returned from DOS. Thank you.
; Add to BBS list: telnet ; Add to BBS list: telnet
330 |03Enter Telnet Address : 330 |03Enter Telnet Address : |XX
; Start at message index in email? (lightbar msg reader) ; Start at message index in email? (lightbar msg reader)
331 |CR|12Start at e-mail message index? |11 331 |CR|12Start at e-mail message index? |11
; Teleconference user list ; Teleconference user list
@ -634,14 +635,14 @@
; One Liners list format. &1 = Text &2 = Poster Name &3 = Initials ; One Liners list format. &1 = Text &2 = Poster Name &3 = Initials
337 |07 |$R61|&1 |$L15|&2 337 |07 |$R61|&1 |$L15|&2
; Reading forward prompt &1 = Total messages in base ; Reading forward prompt &1 = Total messages in base
338 |CR|03Begin reading at (|111|03-|11|&1|03)|12: 338 |CR|03Begin reading at (|111|03-|11|&1|03)|12: |XX
; Lightbar file list prompt (SYSOP) ; Lightbar file list prompt (SYSOP)
339 |01(|07Space|01) |09Flag |01(|07E|01) |09Edit |01(|07N|01) |09Next |01(|07V|01) |09View |01(|07ESC|01) |09Quit |01(|07?|01) |09Help 339 |01(|07Space|01) |09Flag |01(|07E|01) |09Edit |01(|07N|01) |09Next |01(|07V|01) |09View |01(|07ESC|01) |09Quit |01(|07?|01) |09Help
; Lightbar file list uploaders name &1 = user name &3 = downloads ; Lightbar file list uploaders name &1 = user name &3 = downloads
340 |$D34 |07+ Uploader: |&1 340 |$D34 |07+ Uploader: |&1
; Line editor quote mode: &1 = line number &2 = line text ; Line editor quote mode: &1 = line number &2 = line text
341 |10|&1|02: |11|$R74|&2 341 |10|&1|02: |11|$R74|&2
342 |CR|09Enter destination address: 342 |CR|09Enter destination address: |XX
; Upload file name prompt ; Upload file name prompt
343 |CR|09File Name|CR: 343 |CR|09File Name|CR:
; Download file name prompt ; Download file name prompt
@ -671,19 +672,19 @@
; FS editor "abort msg" ; FS editor "abort msg"
356 |CR|12Abort message? |11 356 |CR|12Abort message? |11
; file list tagging prompt ; file list tagging prompt
357 |CR|01[|10þ|01] |09Add which file number to batch |01(|07Enter|01/|07Quit|01)|09: 357 |CR|01[|10þ|01] |09Add which file number to batch |01(|07Enter|01/|07Quit|01)|09: |XX
; file list view prompt ; file list view prompt
358 |CR|01[|10þ|01] |09View contents of which file number |01(|07Enter|01/|07Quit|01)|09: 358 |CR|01[|10þ|01] |09View contents of which file number |01(|07Enter|01/|07Quit|01)|09: |XX
; Protocol List Header ; Protocol List Header
359 |CR|14Available Protocols:|CR 359 |CR|14Available Protocols:|CR
; NodeMsg reply &1=from &2=node# ; NodeMsg reply &1=from &2=node#
360 |CR|07Sending reply to |15|&1 |07on node |15|&2|07: 360 |CR|07Sending reply to |15|&1 |07on node |15|&2|07:
; Add BBS list connection type ; Add BBS list connection type
361 |CR|09Accessible by (D)ialup, (T)elnet, (B)oth: 361 |CR|09Accessible by (D)ialup, (T)elnet, (B)oth: |XX
; Add BBS: BBS already exists ; Add BBS: BBS already exists
362 |CR|12BBS already exists in list! 362 |CR|12BBS already exists in list!
; Msg xport: local export path ; Msg xport: local export path
363 |CR|09Enter full path/filename to export to: 363 |CR|09Enter full path/filename to export to: |XX
; info edit: address ; info edit: address
364 |CR|03Enter your street address.|CR|09: 364 |CR|03Enter your street address.|CR|09:
; info edit: city/state ; info edit: city/state
@ -697,11 +698,11 @@
; info edit: bday ; info edit: bday
369 |CR|03Enter your date of birth (|UF):|CR|09: 369 |CR|03Enter your date of birth (|UF):|CR|09:
; info edit: gender ; info edit: gender
370 |CR|09Are you (M)ale or (F)emale? 370 |CR|09Are you (M)ale or (F)emale? |XX
; info edit: date format ; info edit: date format
371 |CR|11(|031|08) |09MM/DD/YY|CR|11(|032|08) |09DD/MM/YY|CR|11(|033|08) |09YY/DD/MM|CR|CRDate Format |08-> |07 371 |CR|11(|031|08) |09MM/DD/YY|CR|11(|032|08) |09DD/MM/YY|CR|11(|033|08) |09YY/DD/MM|CR|CRDate Format |08-> |07
; info edit: screen length &1 = def page size ; info edit: screen length &1 = def page size
372 |CR|09Screen Pause Length (Enter/|&1): 372 |CR|09Screen Pause Length (Enter/|&1): |XX
; info edit: editor type ; info edit: editor type
373 |CR|11(|030|08) |14Line Editor|CR|11(|031|08) |14Full Screen Editor|CR|11(|032|08) |14Ask|CR|CR|15E|10d|02itor |15T|10y|02pe|15: |15 373 |CR|11(|030|08) |14Line Editor|CR|11(|031|08) |14Full Screen Editor|CR|11(|032|08) |14Ask|CR|CR|15E|10d|02itor |15T|10y|02pe|15: |15
; info edit: file list type ; info edit: file list type
@ -711,13 +712,13 @@
; Processing uploads ; Processing uploads
376 |CR|14Processing uploads ...|CR 376 |CR|14Processing uploads ...|CR
; BLIND dupe search ; BLIND dupe search
377 |12þ |03Searching for duplicate files : 377 |12þ |03Searching for duplicate files : |XX
; BLIND dupe found ; BLIND dupe found
378 Dupe found. 378 Dupe found.
; BLIND no dupe found ; BLIND no dupe found
379 None. 379 None.
; importing file_id.diz ; importing file_id.diz
380 |12þ |03Importing file description : 380 |12þ |03Importing file description : |XX
; file_id found ; file_id found
381 Found. 381 Found.
; no file_id ; no file_id
@ -733,11 +734,11 @@
; Mass mail prompt ; Mass mail prompt
387 |CL|09Send mass mail by|09:|CR|CR|11(|031|08) |09ACS level|CR|11(|032|08)|09 List of users|CR|11(|033|08)|09 All users|CR|11(|03Q|08)|09 Quit|CR|CRCommand |08-> |07 387 |CL|09Send mass mail by|09:|CR|CR|11(|031|08) |09ACS level|CR|11(|032|08)|09 List of users|CR|11(|033|08)|09 All users|CR|11(|03Q|08)|09 Quit|CR|CRCommand |08-> |07
; Mass mail ACS prompt ; Mass mail ACS prompt
388 |CREnter ACS level: 388 |CREnter ACS level: |XX
; Mass mail name info ; Mass mail name info
389 |CR|11Enter user name, or search string.|CREnter a blank line to end.|CR 389 |CR|11Enter user name, or search string.|CREnter a blank line to end.|CR
; Mass mail name prompt &1 = # of users in list ; Mass mail name prompt &1 = # of users in list
390 |CR|11|&1 |03users in list. Enter user name: 390 |CR|11|&1 |03users in list. Enter user name: |XX
; Mass mail name list ; Mass mail name list
391 |CR|09User mailing list:|CR 391 |CR|09User mailing list:|CR
; Mass mail name format &1 = name ; Mass mail name format &1 = name
@ -749,7 +750,7 @@
; Node unavilable ; Node unavilable
395 |CR|14Sorry, this user is marked as unavailable. 395 |CR|14Sorry, this user is marked as unavailable.
; Msg search prompt ; Msg search prompt
396 |CR|03Enter search string: 396 |CR|03Enter search string: |XX
; Info edit: Msg Read type ; Info edit: Msg Read type
397 |CR|11(|030|08) |14Normal |15: |10View messages page by page|CR|11(|031|08) |14LightBar |15: |10Scroll message lists with arrow keys|CR|CR|15S|10ele|02ct |15T|10yp|02e: |15 397 |CR|11(|030|08) |14Normal |15: |10View messages page by page|CR|11(|031|08) |14LightBar |15: |10Scroll message lists with arrow keys|CR|CR|15S|10ele|02ct |15T|10yp|02e: |15
; New user: Msg Read type ; New user: Msg Read type
@ -766,15 +767,15 @@
; Ansi msg read: delete msg ; Ansi msg read: delete msg
402 |CR|12Delete this mail? 402 |CR|12Delete this mail?
; Ansi msg read: jump to msg: &1 = cur msg num &2 = high msg num ; Ansi msg read: jump to msg: &1 = cur msg num &2 = high msg num
403 |CR|09Jump to which message? (1-|&2): 403 |CR|09Jump to which message? (1-|&2): |XX
; Ansi msg read: scan toggle &1 = message base name ; Ansi msg read: scan toggle &1 = message base name
404 |CR|11|&1 will NOT be scanned in new message scan! 404 |CR|11|&1 will NOT be scanned in new message scan!
405 |CR|11|&1 will be scanned in new message scan! 405 |CR|11|&1 will be scanned in new message scan!
406 |CR|11|MB is marked as mandatory reading! 406 |CR|11|MB is marked as mandatory reading!
; Reply msg To: standard ; Reply msg To: standard
407 |CR|09To: 407 |CR|09To: |XX
; Reply msg To: lightbar ; Reply msg To: lightbar
408 |CR|09To: 408 |CR|09To: |XX
; User edit: Hotkeys ; User edit: Hotkeys
409 |CR|12Use hot-key input? 409 |CR|12Use hot-key input?
; New user: Hotkeys ; New user: Hotkeys
@ -787,7 +788,7 @@
; ansi msg read: local export ; ansi msg read: local export
415 Export to filepath/filename|CR: 415 Export to filepath/filename|CR:
; mass email subj: prompt ; mass email subj: prompt
416 |CR|09Subject: 416 |CR|09Subject: |XX
; General Invalid PW ; General Invalid PW
417 |CR|12Invalid password. 417 |CR|12Invalid password.
; INFO EDIT: Do not match ; INFO EDIT: Do not match
@ -834,7 +835,7 @@
; post on msg base (lightbar reader) ; post on msg base (lightbar reader)
438 |CR|12Post a message? 438 |CR|12Post a message?
; new user: enter email address ; new user: enter email address
439 |01[|10þ|01] |09Enter your e-mail address -> 439 |01[|10þ|01] |09Enter your e-mail address -> |XX
; info edit: enter email address ; info edit: enter email address
440 |CR|09Enter E-mail address|CR: 440 |CR|09Enter E-mail address|CR:
; new user: enter user note ; new user: enter user note
@ -842,23 +843,23 @@
; info edit: enter user note ; info edit: enter user note
442 |CR|09Enter your desired user note|CR: 442 |CR|09Enter your desired user note|CR:
; new user: option 1 ; new user: option 1
443 |01[|10þ|01] |09How did you hear of this BBS -> 443 |01[|10þ|01] |09How did you hear of this BBS -> |XX
; info edit: option 1 ; info edit: option 1
444 |CR|09Enter optional field 1: 444 |CR|09Enter optional field 1: |XX
; new user: option 2 ; new user: option 2
445 |CR|09Enter optional field 2: 445 |CR|09Enter optional field 2: |XX
; info edit: option 2 ; info edit: option 2
446 |CR|09Enter optional field 2: 446 |CR|09Enter optional field 2: |XX
; new user: option 3 ; new user: option 3
447 |CR|09Enter optional field 3: 447 |CR|09Enter optional field 3: |XX
; info edit: option 3 ; info edit: option 3
448 |CR|09Enter optional field 3: 448 |CR|09Enter optional field 3: |XX
; file new scan setting footer ; file new scan setting footer
449 449
; private post (email) TO: ; private post (email) TO:
450 |CR|09To: 450 |CR|09To: |XX
; reply msg SUBJ ; reply msg SUBJ
451 |CR|09Subject: 451 |CR|09Subject: |XX
; standard quote header ; standard quote header
452 |15Quote mode: Select a range of text to quote|CR 452 |15Quote mode: Select a range of text to quote|CR
453 |09|$D77Ä|CR|PA 453 |09|$D77Ä|CR|PA
@ -881,14 +882,13 @@
; filename greater than 70 chars prompt ; filename greater than 70 chars prompt
461 |CR|12File of this name already exists.|CR|CR|09Enter new file name (max 70 chars)|CR: 461 |CR|12File of this name already exists.|CR|CR|09Enter new file name (max 70 chars)|CR:
; line editor edit subject ; line editor edit subject
462 |CR|09Enter new subject: 462 |CR|09Enter new subject: |XX
; FS editor edit subject ; FS editor edit subject
463 |CR|09Enter new subject: 463 |CR|09Enter new subject: |XX
; msgtext quote header &1=date &2=from &3=initials ; msgtext quote header &1=date &2=from &3=initials
464 On |&1, |&2 said the following... 464 On |&1, |&2 said the following...
; new email node msg: &1=from &2=subj ; new email node msg: &1=from &2=subj
465 You've just received new e-mail from |&1. 465 You've just received new e-mail from |&1.
; ansi gallery: Ansi is required to use this prompt ; ansi gallery: Ansi is required to use this prompt
466 |CRSorry, this gallery requires ANSI graphics|CR|CR|PA 466 |CRSorry, this gallery requires ANSI graphics|CR|CR|PA
; ansi gallery: Deselected file in list (bar OFF) ; ansi gallery: Deselected file in list (bar OFF)
@ -908,7 +908,7 @@
; &6=sauce group &7=filetime ; &6=sauce group &7=filetime
470 |[X02|15|17 |$R49|&1 |12<DIRECTORY>|$D15 |XX 470 |[X02|15|17 |$R49|&1 |12<DIRECTORY>|$D15 |XX
; ansi gallery: Current path update prompt (when switching directories) ; ansi gallery: Current path update prompt (when switching directories)
; set to blank to not display a path ; set to blank to not display a path (automatically excludes the root)
; &1 = current path &2 = # of files in path ; &1 = current path &2 = # of files in path
471 |[X08|[Y05|15|16|$R70|&1 471 |[X08|[Y05|15|16|$R70|&1
; ansi gallery: Percent bar update (when redrawing page) ; ansi gallery: Percent bar update (when redrawing page)
@ -921,7 +921,7 @@
; ansi gallery: Command prompt for ! (only download for now) ; ansi gallery: Command prompt for ! (only download for now)
474 |CR|12Download |&1? |XX 474 |CR|12Download |&1? |XX
; Password inquiry prompt ; Password inquiry prompt
475 |CR|12Send an e-mail about your forgetten password? |XX 475 |CR|12Send a password inquiry message to the SysOp? |XX
; Displayed when account expired down to a security level > 0 ; Displayed when account expired down to a security level > 0
476 |CR|14Your account has expired. Downgrading security to |XS. 476 |CR|14Your account has expired. Downgrading security to |XS.
; Displayed when account expired down to level 0 (delete) ; Displayed when account expired down to level 0 (delete)

View File

@ -58,7 +58,7 @@ Const
colEditBorder = 25; { 31 } colEditBorder = 25; { 31 }
colEditHeader = 31; { 31 } colEditHeader = 31; { 31 }
colEditStatus = 19; { 19 } colEditStatus = 9 + 1 * 16;
colEditPosBar = 9 + 1 * 16; colEditPosBar = 9 + 1 * 16;
Type Type

View File

@ -22,7 +22,7 @@ End;
Function Char2VarType (C: Char) : TIdentTypes; Function Char2VarType (C: Char) : TIdentTypes;
Begin Begin
Case UpCase(c) of Case UpCase(C) of
'S' : Result := iString; 'S' : Result := iString;
'C' : Result := iChar; 'C' : Result := iChar;
'B' : Result := iByte; 'B' : Result := iByte;

View File

@ -2,14 +2,6 @@ Unit MPL_Compile;
{$I M_OPS.PAS} {$I M_OPS.PAS}
// OKAY SO iRECORD HAS DATAPTR ALLOCATED TO ITS FULL SIZE.
// WHEN A RECORD VARIABLE (iRECORD) is DEFINED, EACH VAR
// IS CREATED WITH A POINTER TO iRECORD.DATAPTR[OFFSET]
// IRECORD THEN CAN BE REFERENCED AS EXPECTED.
// ALSO NEED TO FIGURE OUT SIZEOF TOO
// REMOVE VARTYPE2CHAR ETC AND USE ORDINAL
Interface Interface
Uses Uses
@ -47,22 +39,15 @@ Type
TParserUpdateProc = Procedure (Mode: TParserUpdateInfo); TParserUpdateProc = Procedure (Mode: TParserUpdateInfo);
TParserSourceFile = Record TParserSourceFile = Record
DataFile : TCharFile; DataFile : TCharFile;
ColCur : Byte; Position : LongInt;
ColLast : Byte; PosSaved : LongInt;
ColSaved : Byte; Size : LongInt;
LineCur : Word; SavedInfo : TParserUpdateInfo;
LineSaved : Word;
Position : LongInt;
PosSaved : LongInt;
Size : LongInt;
ColLastSaved : Byte;
SavedInfo : TParserUpdateInfo;
End; End;
TParserVarInfoRec = Record TParserVarInfoRec = Record
Ident : Array[1..mplMaxVarDeclare] of String[mplMaxIdentLen]; Ident : Array[1..mplMaxVarDeclare] of String[mplMaxIdentLen];
Prefix : String[mplMaxIdentLen];
vType : TIdentTypes; vType : TIdentTypes;
ArrDem : Byte; ArrDem : Byte;
ArrStart : Array[1..mplMaxArrayDem] of LongInt; ArrStart : Array[1..mplMaxArrayDem] of LongInt;
@ -71,14 +56,16 @@ Type
StrLen : Byte; StrLen : Byte;
VarSize : LongInt; VarSize : LongInt;
DataSize : LongInt; DataSize : LongInt;
RecID : Word;
End; End;
PRecordRec = ^TRecordRec; PRecordRec = ^TRecordRec;
TRecordRec = Record TRecordRec = Record
Ident : String[mplMaxIdentLen]; Ident : String[mplMaxIdentLen];
RecID : Word;
Fields : Array[1..mplMaxRecFields] of TParserVarInfoRec; Fields : Array[1..mplMaxRecFields] of TParserVarInfoRec;
NumFields : Word; NumFields : Word;
// RecSize : Word; DataSize : LongInt;
End; End;
PConstRec = ^TConstRec; PConstRec = ^TConstRec;
@ -106,6 +93,7 @@ Type
CurRecNum : Word; CurRecNum : Word;
CurConstNum : Word; CurConstNum : Word;
CurVarID : Word; CurVarID : Word;
CurRecID : Word;
UsesUSER : Boolean; UsesUSER : Boolean;
UsesCFG : Boolean; UsesCFG : Boolean;
UsesMBASE : Boolean; UsesMBASE : Boolean;
@ -136,7 +124,7 @@ Type
// CODE PROCESSING // CODE PROCESSING
Function GetDataSize (Info: TParserVarInfoRec) : LongInt; Function GetDataSize (Info: TParserVarInfoRec) : LongInt;
Procedure CreateVariable (Var Info: TParserVarInfoRec); Procedure CreateVariable (Var Info: TParserVarInfoRec);
Procedure ParseVariableInfo (Param: Boolean; IsRec: Boolean; Var Info: TParserVarInfoRec); Function ParseVariableInfo (Param: Boolean; IsRec: Boolean; Var Info: TParserVarInfoRec) : LongInt;
Procedure ParseIdent; Procedure ParseIdent;
Procedure ParseBlock (VarStart: Word; OneLine, CheckBlock, IsRepeat: Boolean); Procedure ParseBlock (VarStart: Word; OneLine, CheckBlock, IsRepeat: Boolean);
@ -144,9 +132,10 @@ Type
Procedure ParseVarString; Procedure ParseVarString;
Procedure ParseVarFile; Procedure ParseVarFile;
Procedure ParseVarBoolean; Procedure ParseVarBoolean;
Procedure ParseVarChar; //combine with string? Procedure ParseVarChar;
Procedure ParseVariable (VT: TIdentTypes); Procedure ParseVariable (VT: TIdentTypes);
Procedure ParseArray (VN: Word); Procedure ParseArray (VN: Word);
Function ParseElement (VN: Word; TypeCheck: Boolean; VT: TIdentTypes) : TIdentTypes;
Procedure DefineRecordType; Procedure DefineRecordType;
Procedure DefineVariable; Procedure DefineVariable;
@ -196,6 +185,7 @@ Begin
Ch := #0; Ch := #0;
IdentStr := ''; IdentStr := '';
CurVarID := 0; CurVarID := 0;
CurRecID := 0;
CurFile := 0; CurFile := 0;
CurVarNum := 0; CurVarNum := 0;
CurGotoNum := 0; CurGotoNum := 0;
@ -271,10 +261,23 @@ Begin
UpdateInfo.ErrorType := ErrNum; UpdateInfo.ErrorType := ErrNum;
UpdateInfo.ErrorText := GetErrorMessage(Str); UpdateInfo.ErrorText := GetErrorMessage(Str);
UpdateInfo.ErrorLine := InFile[CurFile].LineCur; UpdateInfo.ErrorLine := 1;
UpdateInfo.ErrorCol := InFile[CurFile].ColCur; UpdateInfo.ErrorCol := 0;
If UpdateInfo.ErrorLine < 1 Then UpdateInfo.ErrorLine := 1; InFile[CurFile].DataFile.Seek(0);
While Not InFile[CurFile].DataFile.EOF And (InFile[CurFile].DataFile.FilePos < InFile[CurFile].Position) Do Begin
Case InFile[CurFile].DataFile.Read of
#10 : Begin
Inc (UpdateInfo.ErrorLine);
UpdateInfo.ErrorCol := 0;
End;
#09,
#13 : ;
Else
Inc (UpdateInfo.ErrorCol);
End;
End;
End; End;
Function TParserEngine.CurFilePos : LongInt; Function TParserEngine.CurFilePos : LongInt;
@ -358,6 +361,9 @@ Begin
If CurRecNum = 0 Then Exit; If CurRecNum = 0 Then Exit;
Repeat Repeat
writeln('rec ident: ', recdata[count]^.ident);
writeln('str: ', str);
If strUpper(RecData[Count]^.Ident) = Str Then Begin If strUpper(RecData[Count]^.Ident) = Str Then Begin
Result := Count; Result := Count;
Exit; Exit;
@ -400,7 +406,6 @@ Begin
UpdateInfo.Percent := Percent; UpdateInfo.Percent := Percent;
UpdateInfo.FilePosition := InFile[CurFile].Position; UpdateInfo.FilePosition := InFile[CurFile].Position;
UpdateInfo.FileSize := InFile[CurFile].Size; UpdateInfo.FileSize := InFile[CurFile].Size;
UpdateInfo.FileLine := InFile[CurFile].LineCur;
End; End;
UpdateProc(UpdateInfo); UpdateProc(UpdateInfo);
@ -414,9 +419,8 @@ Begin
If Not InFile[CurFile].DataFile.Eof Then Begin If Not InFile[CurFile].DataFile.Eof Then Begin
Ch := InFile[CurFile].DataFile.Read; Ch := InFile[CurFile].DataFile.Read;
Inc (InFile[CurFile].Position);
If Not (Ch in [#10, #13]) Then Inc(InFile[CurFile].ColCur); Inc (InFile[CurFile].Position);
End Else End Else
If InFile[CurFile].DataFile.Eof and (CurFile > 1) Then Begin If InFile[CurFile].DataFile.Eof and (CurFile > 1) Then Begin
CloseSourceFile; CloseSourceFile;
@ -434,42 +438,15 @@ Begin
With InFile[CurFile] Do Begin With InFile[CurFile] Do Begin
If Position <= 1 Then Exit; If Position <= 1 Then Exit;
Dec (Position); Dec (Position);
Dec (ColCur);
DataFile.Seek (DataFile.FilePos - 1); DataFile.Seek (DataFile.FilePos - 1);
If ColCur < 1 Then Begin
ColCur := ColLast;
ColLast := 1;
Dec (LineCur);
End;
End; End;
End; End;
Function TParserEngine.IsEndOfLine : Boolean; Function TParserEngine.IsEndOfLine : Boolean;
Begin Begin
Result := False; Result := Ch in [#10, #13];
Case Ch of
#10,
#13 : Begin
With InFile[CurFile] Do Begin
Inc (LineCur);
ColLast := ColCur;
ColCur := 1;
Result := True;
End;
If Ch = #13 Then Begin
GetChar;
If Not (Ch in [#10]) Then PrevChar;
End;
End;
End;
End; End;
Procedure TParserEngine.NextChar; Procedure TParserEngine.NextChar;
@ -496,10 +473,9 @@ Begin
While Not UpdateInfo.ErrorType <> 0 Do Begin While Not UpdateInfo.ErrorType <> 0 Do Begin
Case Ch of Case Ch of
// SKIP CR/LF...
#10,
#13 : IsEndOfLine;
// SKIP WHITESPACE // SKIP WHITESPACE
#10,
#13,
#09, #09,
#32, #32,
#59 : {ignore}; #59 : {ignore};
@ -519,8 +495,6 @@ Begin
'*' : Repeat '*' : Repeat
GetChar; GetChar;
IsEndOfLine;
Case Ch of Case Ch of
'*' : Begin '*' : Begin
GetChar; GetChar;
@ -584,6 +558,7 @@ Begin
End; End;
1 : Begin 1 : Begin
BlockCount := 1; BlockCount := 1;
Repeat Repeat
GetChar; GetChar;
@ -685,7 +660,7 @@ Begin
If UpdateInfo.ErrorType <> 0 Then Exit; If UpdateInfo.ErrorType <> 0 Then Exit;
While (UpdateInfo.ErrorType = 0) And ((Ch in ChIdent2) or (Ch = '.')) Do Begin While (UpdateInfo.ErrorType = 0) And (Ch in ChIdent2) Do Begin
IdentStr := IdentStr + Ch; IdentStr := IdentStr + Ch;
GetChar; GetChar;
End; End;
@ -707,20 +682,14 @@ End;
Procedure TParserEngine.SavePosition; Procedure TParserEngine.SavePosition;
Begin Begin
With InFile[CurFile] Do Begin With InFile[CurFile] Do Begin
ColSaved := ColCur; PosSaved := DataFile.FilePos + 1;
LineSaved := LineCur;
PosSaved := DataFile.FilePos + 1;
ColLastSaved := ColLast;
End; End;
End; End;
Procedure TParserEngine.LoadPosition; Procedure TParserEngine.LoadPosition;
Begin Begin
With InFile[CurFile] Do Begin With InFile[CurFile] Do Begin
ColCur := ColSaved;
LineCur := LineSaved;
Position := PosSaved; Position := PosSaved;
ColLast := ColLastSaved;
DataFile.Seek (Position - 1); DataFile.Seek (Position - 1);
End; End;
@ -743,8 +712,10 @@ Var
Begin Begin
If VarData[VN]^.ArrPos > 0 Then Begin If VarData[VN]^.ArrPos > 0 Then Begin
GetStr(tkw[wOpenArray], True, False); GetStr(tkw[wOpenArray], True, False);
For X := 1 to VarData[vn]^.ArrPos Do Begin
For X := 1 to VarData[VN]^.ArrPos Do Begin
ParseVarNumber; ParseVarNumber;
If X < VarData[VN]^.ArrPos Then If X < VarData[VN]^.ArrPos Then
GetStr(tkw[wArrSep], True, False) GetStr(tkw[wArrSep], True, False)
Else Else
@ -753,6 +724,65 @@ Begin
End; End;
End; End;
Function TParserEngine.ParseElement (VN: Word; TypeCheck: Boolean; VT: TIdentTypes) : TIdentTypes;
Var
Element : String;
RecNum : Word;
Count : Word;
Found : Boolean;
Offset : LongInt;
X : Word;
Begin
Result := VarData[VN]^.vType;
If Result <> iRecord Then Exit;
NextChar;
If Ch <> '.' Then Begin
PrevChar;
Exit;
End;
GetIdent(False);
Element := strUpper(IdentStr);
Offset := 0;
For Count := 1 to RecData[VarData[VN]^.RecID]^.NumFields Do Begin
If strUpper(RecData[VarData[VN]^.RecID]^.Fields[Count].Ident[1]) = Element Then Begin
Found := True;
Result := RecData[VarData[VN]^.RecID]^.Fields[Count].vType;
//VarType
//Offset
//Size
If RecData[VarData[VN]^.RecID]^.Fields[Count].ArrDem > 0 Then Begin
GetStr(tkw[wOpenArray], True, False);
For X := 1 to RecData[VarData[VN]^.RecID]^.Fields[Count].ArrDem Do Begin
ParseVarNumber;
If X < RecData[VarData[VN]^.RecID]^.Fields[Count].ArrDem Then
GetStr(tkw[wArrSep], True, False)
Else
GetStr(tkw[wCloseArray], True, False);
End;
End;
// writeln('creating ', recdata[vardata[vn]^.recid]^.fields[count].varsize, ' at ', offset);
Break;
End;
Inc (Offset, RecData[VarData[VN]^.RecID]^.Fields[Count].VarSize);
End;
If Not Found Then
Error (mpsUnknownIdent, '');
End;
Procedure TParserEngine.NewNumberCrap; Procedure TParserEngine.NewNumberCrap;
var var
IsDecimal : Boolean; IsDecimal : Boolean;
@ -853,6 +883,7 @@ begin
If GetIdent(False) Then Begin If GetIdent(False) Then Begin
VarNum := FindConst(IdentStr); VarNum := FindConst(IdentStr);
If VarNum > 0 Then Begin If VarNum > 0 Then Begin
If Not (ConstData[VarNum]^.vType in vNums) Then If Not (ConstData[VarNum]^.vType in vNums) Then
Error (mpsTypeMismatch, ''); Error (mpsTypeMismatch, '');
@ -864,7 +895,7 @@ begin
If VarNum = 0 Then If VarNum = 0 Then
Error (mpsUnknownIdent, IdentStr) Error (mpsUnknownIdent, IdentStr)
Else Else
If Not (VarData[VarNum]^.vType in vNums) Then If Not (VarData[VarNum]^.vType in vNums) And (VarData[VarNum]^.vType <> iRecord) Then
Error (mpsTypeMismatch, ''); Error (mpsTypeMismatch, '');
If UpdateInfo.ErrorType <> 0 Then Exit; If UpdateInfo.ErrorType <> 0 Then Exit;
@ -872,9 +903,10 @@ begin
If VarData[VarNum]^.Proc Then If VarData[VarNum]^.Proc Then
ExecuteProcedure (VarNum, True) ExecuteProcedure (VarNum, True)
Else Begin Else Begin
OutString (Char(opVariable)); OutString (Char(opVariable));
OutWord (VarData[VarNum]^.VarID); OutWord (VarData[VarNum]^.VarID);
ParseArray (VarNum); ParseArray (VarNum);
ParseElement (VarNum, True, iLongInt);
End; End;
End; End;
End Else End Else
@ -973,16 +1005,16 @@ Begin
If Not (ConstData[VarNum]^.vType in vStrings) Then If Not (ConstData[VarNum]^.vType in vStrings) Then
Error (mpsTypeMismatch, ''); Error (mpsTypeMismatch, '');
OutString(Char(opOpenString)); OutString (Char(opOpenString));
OutString(ConstData[VarNum]^.Data[0]); OutString (ConstData[VarNum]^.Data[0]);
OutString(ConstData[VarNum]^.Data); OutString (ConstData[VarNum]^.Data);
End Else Begin End Else Begin
VarNum := FindVariable(IdentStr); VarNum := FindVariable(IdentStr);
If VarNum = 0 Then If VarNum = 0 Then
Error (mpsUnknownIdent, IdentStr) Error (mpsUnknownIdent, IdentStr)
Else Else
If Not (VarData[VarNum]^.vType in vStrings) Then If Not (VarData[VarNum]^.vType in vStrings) And (VarData[VarNum]^.vType <> iRecord) Then
Error (mpsTypeMismatch, ''); Error (mpsTypeMismatch, '');
If UpdateInfo.ErrorType <> 0 Then Exit; If UpdateInfo.ErrorType <> 0 Then Exit;
@ -990,9 +1022,10 @@ Begin
If VarData[VarNum]^.Proc Then If VarData[VarNum]^.Proc Then
ExecuteProcedure(VarNum, True) ExecuteProcedure(VarNum, True)
Else Begin Else Begin
OutString (Char(opVariable)); OutString (Char(opVariable));
OutWord (VarData[VarNum]^.VarID); OutWord (VarData[VarNum]^.VarID);
ParseArray (VarNum); ParseArray (VarNum);
ParseElement (VarNum, True, iChar);
End; End;
End; End;
@ -1112,7 +1145,7 @@ Begin
If VarNum = 0 Then If VarNum = 0 Then
Error (mpsUnknownIdent, IdentStr) Error (mpsUnknownIdent, IdentStr)
Else Else
If Not (VarData[VarNum]^.vType in vStrings) Then If Not (VarData[VarNum]^.vType in vStrings) And (VarData[VarNum]^.vType <> iRecord) Then
Error (mpsTypeMismatch, ''); Error (mpsTypeMismatch, '');
If UpdateInfo.ErrorType <> 0 Then Exit; If UpdateInfo.ErrorType <> 0 Then Exit;
@ -1120,9 +1153,10 @@ Begin
If VarData[VarNum]^.Proc Then If VarData[VarNum]^.Proc Then
ExecuteProcedure(VarNum, True) ExecuteProcedure(VarNum, True)
Else Begin Else Begin
OutString (Char(opVariable)); OutString (Char(opVariable));
OutWord (VarData[VarNum]^.VarID); OutWord (VarData[VarNum]^.VarID);
ParseArray (VarNum); ParseArray (VarNum);
ParseElement (VarNum, True, iString);
End; End;
End; End;
@ -1215,15 +1249,16 @@ Begin
If VarNum = 0 Then If VarNum = 0 Then
Error (mpsUnknownIdent, IdentStr) Error (mpsUnknownIdent, IdentStr)
Else Else
If VarData[VarNum]^.vType <> iBool Then If (VarData[VarNum]^.vType <> iBool) And (VarData[VarNum]^.vType <> iRecord) Then
Error (mpsTypeMismatch, '') Error (mpsTypeMismatch, '')
Else Else
If VarData[VarNum]^.Proc Then If VarData[VarNum]^.Proc Then
ExecuteProcedure(VarNum, True) ExecuteProcedure(VarNum, True)
Else Begin Else Begin
OutString (Char(opVariable)); OutString (Char(opVariable));
OutWord (VarData[VarNum]^.VarID); OutWord (VarData[VarNum]^.VarID);
ParseArray (VarNum); ParseArray (VarNum);
ParseElement (VarNum, True, iBool);
End; End;
End; End;
End; End;
@ -1455,7 +1490,7 @@ Begin
Result := DimSize; Result := DimSize;
End; End;
Procedure TParserEngine.ParseVariableInfo (Param: Boolean; IsRec: Boolean; Var Info: TParserVarInfoRec); Function TParserEngine.ParseVariableInfo (Param: Boolean; IsRec: Boolean; Var Info: TParserVarInfoRec) : LongInt;
Function ParseNum : LongInt; Function ParseNum : LongInt;
Var Var
@ -1547,41 +1582,41 @@ Procedure TParserEngine.ParseVariableInfo (Param: Boolean; IsRec: Boolean; Var I
If IsRec Then Error(mpsSyntaxError, 'Cannot define file in record'); If IsRec Then Error(mpsSyntaxError, 'Cannot define file in record');
Info.vType := iFile; Info.vType := iFile;
End Else Begin End Else Begin
Count := FindRecord(IdentStr); Info.RecID := FindRecord(IdentStr);
If Count = 0 Then If Info.RecID = 0 Then
Error(mpsUnknownIdent, IdentStr) Error(mpsUnknownIdent, IdentStr)
Else If IsRec Then Else If IsRec Then
Error(mpsSyntaxError, 'Cannot define record in record') Error(mpsSyntaxError, 'Cannot define record in record')
Else Begin Else Begin
Info.vType := iRecord; Info.vType := iRecord;
Info.Prefix := Info.Ident[1] + '.';
Info.StrLen := Count;
// this crap needs to go?
End; End;
End; End;
If Not Param Then Case Info.vType of
If Info.vType = iString Then iString : Begin
If GetStr(tkw[wOpenStrSize], False, False) Then Begin Info.StrLen := 255;
Info.StrLen := ParseNum;
GetStr(tkw[wCloseStrSize], True, False);
End Else
Info.StrLen := 255;
If Info.vType <> iRecord Then Begin If Not Param Then
If Info.vType = iString Then If GetStr(tkw[wOpenStrSize], False, False) Then Begin
Info.VarSize := Info.StrLen + 1 Info.StrLen := ParseNum;
Else GetStr(tkw[wCloseStrSize], True, False);
Info.VarSize := GetVarSize(Info.vType); End;
If Info.ArrDem > 0 Then Info.VarSize := Info.StrLen + 1;
Info.VarSize := GetDataSize(Info); End;
iRecord : Info.VarSize := RecData[Info.RecID]^.DataSize;
If Info.VarSize > mplMaxDataSize Then Else
Error (mpsDataTooBig, ''); Info.VarSize := GetVarSize(Info.vType);
End; End;
If Info.ArrDem > 0 Then
Info.VarSize := GetDataSize(Info);
If Info.VarSize > mplMaxDataSize Then
Error (mpsDataTooBig, '');
// writeln('parsed variable of size: ' , info.varsize);
End; End;
Begin Begin
@ -1743,46 +1778,10 @@ End;
Procedure TParserEngine.DefineVariable; Procedure TParserEngine.DefineVariable;
Var Var
Info : TParserVarInfoRec; Info : TParserVarInfoRec;
BaseRec : TParserVarInfoRec;
Count : LongInt;
Begin Begin
ParseVariableInfo(False, False, Info); ParseVariableInfo (False, False, Info);
CreateVariable (Info);
If Info.vType = iRecord Then Begin
OutString (Char(opTypeRec));
OutWord (RecData[Info.StrLen]^.NumFields);
BaseRec := Info;
BaseRec.VarSize := 0;
BaseRec.ArrDem := Info.ArrDem;
BaseRec.ArrStart := Info.ArrStart;
BaseRec.ArrEnd := Info.ArrEnd;
BaseRec.Prefix := '';
BaseRec.NumVars := 1;
BaseRec.StrLen := 0;
For Count := 1 to RecData[Info.StrLen]^.NumFields Do
Inc (BaseRec.VarSize, RecData[Info.StrLen]^.Fields[Count].VarSize);
If BaseRec.VarSize > mplMaxDataSize Then Begin
Error (mpsDataTooBig, '');
Exit;
End;
BaseRec.DataSize := GetDataSize(BaseRec);
OutWord (BaseRec.DataSize);
CreateVariable(BaseRec);
For Count := 1 to RecData[Info.StrLen]^.NumFields Do Begin
RecData[Info.StrLen]^.Fields[Count].Prefix := Info.Prefix;
CreateVariable(RecData[Info.StrLen]^.Fields[Count]);
End;
End Else
CreateVariable(Info);
End; End;
Procedure TParserEngine.CreateVariable (Var Info: TParserVarInfoRec); Procedure TParserEngine.CreateVariable (Var Info: TParserVarInfoRec);
@ -1795,6 +1794,11 @@ Begin
If (Info.vType = iString) and (Info.StrLen > 0) Then If (Info.vType = iString) and (Info.StrLen > 0) Then
OutString(Char(opStrSize) + Char(opOpenNum) + strI2S(Info.StrLen) + Char(opCloseNum)); OutString(Char(opStrSize) + Char(opOpenNum) + strI2S(Info.StrLen) + Char(opCloseNum));
If Info.vType = iRecord Then Begin
OutString (Char(opTypeRec));
OutWord (Info.DataSize);
End;
If Info.ArrDem = 0 Then If Info.ArrDem = 0 Then
OutString(Char(opVarNormal)) OutString(Char(opVarNormal))
Else Begin Else Begin
@ -1817,10 +1821,11 @@ Begin
OutWord (CurVarID); OutWord (CurVarID);
Inc (CurVarID); Inc (CurVarID);
Ident := Info.Prefix + Info.Ident[Count]; Ident := Info.Ident[Count];
vType := Info.vType; vType := Info.vType;
Proc := False; Proc := False;
ArrPos := Info.ArrDem; ArrPos := Info.ArrDem;
RecID := Info.RecID;
NumParams := 0; NumParams := 0;
FillChar(Params, SizeOf(Params), 0); FillChar(Params, SizeOf(Params), 0);
@ -1838,10 +1843,9 @@ Begin
End; End;
Procedure TParserEngine.DefineRecordType; Procedure TParserEngine.DefineRecordType;
// get rid of this crap kludge and do records the right way...
Var Var
Ident : String; Ident : String;
Info : TParserVarInfoRec; Info : TParserVarInfoRec;
Begin Begin
GetIdent(False); GetIdent(False);
@ -1862,6 +1866,10 @@ Begin
RecData[CurRecNum]^.Ident := Ident; RecData[CurRecNum]^.Ident := Ident;
RecData[CurRecNum]^.NumFields := 0; RecData[CurRecNum]^.NumFields := 0;
RecData[CurRecNum]^.DataSize := 0;
RecData[CurRecNum]^.RecID := CurRecID;
Inc (CurRecID);
Repeat Repeat
Inc (RecData[CurRecNum]^.NumFields); Inc (RecData[CurRecNum]^.NumFields);
@ -1869,12 +1877,34 @@ Begin
If RecData[CurRecNum]^.NumFields > mplMaxRecFields Then If RecData[CurRecNum]^.NumFields > mplMaxRecFields Then
Error (mpsTooManyFields, ''); Error (mpsTooManyFields, '');
// need to check that datasize does not go over the max ParseVariableInfo(False, True, Info);
ParseVariableInfo(False, True, Info); // if record fail if file type?
RecData[CurRecNum]^.Fields[RecData[CurRecNum]^.NumFields] := Info; RecData[CurRecNum]^.Fields[RecData[CurRecNum]^.NumFields] := Info;
Inc (RecData[CurRecNum]^.DataSize, Info.VarSize);
Until (UpdateInfo.ErrorType <> 0) or GetStr(tkw[wBlockClose], False, tkwType = 1); Until (UpdateInfo.ErrorType <> 0) or GetStr(tkw[wBlockClose], False, tkwType = 1);
If RecData[CurRecNum]^.DataSize > mplMaxDataSize Then
Error (mpsDataTooBig, '');
(*
OutString (Char(opTypeRec));
OutWord (RecData[CurRecNum]^.RecID);
OutWord (RecData[CurRecNum]^.NumFields);
OutWord (RecData[CUrRecNum]^.DataSize);
*)
// what would we need:
// 1. vartype (byte)
// 2. offset (Word)
// 3. size (word)
// output record define OP
// output record ID
// output record variable types STRING needs size and how do we do array?
// output record size?
// ALSO need to output on createvariable for RECORD type
// need to add both to interpreter engine
// need to change interpreter to address vars by data pointer always?
End; End;
Procedure TParserEngine.DefineProc; Procedure TParserEngine.DefineProc;
@ -1994,6 +2024,8 @@ Begin
Else Else
Error (mpsUnknownIdent, IdentStr); Error (mpsUnknownIdent, IdentStr);
// need to support records here
VarChar := VarType2Char(VarType); VarChar := VarType2Char(VarType);
VarData[ProcVar]^.vType := VarType; VarData[ProcVar]^.vType := VarType;
@ -2036,9 +2068,9 @@ Begin
If (VarData[RV]^.vType <> Char2VarType(VarData[VN]^.Params[Count])) And (VarData[VN]^.Params[Count] <> '*') Then If (VarData[RV]^.vType <> Char2VarType(VarData[VN]^.Params[Count])) And (VarData[VN]^.Params[Count] <> '*') Then
Error (mpsTypeMismatch, ''); Error (mpsTypeMismatch, '');
// OutString (Char(opVariable)); // i dont think we need this OutWord (VarData[RV]^.VarID);
OutWord (VarData[RV]^.VarID); ParseArray (RV);
ParseArray (RV); ParseElement (RV, VarData[VN]^.Params[Count] <> '*', VarData[RV]^.vType);
// if = '*' and type iString then...do the string index // if = '*' and type iString then...do the string index
End Else Begin End Else Begin
@ -2074,13 +2106,15 @@ Begin
VC := FindVariable(IdentStr); VC := FindVariable(IdentStr);
If Not (VarData[VC]^.vType in vNums) Then Error(mpsNumExpected, ''); If Not (VarData[VC]^.vType in vNums) And (VarData[VC]^.vType <> iRecord) Then
Error(mpsNumExpected, '');
If UpdateInfo.ErrorType <> 0 Then Exit; If UpdateInfo.ErrorType <> 0 Then Exit;
OutWord (VarData[VC]^.VarID); OutWord (VarData[VC]^.VarID);
ParseArray (VC); ParseArray (VC);
GetStr (tkw[wSetVar], True, False); ParseElement (VC, True, iLongInt);
GetStr (tkw[wSetVar], True, False);
If UpdateInfo.ErrorType <> 0 Then Exit; If UpdateInfo.ErrorType <> 0 Then Exit;
@ -2432,8 +2466,8 @@ Begin
If Not VarData[vn]^.InProc Then Exit; If Not VarData[vn]^.InProc Then Exit;
If GetStr(tkw[wSetVar], False, False) Then Begin If GetStr(tkw[wSetVar], False, False) Then Begin
OutString (Char(opSetVar)); OutString (Char(opSetVar));
OutWord (VarData[VN]^.VarID); OutWord (VarData[VN]^.VarID);
ParseVariable (VarData[VN]^.vType); ParseVariable (VarData[VN]^.vType);
SetProcResult := True; SetProcResult := True;
@ -2443,6 +2477,7 @@ End;
Procedure TParserEngine.ParseIdent; Procedure TParserEngine.ParseIdent;
Var Var
VarNum : LongInt; VarNum : LongInt;
VT : TIdentTypes;
Begin Begin
PrevChar; PrevChar;
GetIdent(False); GetIdent(False);
@ -2468,14 +2503,17 @@ Begin
If VarData[VarNum]^.Proc Then Begin If VarData[VarNum]^.Proc Then Begin
If Not SetProcResult(VarNum) Then ExecuteProcedure(VarNum, False); If Not SetProcResult(VarNum) Then ExecuteProcedure(VarNum, False);
End Else Begin End Else Begin
OutString (Char(opSetVar)); OutString (Char(opSetVar));
OutWord (VarData[VarNum]^.VarID); OutWord (VarData[VarNum]^.VarID);
ParseArray (VarNum); ParseArray (VarNum);
VT := ParseElement (VarNum, False, iNone);
//will need to pull vartype from parse array here
GetChar; GetChar;
// should this only happen with a string? // prob shoud be iString check here. also need to
If Ch = tkw[wOpenArray] Then Begin If (Ch = tkw[wOpenArray]) Then Begin
OutString(Char(opStrArray)); OutString(Char(opStrArray));
ParseVarNumber; ParseVarNumber;
// check here to make sure is <= string length? // check here to make sure is <= string length?
@ -2485,7 +2523,7 @@ Begin
If Not GetStr(tkw[wSetVar], True, False) Then Exit; If Not GetStr(tkw[wSetVar], True, False) Then Exit;
ParseVariable(VarData[VarNum]^.vType); ParseVariable(VT);
End; End;
End; End;
End; End;
@ -2623,10 +2661,12 @@ Begin
Dispose (GotoData[Count]); Dispose (GotoData[Count]);
End; End;
CurGotoNum := SavedGoto; CurGotoNum := SavedGoto;
For Count := CurRecNum DownTo SavedRec + 1 Do For Count := CurRecNum DownTo SavedRec + 1 Do
Dispose (RecData[Count]); Dispose (RecData[Count]);
CurRecNum := SavedRec; CurRecNum := SavedRec;
For Count := CurConstNum DownTo SavedConst + 1 Do For Count := CurConstNum DownTo SavedConst + 1 Do
@ -2651,10 +2691,6 @@ Begin
FillChar (InFile[CurFile], SizeOf(InFile[CurFile]), 0); FillChar (InFile[CurFile], SizeOf(InFile[CurFile]), 0);
InFile[CurFile].LineCur := 1;
InFile[CurFile].LineSaved := 1;
InFile[CurFile].ColCur := 0;
InFile[CurFile].ColSaved := 0;
InFile[CurFile].Position := 1; InFile[CurFile].Position := 1;
InFile[CurFile].PosSaved := 1; InFile[CurFile].PosSaved := 1;
InFile[CurFile].Size := 1; InFile[CurFile].Size := 1;

View File

@ -48,8 +48,8 @@ Type
{$ENDIF} {$ENDIF}
Function GetErrorMsg : String; Function GetErrorMsg : String;
Procedure Error (Err: Byte; Str: String); Procedure Error (Err: Byte; Str: String);
Procedure MoveToPos (Num: LongInt); Procedure MoveToPos (Num: LongInt);
Procedure SkipBlock; Procedure SkipBlock;
Function CurFilePos : LongInt; Function CurFilePos : LongInt;
Procedure NextChar; Procedure NextChar;
@ -70,9 +70,9 @@ Type
Procedure SetNumber (VN: Word; R: Real; Var A: TArrayInfo); Procedure SetNumber (VN: Word; R: Real; Var A: TArrayInfo);
Procedure SetVariable (VarNum: Word); Procedure SetVariable (VarNum: Word);
Function DefineVariable (DataStart: Pointer; RecSize: Word) : LongInt; Function DefineVariable : LongInt;
Procedure DefineProcedure; Procedure DefineProcedure;
Procedure DefineRecord; //Procedure DefineRecordType;
Procedure StatementRepeatUntil; Procedure StatementRepeatUntil;
Function StatementIfThenElse : Byte; Function StatementIfThenElse : Byte;
@ -147,7 +147,7 @@ Begin
// ProcPos : LongInt; // ProcPos : LongInt;
// Data : PStack; // Data : PStack;
// ArrPos : Byte; // ArrPos : Byte;
// ArrDim : TArrayInfo; // ArrDims : TArrayInfo;
End; End;
{$ENDIF} {$ENDIF}
@ -934,12 +934,13 @@ Begin
End; End;
End; End;
Function TInterpEngine.DefineVariable (DataStart: Pointer; RecSize: Word) : LongInt; Function TInterpEngine.DefineVariable : LongInt;
Var Var
VarType : TIdentTypes; VarType : TIdentTypes;
NumVars : Word; NumVars : Word;
SavedVar : Word; SavedVar : Word;
StrSize : Word; StrSize : Word;
RecSize : Word;
Count : Word; Count : Word;
ArrayPos : Word; ArrayPos : Word;
ArrayData : TArrayInfo; ArrayData : TArrayInfo;
@ -962,6 +963,14 @@ Begin
NextChar; NextChar;
End; End;
If Ch = Char(opTypeRec) Then Begin
NextWord;
RecSize := W;
NextChar;
End;
If Ch = Char(opArrDef) Then Begin If Ch = Char(opArrDef) Then Begin
NextWord; NextWord;
@ -1011,15 +1020,10 @@ Begin
Result := DataSize; Result := DataSize;
If DataStart = NIL Then Begin GetMem (Data, DataSize);
GetMem (Data, DataSize); FillChar (Data^, DataSize, 0);
FillChar (Data^, DataSize, 0);
Kill := True; Kill := True;
End Else Begin
Data := DataStart;
Kill := False;
End;
End; End;
End; End;
@ -2024,37 +2028,10 @@ Begin
PrevChar; PrevChar;
End; End;
Procedure TInterpEngine.DefineRecord; //Procedure TInterpEngine.DefineRecordType;
Var //Begin
Count : LongInt; //asdf
RecSize : LongInt; //End;
Begin
NextWord;
Inc (CurRecNum);
New (RecData[CurRecNum]);
// Holds ID info for all variables in this record
RecData[CurRecNum]^.RecStart := CurVarNum + 2; {+1 is base}
RecData[CurRecNum]^.NumFields := W;
NextWord;
RecSize := W;
NextChar; // opVarDeclare
DefineVariable (NIL, RecSize); // Base record identifier
RecSize := 1;
For Count := 1 to RecData[CurRecNum]^.NumFields Do Begin
NextChar; // opVarDeclare
Inc (RecSize, DefineVariable(@TStack(VarData[RecData[CurRecNum]^.RecStart - 1]^.Data^)[RecSize], 0));
End;
End;
Function TInterpEngine.ExecuteBlock (StartVar, StartRec: Word) : Byte; Function TInterpEngine.ExecuteBlock (StartVar, StartRec: Word) : Byte;
Var Var
@ -2085,7 +2062,7 @@ Begin
Self.ExecuteBlock(CurVarNum, CurRecNum); Self.ExecuteBlock(CurVarNum, CurRecNum);
End; End;
{1} opBlockClose : Break; {1} opBlockClose : Break;
{2} opVarDeclare : DefineVariable (NIL, 0); {2} opVarDeclare : DefineVariable;
{12} opSetVar : Begin {12} opSetVar : Begin
NextWord; NextWord;
SetVariable(FindVariable(W)); SetVariable(FindVariable(W));
@ -2116,7 +2093,7 @@ Begin
Break; Break;
End; End;
End; End;
{52} opTypeRec : DefineRecord; //{52} opTypeRec : DefineRecordType;
{53} opBreak : Begin {53} opBreak : Begin
MoveToPos (BlockStart + BlockSize); MoveToPos (BlockStart + BlockSize);
Result := 1; Result := 1;

View File

@ -230,9 +230,20 @@ Const
Type Type
{$IFNDEF MPLPARSER} {$IFNDEF MPLPARSER}
PStack = ^TStack; PStack = ^TStack;
TStack = Array[1..mplMaxDataSize] of Byte; TStack = Array[1..mplMaxDataSize] of Byte;
TArrayInfo = Array[1..mplMaxArrayDem] of Word; TArrayInfo = Array[1..mplMaxArrayDem] of Word;
TRecordInfo = Record
vType : Byte;
Offset : Word;
DataSize : Word;
End;
//TVarInfo = Record
// AInfo : Array[1..mplMaxArrayDem] of Word;
// RInfo : Word;
// End;
// Basically, an ArrayInfo will have an appended Offset for DataPtr
// if it is a record and probably some sort of record element ID
(* (*
// MEMORY SAVING... could be 28 bytes per var?!?! // MEMORY SAVING... could be 28 bytes per var?!?!
@ -265,11 +276,17 @@ Type
ArrDim : TArrayInfo; ArrDim : TArrayInfo;
End; End;
TRecordElement = Record
ESize : Word;
Offset : Word;
End;
PRecordRec = ^TRecordRec; PRecordRec = ^TRecordRec;
TRecordRec = Record TRecordRec = Record
// RecID : Word; needed when Record variable type is added RecID : Word;
RecStart : Word; Fields : Word;
NumFields : Word; DataSize : Word;
Element : Array[1..mplMaxRecFields] of TRecordElement;
End; End;
VarDataRec = Array[1..mplMaxVars] of PVarRec; VarDataRec = Array[1..mplMaxVars] of PVarRec;
@ -285,6 +302,7 @@ Type
InProc : Boolean; InProc : Boolean;
Proc : Boolean; Proc : Boolean;
ArrPos : Byte; ArrPos : Byte;
RecID : Word;
End; End;
PGotoRec = ^TGotoRec; PGotoRec = ^TGotoRec;