diff --git a/exec/wwiv.src b/exec/wwiv.src
new file mode 100644
index 0000000000000000000000000000000000000000..a05ec57a7c5d86397ca75abd9066061c0d842c79
--- /dev/null
+++ b/exec/wwiv.src
@@ -0,0 +1,821 @@
+# WWIV emulation script for BAJA.  It's as close to the real thing as the
+# compiler would allow.  Enjoy.  By Kitsune@1:264/227
+################################# Begins Here #################################
+
+!include sbbsdefs.inc
+
+# Set return point for main menu commands (via end_cmd)
+cmd_home
+
+# Display TEXT\MENU\MAIN.* if not in expert mode
+compare_ars expert
+if_false
+	cls
+	menu wwiv/main
+	end_if
+
+# Update node status
+node_action NODE_MAIN
+async
+
+# Display main Prompt
+compare_ars exempt T
+if_true
+	print "\r\nnT - @TUSED@\n\r"
+else
+	print "\r\nnT - @TLEFT@\n\r"
+	end_if
+print "yh(@GN@:@SN@) (@GRP@: @SUBL@) : n"
+
+# Get key (with / extended commands allowed)
+getkeye
+
+# Do nothing for control keys and space
+cmdkey ^@
+	end_cmd
+cmdkey ^M
+	end_cmd
+cmdkey ^S
+	end_cmd
+ cmdkey  "
+	end_cmd
+
+# Write command to log file
+logkey_comma
+
+# Hitting number changes current sub-board
+cmdkey digit
+	ungetkey
+	msg_get_sub_num
+	end_cmd
+
+# Hitting /number changes current group
+cmdkey edigit
+	ungetkey
+	msg_get_grp_num
+	end_cmd
+
+# Show the key hit
+printkey
+
+# Next sub-board
+cmdkey >
+	msg_subboard_up
+	end_cmd
+cmdkey }
+	msg_subboard_up
+	end_cmd
+cmdkey +
+	msg_subboard_up
+	end_cmd
+cmdkey =
+	msg_subboard_up
+	end_cmd
+
+# Previous sub-board
+cmdkey <
+	msg_subboard_down
+	end_cmd
+cmdkey {
+	msg_subboard_down
+	end_cmd
+cmdkey -
+	msg_subboard_down
+	end_cmd
+
+# Next group
+cmdkey ]
+	msg_group_up
+	end_cmd
+
+# Previous group
+cmdkey [
+	msg_group_down
+	end_cmd
+
+# String commands start with a semicolon
+cmdkey ;
+	getstrupr 40
+	exec_bin str_cmds
+	end_cmd
+
+cmdkey T
+	print "\r\n"
+        call file_transfers
+        end_cmd
+
+crlf
+pause_reset
+
+# Menu
+cmdkey ?
+	compare_ars expert
+	if_true
+		menu wwiv/main
+		end_if
+	end_cmd
+
+# Sysop Menu
+compare_ars level 90 or exempt Q or I or N
+if_true
+	cmdkey !
+		menu sysmain
+		end_cmd
+	end_if
+
+# Commands
+
+cmdkey A
+	auto_message
+	end_cmd
+
+cmdkey C
+	exec_bin chat_sec
+	end_cmd
+
+cmdkey D
+	user_defaults
+	end_cmd
+
+cmdkey E
+	call E-mail
+	end_cmd
+
+cmdkey F
+	print "\r\nchFind Text in Messages\r\n"
+	msg_find_text
+	end_cmd
+
+cmdkey /F
+	msg_find_text_all
+	end_cmd
+
+cmdkey G
+	text_file_section
+	end_cmd
+
+cmdkey I
+	call main_info
+	end_cmd
+
+cmdkey J
+	msg_select_area
+	end_cmd
+
+cmdkey L
+	exec_xtrn SBL
+	end_cmd
+
+cmdkey /L
+	nodelist_all
+	end_cmd
+
+cmdkey $
+	minute_bank
+	end_cmd
+
+cmdkey N
+	print "\r\nchNew Message Scan\r\n"
+	msg_new_scan
+	end_cmd
+
+cmdkey /N
+	msg_new_scan_all
+	end_cmd
+
+cmdkey O
+	file_download_batch
+	if_true
+		end_cmd
+                end_if
+	logoff
+	end_cmd
+
+cmdkey /O
+	file_download_batch
+	if_true
+		end_cmd
+                end_if
+	logoff_fast
+	end_cmd
+
+cmdkey P
+	msg_post
+	end_cmd
+
+cmdkey M
+	msg_qwk
+	end_cmd
+
+cmdkey R
+	msg_read
+	end_cmd
+
+cmdkey S
+	msg_read
+	end_cmd
+
+cmdkey Y
+	print "\r\nchScan for Messages Posted to You\r\n"
+	msg_your_scan
+	end_cmd
+
+cmdkey /S
+	msg_your_scan_all
+	end_cmd
+
+cmdkey U
+	print "\r\nchList Users\r\n"
+	mnemonics "\r\n~Logons Today, ~Sub-board, or ~All: "
+	getcmd LSA\r
+
+	cmdkey L
+		userlist_logons
+		end_cmd
+	cmdkey S
+		userlist_sub
+		end_cmd
+	cmdkey A
+		userlist_all
+		end_cmd
+
+	# fall-through for CR, Ctrl-C, etc
+	end_cmd
+
+cmdkey /U
+	userlist_all
+	end_cmd
+
+cmdkey .
+	xtrn_section
+	end_cmd
+
+cmdkey Z
+	print "\r\nchContinuous New Message Scan\r\n"
+	msg_cont_scan
+	end_cmd
+
+cmdkey /Z
+	msg_cont_scan_all
+	end_cmd
+
+cmdkey *
+	msg_show_subboards
+	end_cmd
+
+cmdkey /*
+	msg_show_groups
+	end_cmd
+
+cmdkey &
+	call main_cfg
+	end_cmd
+
+cmdkey #
+	print "\r\nchType the actual number, not the symbol.\r\n"
+	end_cmd
+
+cmdkey /#
+	print "\r\nchType the actual number, not the symbol.\r\n"
+        end_cmd
+
+# fall through
+print "\r\nchUnrecognized command."
+compare_ars expert
+if_true
+	print " Hit 'i?nch' for a menu."
+	end_if
+crlf
+end_cmd
+
+# shouldn't hit next line
+print "Problem in command shell."
+pause
+hangup
+
+############################### E-mail Section ################################
+
+:e-mail
+cmd_home
+compare_ars expert
+if_false
+	menu E-MAIL
+	end_if
+async
+print "\r\nyhE-mail: n"
+getcmd ?SRFNUKQ\r
+logkey
+
+cmdkey ?
+	compare_ars expert
+	if_true
+		menu E-MAIL
+		end_if
+	end_cmd
+
+cmdkey S
+	print "_\r\nbhE-mail (User name or number): w"
+	getname 25
+	compare_str ""
+	if_true
+		end_cmd
+		end_if
+	compare_str "SYSOP"
+	if_true
+		setstr "1"
+		end_if
+	mail_send
+	end_cmd
+
+cmdkey U
+	print "_\r\nbhE-mail (User name or number): w"
+	getname 25
+	compare_str ""
+	if_true
+		end_cmd
+		end_if
+	compare_str "SYSOP"
+	if_true
+		setstr "1"
+		end_if
+	mail_send_file
+        end_cmd
+
+cmdkey R
+	mail_read
+	end_cmd
+
+cmdkey F
+	setstr "1"
+	mail_send_feedback
+	end_cmd
+
+cmdkey N
+	mail_send_netmail
+	end_cmd
+
+cmdkey K
+	mail_read_sent
+	end_cmd
+
+cmdkey Q
+	cmd_pop
+	return
+	end_cmd
+
+cmd_pop
+return
+
+############################ Main Info Section	###############################
+
+:main_info
+cmd_home
+compare_ars expert
+if_false
+	menu MAININFO
+	end_if
+async
+print "\r\nyhInfo: n"
+getcmd ?QISVY\r
+logkey
+
+cmdkey ?
+	compare_ars expert
+	if_true
+		menu MAININFO
+		end_if
+	end_cmd
+
+cmdkey I
+	info_system
+	end_cmd
+
+cmdkey S
+	info_subboard
+	end_cmd
+
+cmdkey Y
+	info_user
+	end_cmd
+
+cmdkey V
+	info_version
+	end_cmd
+
+cmdkey Q
+	cmd_pop
+	return
+	end_cmd
+
+cmd_pop
+return
+
+########################### Main Config Section  ##############################
+
+:main_cfg
+
+compare_ars expert
+if_false
+	menu MAINCFG
+	end_if
+async
+print "\r\nyhConfig: n"
+getcmd ?QNPIS\r
+logkey
+
+cmdkey ?
+	compare_ars expert
+	if_true
+		menu MAINCFG
+		end_if
+	goto main_cfg
+	end_cmd
+
+cmdkey N
+	msg_new_scan_cfg
+	return
+	end_cmd
+
+cmdkey S
+	msg_your_scan_cfg
+	return
+	end_cmd
+
+cmdkey P
+	msg_ptrs_cfg
+	return
+	end_cmd
+
+cmdkey I
+	msg_ptrs_reinit
+	return
+	end_cmd
+
+return
+
+########################### File Transfer Section #############################
+
+:file_transfers
+
+cmd_home
+
+compare_ars expert
+if_false
+	cls
+	menu wwiv/transfer
+	end_if
+
+# Update node status
+node_action NODE_XFER
+async
+
+# Display main Prompt
+compare_ars exempt T
+if_true
+	print "\r\nnT - @TUSED@\n\r"
+else
+	print "\r\nnT - @TLEFT@\n\r"
+	end_if
+print "yh[@LN@:@DN@] [@LIB@: @DIRL@] : n"
+
+# Get key (with / extended commands allowed)
+getkeye
+
+# Do nothing for control keys and space
+cmdkey ^@
+	end_cmd
+cmdkey ^M
+	end_cmd
+cmdkey ^S
+	end_cmd
+ cmdkey  "
+	end_cmd
+
+# Write command to log file
+logkey_comma
+
+# Hitting number changes current sub-board
+cmdkey digit
+	ungetkey
+	file_get_dir_num
+	end_cmd
+
+# Hitting /number changes current group
+cmdkey edigit
+	ungetkey
+	file_get_lib_num
+	end_cmd
+
+# Show the key hit
+printkey
+
+# Next directory
+cmdkey >
+	file_directory_up
+	end_cmd
+cmdkey }
+	file_directory_up
+	end_cmd
+cmdkey +
+	file_directory_up
+	end_cmd
+cmdkey =
+	file_directory_up
+	end_cmd
+
+# Previous directory
+cmdkey <
+	file_directory_down
+	end_cmd
+cmdkey {
+	file_directory_down
+	end_cmd
+cmdkey -
+	file_directory_down
+	end_cmd
+
+# Next library
+cmdkey ]
+	file_library_up
+	end_cmd
+
+# Previous library
+cmdkey [
+	file_library_down
+	end_cmd
+
+# String commands start with a semicolon
+cmdkey ;
+	getstrupr 40
+	exec_bin str_cmds
+	end_cmd
+
+cmdkey Q
+        cmd_pop
+        print "\r\n"
+	return
+        end_cmd
+
+crlf
+pause_reset
+
+# Menu
+cmdkey ?
+	compare_ars expert
+	if_true
+		menu wwiv/TRANSFER
+		end_if
+	end_cmd
+
+# Sysop Menu
+compare_ars level 90
+if_true
+	cmdkey !
+		menu sysxfer
+		end_cmd
+	end_if
+
+# Commands
+
+cmdkey B
+	file_batch_section
+	end_cmd
+
+cmdkey C
+	exec_bin chat_sec
+	end_cmd
+
+cmdkey D
+	print "\r\nchDownload File(s)\r\n"
+	file_download_batch
+	if_true
+		end_cmd
+		end_if
+	getfilespec
+	if_true
+		file_download
+		end_if
+	end_cmd
+
+cmdkey /D
+	print "\r\nchDownload File(s) from User(s)\r\n"
+	file_download_user
+	end_cmd
+
+cmdkey E
+	print "\r\nchList Extended File Information\r\n"
+	getfilespec
+	if_true
+		file_list_extended
+		end_if
+	end_cmd
+
+cmdkey F
+	print "\r\nchFind Text in File Descriptions (no wildcards)\r\n"
+	file_find_text
+	end_cmd
+
+cmdkey /F
+	file_find_text_all
+        end_cmd
+
+cmdkey I
+	call file_info
+	end_cmd
+
+cmdkey J
+	file_select_area
+	end_cmd
+
+cmdkey L
+	print "\r\nchList Files\r\n"
+	getfilespec
+	if_true
+		file_list
+		end_if
+	end_cmd
+
+cmdkey /L
+	nodelist_all
+	end_cmd
+
+cmdkey N
+	print "\r\nchNew File Scan\r\n"
+	file_new_scan
+	end_cmd
+
+cmdkey /N
+	file_new_scan_all
+	end_cmd
+
+cmdkey O
+	file_download_batch
+	if_true
+		end_cmd
+                end_if
+	logoff
+	end_cmd
+
+cmdkey /O
+	file_download_batch
+	if_true
+		end_cmd
+                end_if
+	logoff_fast
+        end_cmd
+
+cmdkey R
+	print "\r\nchRemove/Edit File(s)\r\n"
+	getfilespec
+	if_true
+		file_remove
+		end_if
+	end_cmd
+
+cmdkey S
+	print "\r\nchSearch for Filename(s)\r\n"
+	file_find_name
+	end_cmd
+
+cmdkey /S
+	file_find_name_all
+	end_cmd
+
+cmdkey G
+	file_temp_section
+	end_cmd
+
+cmdkey U
+	print "\r\nchUpload File\r\n"
+	file_upload
+	end_cmd
+
+cmdkey /U
+	print "\r\nchUpload File to User\r\n"
+	file_upload_user
+	end_cmd
+
+cmdkey V
+	print "\r\nchView File(s)\r\n"
+	getfilespec
+	if_true
+		file_view
+		end_if
+	end_cmd
+
+cmdkey Z
+	print "\r\nchUpload File to Sysop\r\n"
+	file_upload_sysop
+	end_cmd
+
+cmdkey *
+	file_show_directories
+	end_cmd
+
+cmdkey /*
+	file_show_libraries
+	end_cmd
+
+cmdkey T
+	:xfercfg
+	compare_ars expert
+	if_false
+		menu XFERCFG
+		end_if
+	async
+	print "\r\nyhConfig: n"
+	getcmd ?QBP\r
+	logkey
+
+	cmdkey ?
+		compare_ars expert
+		if_true
+			menu XFERCFG
+			end_if
+		goto xfercfg
+		end_cmd
+
+	cmdkey P
+		file_ptrs_cfg
+		end_cmd
+
+	cmdkey B
+		toggle_user_misc UM_BATCHFLAG
+		end_cmd
+	end_cmd
+
+cmdkey #
+	print "\r\nchType the actual number, not the symbol.\r\n"
+	end_cmd
+
+cmdkey /#
+	print "\r\nchType the actual number, not the symbol.\r\n"
+        end_cmd
+
+cmdkey P
+	file_ptrs_cfg
+	end_cmd
+
+cmdkey Y
+	info_user
+	end_cmd
+
+# fall through
+print "\r\nchUnrecognized command."
+compare_ars expert
+if_true
+	print " Hit 'i?nch' for a menu."
+	end_if
+crlf
+end_cmd
+
+# shouldn't hit next line
+print "Problem in command shell."
+pause
+hangup
+
+############################ File Info Section	###############################
+
+:file_info
+cmd_home
+compare_ars expert
+if_false
+	menu XFERINFO
+	end_if
+async
+print "\r\nyhInfo: n"
+getcmd ?TYDUQ\r
+logkey
+
+cmdkey ?
+	compare_ars expert
+	if_true
+		menu XFERINFO
+		end_if
+	end_cmd
+
+cmdkey T
+	info_xfer_policy
+	end_cmd
+
+cmdkey Y
+	info_user
+	end_cmd
+
+cmdkey D
+	info_directory
+	end_cmd
+
+cmdkey U
+	userlist_dir
+	end_cmd
+
+cmdkey Q
+	cmd_pop
+	return
+	end_cmd
+
+cmd_pop
+return
+
+#end of DEFAULT.CST