diff --git a/38 Fur Trader/javascript/furtrader.html b/38 Fur Trader/javascript/furtrader.html
new file mode 100644
index 00000000..c7695a09
--- /dev/null
+++ b/38 Fur Trader/javascript/furtrader.html
@@ -0,0 +1,9 @@
+
+
+FUR TRADER
+
+
+
+
+
+
diff --git a/38 Fur Trader/javascript/furtrader.js b/38 Fur Trader/javascript/furtrader.js
new file mode 100644
index 00000000..c27ab049
--- /dev/null
+++ b/38 Fur Trader/javascript/furtrader.js
@@ -0,0 +1,227 @@
+// FUR TRADER
+//
+// Converted from BASIC to Javascript by Oscar Toledo G. (nanochess)
+//
+
+function print(str)
+{
+ document.getElementById("output").appendChild(document.createTextNode(str));
+}
+
+function input()
+{
+ var input_element;
+ var input_str;
+
+ return new Promise(function (resolve) {
+ input_element = document.createElement("INPUT");
+
+ print("? ");
+ input_element.setAttribute("type", "text");
+ input_element.setAttribute("length", "50");
+ document.getElementById("output").appendChild(input_element);
+ input_element.focus();
+ input_str = undefined;
+ input_element.addEventListener("keydown", function (event) {
+ if (event.keyCode == 13) {
+ input_str = input_element.value;
+ document.getElementById("output").removeChild(input_element);
+ print(input_str);
+ print("\n");
+ resolve(input_str);
+ }
+ });
+ });
+}
+
+function tab(space)
+{
+ var str = "";
+ while (space-- > 0)
+ str += " ";
+ return str;
+}
+
+var f = [];
+var bs = [, "MINK", "BEAVER", "ERMINE", "FOX"];
+
+function reset_stats()
+{
+ for (var j = 1; j <= 4; j++)
+ f[j] = 0;
+}
+
+// Main program
+async function main()
+{
+ print(tab(31) + "FUR TRADER\n");
+ print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
+ print("\n");
+ print("\n");
+ print("\n");
+ first_time = true;
+ while (1) {
+ if (first_time) {
+ print("YOU ARE THE LEADER OF A FRENCH FUR TRADING EXPEDITION IN \n");
+ print("1776 LEAVING THE LAKE ONTARIO AREA TO SELL FURS AND GET\n");
+ print("SUPPLIES FOR THE NEXT YEAR. YOU HAVE A CHOICE OF THREE\n");
+ print("FORTS AT WHICH YOU MAY TRADE. THE COST OF SUPPLIES\n");
+ print("AND THE AMOUNT YOU RECEIVE FOR YOUR FURS WILL DEPEND\n");
+ print("ON THE FORT THAT YOU CHOOSE.\n");
+ i = 600;
+ print("DO YOU WISH TO TRADE FURS?\n");
+ first_time = false;
+ }
+ print("ANSWER YES OR NO\t");
+ str = await input();
+ if (str == "NO")
+ break;
+ print("\n");
+ print("YOU HAVE $" + i + " SAVINGS.\n");
+ print("AND 190 FURS TO BEGIN THE EXPEDITION.\n");
+ e1 = Math.floor((0.15 * Math.random() + 0.95) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ b1 = Math.floor((0.25 * Math.random() + 1.00) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ print("\n");
+ print("YOUR 190 FURS ARE DISTRIBUTED AMONG THE FOLLOWING\n");
+ print("KINDS OF PELTS: MINK, BEAVER, ERMINE AND FOX.\n");
+ reset_stats();
+ for (j = 1; j <= 4; j++) {
+ print("\n");
+ print("HOW MANY " + bs[j] + " PELTS DO YOU HAVE\n");
+ f[j] = parseInt(await input());
+ f[0] = f[1] + f[2] + f[3] + f[4];
+ if (f[0] == 190)
+ break;
+ if (f[0] > 190) {
+ print("\n");
+ print("YOU MAY NOT HAVE THAT MANY FURS.\n");
+ print("DO NOT TRY TO CHEAT. I CAN ADD.\n");
+ print("YOU MUST START AGAIN.\n");
+ break;
+ }
+ }
+ if (f[0] > 190) {
+ first_time = true;
+ continue;
+ }
+ print("YOU MAY TRADE YOUR FURS AT FORT 1, FORT 2,\n");
+ print("OR FORT 3. FORT 1 IS FORT HOCHELAGA (MONTREAL)\n");
+ print("AND IS UNDER THE PROTECTION OF THE FRENCH ARMY.\n");
+ print("FORT 2 IS FORT STADACONA (QUEBEC) AND IS UNDER THE\n");
+ print("PROTECTION OF THE FRENCH ARMY. HOWEVER, YOU MUST\n");
+ print("MAKE A PORTAGE AND CROSS THE LACHINE RAPIDS.\n");
+ print("FORT 3 IS FORT NEW YORK AND IS UNDER DUTCH CONTROL.\n");
+ print("YOU MUST CROSS THROUGH IROQUOIS LAND.\n");
+ do {
+ print("ANSWER 1, 2, OR 3.\n");
+ b = parseInt(await input());
+ if (b == 1) {
+ print("YOU HAVE CHOSEN THE EASIEST ROUTE. HOWEVER, THE FORT\n");
+ print("IS FAR FROM ANY SEAPORT. THE VALUE\n");
+ print("YOU RECEIVE FOR YOUR FURS WILL BE LOW AND THE COST\n");
+ print("OF SUPPLIES HIGHER THAN AT FORTS STADACONA OR NEW YORK.\n");
+ } else if (b == 2) {
+ print("YOU HAVE CHOSEN A HARD ROUTE. IT IS, IN COMPARSION,\n");
+ print("HARDER THAN THE ROUTE TO HOCHELAGA BUT EASIER THAN\n");
+ print("THE ROUTE TO NEW YORK. YOU WILL RECEIVE AN AVERAGE VALUE\n");
+ print("FOR YOUR FURS AND THE COST OF YOUR SUPPLIES WILL BE AVERAGE.\n");
+ } else {
+ print("YOU HAVE CHOSEN THE MOST DIFFICULT ROUTE. AT\n");
+ print("FORT NEW YORK YOU WILL RECEIVE THE HIGHEST VALUE\n");
+ print("FOR YOUR FURS. THE COST OF YOUR SUPPLIES\n");
+ print("WILL BE LOWER THAN AT ALL THE OTHER FORTS.\n");
+ }
+ if (b >= 1 && b <= 3) {
+ print("DO YOU WANT TO TRADE AT ANOTHER FORT?\n");
+ print("ANSWER YES OR NO\t");
+ str = await input();
+ if (str == "YES") {
+ b = 0;
+ }
+ }
+ } while (b < 1 || b > 3) ;
+ show_beaver = true;
+ show_all = true;
+ if (b == 1) {
+ i -= 160;
+ print("\n");
+ m1 = Math.floor((0.2 * Math.random() + 0.7) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ e1 = Math.floor((0.2 * Math.random() + 0.65) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ b1 = Math.floor((0.2 * Math.random() + 0.75) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ d1 = Math.floor((0.2 * Math.random() + 0.8) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ print("SUPPLIES AT FORT HOCHELAGA COST $150.00.\n");
+ print("YOUR TRAVEL EXPENSES TO HOCHELAGA WERE $10.00.\n");
+ } else if (b == 2) {
+ i -= 140;
+ print("\n");
+ m1 = Math.floor((0.3 * Math.random() + 0.85) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ e1 = Math.floor((0.15 * Math.random() + 0.8) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ b1 = Math.floor((0.2 * Math.random() + 0.9) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ p = Math.floor(10 * Math.random()) + 1;
+ if (p <= 2) {
+ f[2] = 0;
+ print("YOUR BEAVER WERE TOO HEAVY TO CARRY ACROSS\n");
+ print("THE PORTAGE. YOU HAD TO LEAVE THE PELTS, BUT FOUND\n");
+ print("THEM STOLEN WHEN YOU RETURNED.\n");
+ show_beaver = false;
+ } else if (p <= 6) {
+ print("YOU ARRIVED SAFELY AT FORT STADACONA.\n");
+ } else if (p <= 8) {
+ reset_stats();
+ print("YOUR CANOE UPSET IN THE LACHINE RAPIDS. YOU\n");
+ print("LOST ALL YOUR FURS.\n");
+ show_all = false;
+ } else if (p <= 10) {
+ f[4] = 0;
+ print("YOUR FOX PELTS WERE NOT CURED PROPERLY.\n");
+ print("NO ONE WILL BUY THEM.\n");
+ }
+ print("SUPPLIES AT FORT STADACONA COST $125.00.\n");
+ print("YOUR TRAVEL EXPENSES TO STADACONA WERE $15.00.\n");
+
+ d1 = Math.floor((0.2 * Math.random() + 0.8) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ } else if (b == 3) {
+ i -= 105;
+ print("\n");
+ m1 = Math.floor((0.15 * Math.random() + 1.05) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ d1 = Math.floor((0.25 * Math.random() + 1.1) * Math.pow(10, 2) + 0.5) / Math.pow(10, 2);
+ p = Math.floor(10 * Math.random()) + 1;
+ if (p <= 2) {
+ print("YOU WERE ATTACKED BY A PARTY OF IROQUOIS.\n");
+ print("ALL PEOPLE IN YOUR TRADING GROUP WERE\n");
+ print("KILLED. THIS ENDS THE GAME.\n");
+ break;
+ } else if (p <= 6) {
+ print("YOU WERE LUCKY. YOU ARRIVED SAFELY\n");
+ print("AT FORT NEW YORK.\n");
+ } else if (p <= 8) {
+ reset_stats();
+ print("YOU NARROWLY ESCAPED AN IROQUOIS RAIDING PARTY.\n");
+ print("HOWEVER, YOU HAD TO LEAVE ALL YOUR FURS BEHIND.\n");
+ show_all = false;
+ } else if (p <= 10) {
+ b1 /= 2;
+ m1 /= 2;
+ print("YOUR MINK AND BEAVER WERE DAMAGED ON YOUR TRIP.\n");
+ print("YOU RECEIVE ONLY HALF THE CURRENT PRICE FOR THESE FURS.\n");
+ }
+ print("SUPPLIES AT NEW YORK COST $80.00.\n");
+ print("YOUR TRAVEL EXPENSES TO NEW YORK WERE $25.00.\n");
+ }
+ print("\n");
+ if (show_all) {
+ if (show_beaver)
+ print("YOUR BEAVER SOLD FOR $" + b1 * f[2] + " ");
+ print("YOUR FOX SOLD FOR $" + d1 * f[4] + "\n");
+ print("YOUR ERMINE SOLD FOR $" + e1 * f[3] + " ");
+ print("YOUR MINK SOLD FOR $" + m1 * f[1] + "\n");
+ }
+ i += m1 * f[1] + b1 * f[2] + e1 * f[3] + d1 * f[4];
+ print("\n");
+ print("YOU NOW HAVE $" + i + " INCLUDING YOUR PREVIOUS SAVINGS\n");
+ print("\n");
+ print("DO YOU WANT TO TRADE FURS NEXT YEAR?\n");
+ }
+}
+
+main();