diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
deleted file mode 100644
index 9daeafb9..00000000
--- a/.github/pull_request_template.md
+++ /dev/null
@@ -1 +0,0 @@
-test
diff --git a/Boardfiles/Seeed_XIAO_nRF52840_Sense/pinout.map b/Boardfiles/Seeed_XIAO_nRF52840_Sense/pinout.map
index 45421ec5..885749df 100644
--- a/Boardfiles/Seeed_XIAO_nRF52840_Sense/pinout.map
+++ b/Boardfiles/Seeed_XIAO_nRF52840_Sense/pinout.map
@@ -1,37 +1,15 @@
- ,----| |-----.
- RESET |1 \---/ (-)|
- 3.3v |o usbC ,---| - GND
- 3.3v |o | - |
- GND |o .---| - VBAT
-[ DAC_2 | U1RXD | ADC2 CH7 | RTC | GPIO18 ] A0 |o B (+) o| VBAT
-[ DAC_1 | U1TXD | ADC2 CH6 | RTC | GPIO18 ] A1 |o (RESET) o| EN
-[ XTAL_32K_N | U0CTS | ADC2 CH5 | RTC | GPIO18 ] A2 |o o| VBUS
-[ XTAL_32K_P | U0RTS | ADC2 CH4 | RTC | GPIO18 ] A3 |o o| D13 [ GPIO13 | RTC | ADC2 CH2 | FSPIQ | T13 ]
- [ T14 | FSPIWP | ADC2 CH3 | RTC | GPIO18 ] A4 |o (BOOT) o| D12 [ GPIO12 | RTC | ADC2 CH1 | FSPICLK | T12 ]
- [ T8 | | ADC2 CH7 | RTC | GPIO18 ] A5 |o B o| D11 [ GPIO11 | RTC | ADC2 CH0 | FSPID | T11 ]
- [ FSPICLK | | RTC | GPIO18 ] SCK |o I2C o| D10 [ GPIO10 | RTC | ADC1 CH9 | FSPICS0 | T10 ]
- [ FSPID | | RTC | GPIO18 ] MOSI |o [....] o| D9 [ GPIO9 | RTC | ADC1 CH8 | FSPIHD | T9 ]
- [ FSPIQ | | RTC | GPIO18 ] MISO |o o| D6 [ GPIO6 | RTC | ADC1 CH5 | | T6 ]
- [ FSPIWP | | RTC | GPIO18 ] RX |o ,--------. o| D5 [ GPIO5 | RTC | ADC1 CH4 | | T5 ]
- [ MTCK | | RTC | GPIO18 ] TX |o | | o| SCL [ GPIO4 | RTC | ADC1 CH3 | | T4 ]
- DEBUG_TX |o | ESP32 | o| SDA [ GPIO3 | RTC | ADC1 CH2 | | T4 ]
- | | S2 | |
- |O | | O|
- `--------------'
- ,---
- .| O - GND ,----.
- .| O - VSENSOR | GR | - [ NEOPIXEL_POWER | GPIO21 | RTC ]
- .| O - SDA [ GPIO3 | RTC | ADC1 CH2 | T3 ] | B | - [ NEOPIXEL | GPIO33 | RTC ]
- .| O - SCL [ GPIO4 | RTC | ADC1 CH3 | T4 ] `----'
- `---
-
-
+[ P0.02 | | A0 ] D00 ,---| |---. 5V0
+[ P0.03 | | A1 ] D01 |RST CRG| GND
+[ P0.28 | | A2 ] D02 | LED| 3V3
+[ P0.29 | | A3 ] D03 | ,-------. | D10 [ MOSI | P1.15 ]
+[ P0.04 | SDA | A4 ] D04 | | nRF | | D09 [ MISO | P1.14 ]
+[ P0.05 | SCL | A5 ] D05 | `-------' | D08 [ SCK | P1.13 ]
+[ P1.11 | TX | ] D06 `-----------' D07 [ RX | P1.12 ]
-Adafruit Feather ESP32-S2
+Seeed XIAO nRF52840 (Sense)
-SoC : ESP32-S2
-RAM : 2048KB
-Storage : SOC (4MB)
-USB ports : 1 (of which 0 USB3)
-Wi-fi : True
+SoC : nRF52840
+RAM : 256KB
+Storage : QSPI (2MB)
+Wi-fi : False
Bluetooth : True
diff --git a/Boardfiles/adafruit_feather_esp32s2/pinout.map b/Boardfiles/adafruit_feather_esp32s2/pinout.map
index 45421ec5..3afca884 100644
--- a/Boardfiles/adafruit_feather_esp32s2/pinout.map
+++ b/Boardfiles/adafruit_feather_esp32s2/pinout.map
@@ -30,8 +30,7 @@
Adafruit Feather ESP32-S2
SoC : ESP32-S2
-RAM : 2048KB
-Storage : SOC (4MB)
-USB ports : 1 (of which 0 USB3)
+RAM : 2368KB
+Storage : DIO (4MB)
Wi-fi : True
-Bluetooth : True
+Bluetooth : False
diff --git a/Boardfiles/adafruit_feather_esp32s3_tft/pinout.map b/Boardfiles/adafruit_feather_esp32s3_tft/pinout.map
index 45421ec5..0277d2b2 100644
--- a/Boardfiles/adafruit_feather_esp32s3_tft/pinout.map
+++ b/Boardfiles/adafruit_feather_esp32s3_tft/pinout.map
@@ -1,37 +1,37 @@
,----| |-----.
- RESET |1 \---/ (-)|
- 3.3v |o usbC ,---| - GND
- 3.3v |o | - |
- GND |o .---| - VBAT
-[ DAC_2 | U1RXD | ADC2 CH7 | RTC | GPIO18 ] A0 |o B (+) o| VBAT
-[ DAC_1 | U1TXD | ADC2 CH6 | RTC | GPIO18 ] A1 |o (RESET) o| EN
-[ XTAL_32K_N | U0CTS | ADC2 CH5 | RTC | GPIO18 ] A2 |o o| VBUS
-[ XTAL_32K_P | U0RTS | ADC2 CH4 | RTC | GPIO18 ] A3 |o o| D13 [ GPIO13 | RTC | ADC2 CH2 | FSPIQ | T13 ]
- [ T14 | FSPIWP | ADC2 CH3 | RTC | GPIO18 ] A4 |o (BOOT) o| D12 [ GPIO12 | RTC | ADC2 CH1 | FSPICLK | T12 ]
- [ T8 | | ADC2 CH7 | RTC | GPIO18 ] A5 |o B o| D11 [ GPIO11 | RTC | ADC2 CH0 | FSPID | T11 ]
- [ FSPICLK | | RTC | GPIO18 ] SCK |o I2C o| D10 [ GPIO10 | RTC | ADC1 CH9 | FSPICS0 | T10 ]
- [ FSPID | | RTC | GPIO18 ] MOSI |o [....] o| D9 [ GPIO9 | RTC | ADC1 CH8 | FSPIHD | T9 ]
- [ FSPIQ | | RTC | GPIO18 ] MISO |o o| D6 [ GPIO6 | RTC | ADC1 CH5 | | T6 ]
- [ FSPIWP | | RTC | GPIO18 ] RX |o ,--------. o| D5 [ GPIO5 | RTC | ADC1 CH4 | | T5 ]
- [ MTCK | | RTC | GPIO18 ] TX |o | | o| SCL [ GPIO4 | RTC | ADC1 CH3 | | T4 ]
- DEBUG_TX |o | ESP32 | o| SDA [ GPIO3 | RTC | ADC1 CH2 | | T4 ]
- | | S2 | |
- |O | | O|
+ BUTTON [ GPIO00 | RTC ] [ CHARGE ] ------- |O C `---` 13 O| LED [ GPIO13 | RTC | ADC2 CH2 | FSPIQ | T13 ]
+ ,----. RESET |1 usbC[] |
+ | GR | - [ NEOPIXEL | GPIO33 ] 3.3v |o Rst []I ,---| - GND
+ | B | - [ NEOPIXEL_POWER | GPIO34 ] 3.3v |o Boot[]2 | - |
+ `----' GND |o []C .---| - VBAT
+[ | U1RXD | ADC2 CH7 | RTC | GPIO18 ] A0 |o (+) o| VBAT
+[ | U1TXD | ADC2 CH6 | RTC | GPIO17 ] A1 |o ,--------. o| EN
+[ XTAL_32K_N | U0CTS | ADC2 CH5 | RTC | GPIO16 ] A2 |o | | o| VBUS
+[ XTAL_32K_P | U0RTS | ADC2 CH4 | RTC | GPIO15 ] A3 |o | E F | o| D13 [ GPIO13 | RTC | ADC2 CH2 | FSPIQ | T13 ]
+ [ T14 | FSPIWP | ADC2 CH3 | RTC | GPIO14 ] A4 |o | S E | o| D12 [ GPIO12 | RTC | ADC2 CH1 | FSPICLK | T12 ]
+ [ T8 | | ADC2 CH7 | RTC | GPIO08 ] A5 |o | T P A | o| D11 [ GPIO11 | RTC | ADC2 CH0 | FSPID | T11 ]
+ [ FSPICLK | | SPI/CPU | GPIO36 ] SCK |o | F 3 T | o| D10 [ GPIO10 | RTC | ADC1 CH9 | FSPICS0 | T10 ]
+ [ FSPID | | SPI/CPU | GPIO35 ] MOSI |o | T 2 E | o| D9 [ GPIO09 | RTC | ADC1 CH8 | FSPIHD | T9 ]
+ [ FSPIQ | | SPI/CPU | GPIO37 ] MISO |o | - R | o| D6 [ GPIO06 | RTC | ADC1 CH5 | | T6 ]
+ [ T2 | | ADC1 CH1 | RTC | GPIO02 ] RX |o | S | o| D5 [ GPIO05 | RTC | ADC1 CH4 | | T5 ]
+ [ T1 | | ADC1 CH0 | RTC | GPIO01 ] TX |o | 3 | o| SCL [ GPIO41 | CPU | | | MTDI ]
+ TXD0 |o | | o| SDA [ GPIO42 | CPU | | | MTMS ]
+ | `--------' |
+ |O F TFT S3 O|
`--------------'
,---
- .| O - GND ,----.
- .| O - VSENSOR | GR | - [ NEOPIXEL_POWER | GPIO21 | RTC ]
- .| O - SDA [ GPIO3 | RTC | ADC1 CH2 | T3 ] | B | - [ NEOPIXEL | GPIO33 | RTC ]
- .| O - SCL [ GPIO4 | RTC | ADC1 CH3 | T4 ] `----'
- `---
-
-
+ .| O - SCL [ GPIO41 | CPU | MTDI ] ,-------------------. TFT_I2C_POWER [ GPIO21 | RTC ]
+ .| O - SDA [ GPIO42 | CPU | MTMS ] | FEATHER | TFT_CS [ GPIO07 | RTC | ADC1 CH6 | T7 ]
+ .| O - VSENSOR | ESP32-S3 | TFT_DC [ GPIO39 | CPU | | MTCK ]
+ .| O - GND | TFT | TFT_RESET [ GPIO40 | CPU | | MTDO ]
+ `--- `-------------------' TFT_BACKLIGHT [ GPIO45 | CPU ]
-Adafruit Feather ESP32-S2
-SoC : ESP32-S2
-RAM : 2048KB
-Storage : SOC (4MB)
-USB ports : 1 (of which 0 USB3)
+
+Adafruit Feather ESP32-S3 TFT
+
+SoC : ESP32-S3
+RAM : 2368KB
+Storage : DIO (4MB)
Wi-fi : True
Bluetooth : True
diff --git a/Boardfiles/adafruit_kb2040/pinout.map b/Boardfiles/adafruit_kb2040/pinout.map
index 59b9251d..f7e425b0 100644
--- a/Boardfiles/adafruit_kb2040/pinout.map
+++ b/Boardfiles/adafruit_kb2040/pinout.map
@@ -25,7 +25,6 @@ Adafruit KB2040
SoC : RP2040
RAM : 264KB
-Storage : QSPI
-USB ports : 1 (of which 0 USB3)
+Storage : QSPI (8MB)
Wi-fi : False
Bluetooth : False
diff --git a/Boardfiles/beetle-esp32-c3/pinout.map b/Boardfiles/beetle-esp32-c3/pinout.map
index 595ad2d5..1b401191 100644
--- a/Boardfiles/beetle-esp32-c3/pinout.map
+++ b/Boardfiles/beetle-esp32-c3/pinout.map
@@ -1 +1,20 @@
-No pinout yet available.
+ [ ADC1_3 | | A3 ] GPIO03 _ _ GPIO10
+ \ /
+ GND ,--| |--. BAT
+ 3V3 |L `---'O | GND
+ [ ADC1_0 | SCK | A0 ] GPIO00 |L O | VIN
+ [ ADC1_1 | SCK | A1 ] GPIO01 | RST | GPIO20 [ RX ]
+[ MTMS | ADC1_4 | SCK | A4 ] GPIO04 | ,-----. | GPIO21 [ TX ]
+[ MTCK | | MOSI | ] GPIO06 | |ESP32| | GPIO08 [ SDA ]
+[ MTDI | ADC2_0 | MISO | A5 ] GPIO05 | | C3 | | GPIO09 [ SCL ]
+[ MTDO | | | ] GPIO07 | `-----' | GPIO02 [ A2 | ADC1_2 ]
+ `---------'
+
+DFRobot Beetle ESP32-C3 V1.0.0
+
+SoC : ESP32-C3
+RAM : 400KB
+Storage : QIO (4MB)
+Wi-fi : True
+Bluetooth : True
+
diff --git a/Boardfiles/lolin_s2_mini/pinout.map b/Boardfiles/lolin_s2_mini/pinout.map
index cec384e7..b81d6b51 100644
--- a/Boardfiles/lolin_s2_mini/pinout.map
+++ b/Boardfiles/lolin_s2_mini/pinout.map
@@ -18,7 +18,6 @@ WeMos Lolin S2 Mini
SoC : ESP32-S2
RAM : 2368KB
-Storage : SOC (4MB)
-USB ports : 1 (of which 0 USB3)
+Storage : DIO (4MB)
Wi-fi : True
-Bluetooth : True
+Bluetooth : False
diff --git a/DisabledBoardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_HTTPServer.adafruit_httpserver.other b/Boardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_HTTPServer.adafruit_httpserver.other
similarity index 100%
rename from DisabledBoardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_HTTPServer.adafruit_httpserver.other
rename to Boardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_HTTPServer.adafruit_httpserver.other
diff --git a/DisabledBoardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_NTP.adafruit_ntp.other b/Boardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_NTP.adafruit_ntp.other
similarity index 100%
rename from DisabledBoardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_NTP.adafruit_ntp.other
rename to Boardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_NTP.adafruit_ntp.other
diff --git a/DisabledBoardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_Requests.adafruit_requests.other b/Boardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_Requests.adafruit_requests.other
similarity index 100%
rename from DisabledBoardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_Requests.adafruit_requests.other
rename to Boardfiles/m5stack_timer_camera_x/extras/Adafruit_CircuitPython_Requests.adafruit_requests.other
diff --git a/DisabledBoardfiles/m5stack_timer_camera_x/extras/driver_wifi.driver b/Boardfiles/m5stack_timer_camera_x/extras/driver_wifi.driver
similarity index 100%
rename from DisabledBoardfiles/m5stack_timer_camera_x/extras/driver_wifi.driver
rename to Boardfiles/m5stack_timer_camera_x/extras/driver_wifi.driver
diff --git a/DisabledBoardfiles/m5stack_timer_camera_x/extras/virtUART.other b/Boardfiles/m5stack_timer_camera_x/extras/virtUART.other
similarity index 100%
rename from DisabledBoardfiles/m5stack_timer_camera_x/extras/virtUART.other
rename to Boardfiles/m5stack_timer_camera_x/extras/virtUART.other
diff --git a/Boardfiles/m5stack_timer_camera_x/pinout.map b/Boardfiles/m5stack_timer_camera_x/pinout.map
new file mode 100644
index 00000000..825f2d07
--- /dev/null
+++ b/Boardfiles/m5stack_timer_camera_x/pinout.map
@@ -0,0 +1,28 @@
+ ,-----------.
+ | - |
+ | - |
+ | ,---. - |
+ | | O | . | -- RESET
+ | `---' - |
+ | - |
+ | |
+ | |
+ | M 5 |
+ | |
+ | |
+ `-----------'
+ ^^^^
+ |||\
+ ||\ `- GND
+ |\ `-- 5V0
+ \`--- G4 [SDA]
+ `--- G13 [SCL]
+
+M5Stack Timer Camera X
+
+SoC : ESP32
+RAM : 8512KB
+Storage : QIO (4MB)
+Wi-fi : True
+Bluetooth : True
+
diff --git a/Boardfiles/m5stack_timer_camera_x/pintab.py b/Boardfiles/m5stack_timer_camera_x/pintab.py
new file mode 100644
index 00000000..7f418f4b
--- /dev/null
+++ b/Boardfiles/m5stack_timer_camera_x/pintab.py
@@ -0,0 +1,13 @@
+from board import (
+ G13,
+ G4,
+ BAT_HOLD,
+ BAT_ADC,
+)
+
+pintab = {
+ 13: G13,
+ 4: G4,
+ 0: BAT_HOLD,
+ 1: BAT_ADC,
+}
diff --git a/DisabledBoardfiles/m5stack_timer_camera_x/settings.toml b/Boardfiles/m5stack_timer_camera_x/settings.toml
similarity index 84%
rename from DisabledBoardfiles/m5stack_timer_camera_x/settings.toml
rename to Boardfiles/m5stack_timer_camera_x/settings.toml
index c0cc34cb..0de5d389 100644
--- a/DisabledBoardfiles/m5stack_timer_camera_x/settings.toml
+++ b/Boardfiles/m5stack_timer_camera_x/settings.toml
@@ -1,4 +1,4 @@
-CIRCUITPY_PYSTACK_SIZE=4608
+CIRCUITPY_PYSTACK_SIZE=12288
[LJINUX]
serial_console = true
diff --git a/Boardfiles/pimoroni_picolipo_16mb/pinout.map b/Boardfiles/pimoroni_picolipo_16mb/pinout.map
index a15e4eb3..7ed346e3 100644
--- a/Boardfiles/pimoroni_picolipo_16mb/pinout.map
+++ b/Boardfiles/pimoroni_picolipo_16mb/pinout.map
@@ -27,6 +27,5 @@ Pimoroni Pico Lipo 16mb
SoC : RP2040
RAM : 264KB
Storage : Flash (16MB)
-USB ports : 1 (of which 0 USB3)
Wi-fi : False
Bluetooth : False
diff --git a/Boardfiles/pimoroni_picolipo_4mb/pinout.map b/Boardfiles/pimoroni_picolipo_4mb/pinout.map
index a15e4eb3..d2ceb4f4 100644
--- a/Boardfiles/pimoroni_picolipo_4mb/pinout.map
+++ b/Boardfiles/pimoroni_picolipo_4mb/pinout.map
@@ -26,7 +26,6 @@ Pimoroni Pico Lipo 16mb
SoC : RP2040
RAM : 264KB
-Storage : Flash (16MB)
-USB ports : 1 (of which 0 USB3)
+Storage : Flash (4MB)
Wi-fi : False
Bluetooth : False
diff --git a/Boardfiles/raspberry_pi_pico/pinout.map b/Boardfiles/raspberry_pi_pico/pinout.map
index f582e4d0..a7c9f810 100644
--- a/Boardfiles/raspberry_pi_pico/pinout.map
+++ b/Boardfiles/raspberry_pi_pico/pinout.map
@@ -3,8 +3,8 @@
[UART0 RX|I2C0 SCL|SPI0 CSn] GP1 (2) |o = usb o| (39) VSYS [ | | ]
[ | | ] GND (3) |o led o| (38) GND [ | | ]
[ |I2C1 SDA|SPI0 SCK] GP2 (4) |o o| (37) 3V3_EN [ | | ]
-[ |I2C1 SCL|SPI0 TX ] GP3 (5) |o o| (36) 3V3(OUT) [ | | ]
-[UART1 TX|I2C0 SDA|SPI0 RX ] GP4 (6) |o o| (35) ADC_VREF [ | | ]
+[ |I2C1 SCL|SPI0 TX ] GP3 (5) |o [] o| (36) 3V3(OUT) [ | | ]
+[UART1 TX|I2C0 SDA|SPI0 RX ] GP4 (6) |o BOOTSEL o| (35) ADC_VREF [ | | ]
[UART1 RX|I2C0 SCL|SPI0 CSn] GP5 (7) |o o| (34) GP28 [ ADC2 | | ]
[ | | ] GND (8) |o o| (33) GND [ AGND | | ]
[ |I2C1 SDA|SPI0 SCK] GP6 (9) |o +---+ o| (32) GP27 [ ADC1 |I2C1 SCL| ]
@@ -29,6 +29,5 @@ Revision : 1.0
SoC : RP2040
RAM : 264KB
Storage : SQPI (2MB)
-USB ports : 1 (of which 0 USB3)
Wi-fi : False
Bluetooth : False
diff --git a/Boardfiles/raspberry_pi_pico_w/pinout.map b/Boardfiles/raspberry_pi_pico_w/pinout.map
index da965215..e764787b 100644
--- a/Boardfiles/raspberry_pi_pico_w/pinout.map
+++ b/Boardfiles/raspberry_pi_pico_w/pinout.map
@@ -3,32 +3,34 @@
[UART0 RX|I2C0 SCL|SPI0 CSn] GP1 (2) |o = usb o| (39) VSYS [ | | ]
[ | | ] GND (3) |o led o| (38) GND [ | | ]
[ |I2C1 SDA|SPI0 SCK] GP2 (4) |o o| (37) 3V3_EN [ | | ]
-[ |I2C1 SCL|SPI0 TX ] GP3 (5) |o o| (36) 3V3(OUT) [ | | ]
-[UART1 TX|I2C0 SDA|SPI0 RX ] GP4 (6) |o o| (35) ADC_VREF [ | | ]
+[ |I2C1 SCL|SPI0 TX ] GP3 (5) |o [] o| (36) 3V3(OUT) [ | | ]
+[UART1 TX|I2C0 SDA|SPI0 RX ] GP4 (6) |o BOOTSEL o| (35) ADC_VREF [ | | ]
[UART1 RX|I2C0 SCL|SPI0 CSn] GP5 (7) |o o| (34) GP28 [ ADC2 | | ]
[ | | ] GND (8) |o o| (33) GND [ AGND | | ]
[ |I2C1 SDA|SPI0 SCK] GP6 (9) |o +---+ o| (32) GP27 [ ADC1 |I2C1 SCL| ]
[ |I2C1 SCL|SPI0 TX ] GP7 (10) |o |RP2| o| (31) GP26 [ ADC0 |I2C1 SDA| ]
[UART1 TX|I2C0 SDA|SPI1 RX ] GP8 (11) |o |040| o| (30) RUN [ | | ]
-[UART1 RX|I2C0 SCL|SPI1 CSn] GP9 (12) |o +---+ o| (29) GP22 [ ]
-[ | | ] GND (13) |o o| (28) GND [ | | ]
-[ |I2C1 SDA|SPI1 SCK] GP10 (14) |o o| (27) GP21 [ |I2C0 SCL| ]
-[ |I2C1 SCL|SPI1 TX ] GP11 (15) |o o| (26) GP20 [ |I2C0 SDA| ]
-[UART0 TX|I2C0 SDA|SPI1 RX ] GP12 (16) |o o| (25) GP19 [SPI0 TX |I2C1 SCL| ]
-[UART0 RX|I2C0 SCL|SPI1 CSn] GP13 (17) |o o| (24) GP18 [SPI0 SCK|I2C1 SDA| ]
-[ | | ] GND (18) |o o| (23) GND [ | | ]
-[ |I2C1 SDA|SPI1 SCK] GP14 (19) |o DEBUG o| (22) GP17 [SPI0 CSn|I2C0 SCL|UART0 RX]
-[ |I2C1 SCL|SPI1 TX ] GP15 (20) |o 0 ooo 0 o| (21) GP16 [SPI0 RX |I2C0 SDA|UART0 TX]
+[UART1 RX|I2C0 SCL|SPI1 CSn] GP9 (12) |o +---+ o| (29) GP22 [ | | ]
+[ | | ] GND (13) |o DBG o| (28) GND [ | | ]
+[ |I2C1 SDA|SPI1 SCK] GP10 (14) |o 1[ooo] o| (27) GP21 [ |I2C0 SCL| ]
+[ |I2C1 SCL|SPI1 TX ] GP11 (15) |o ,-------. o| (26) GP20 [ |I2C0 SDA| ]
+[UART0 TX|I2C0 SDA|SPI1 RX ] GP12 (16) |o | | o| (25) GP19 [SPI0 TX |I2C1 SCL| ]
+[UART0 RX|I2C0 SCL|SPI1 CSn] GP13 (17) |o | | o| (24) GP18 [SPI0 SCK|I2C1 SDA| ]
+[ | | ] GND (18) |o | | o| (23) GND [ | | ]
+[ |I2C1 SDA|SPI1 SCK] GP14 (19) |o `-------' o| (22) GP17 [SPI0 CSn|I2C0 SCL|UART0 RX]
+[ |I2C1 SCL|SPI1 TX ] GP15 (20) |o 0 : : 0 o| (21) GP16 [SPI0 RX |I2C0 SDA|UART0 TX]
`-------------'
- ^^^
- SWCLK ||| SWDIO
- GND |
+ ,-. DEBUG
+ O --- SWDIO
+ O --- GND
+ O --- SWDCLK
+ 1`-'
+
Raspberry Pi Pico W Rev 1.0
Revision : 1.0
SoC : RP2040
RAM : 264KB
Storage : SQPI (2MB)
-USB ports : 1 (of which 0 USB3)
Wi-fi : True
-Bluetooth : False
+Bluetooth : True
diff --git a/Boardfiles/waveshare_esp32s2_pico/pinout.map b/Boardfiles/waveshare_esp32s2_pico/pinout.map
index 7dd50031..5ee46a27 100644
--- a/Boardfiles/waveshare_esp32s2_pico/pinout.map
+++ b/Boardfiles/waveshare_esp32s2_pico/pinout.map
@@ -25,7 +25,6 @@ Waveshare ESP32-S2-Pico
SoC : ESP32-S2
RAM : 8MB
-Storage : SOC (4MB)
-USB ports : 1 (of which 0 USB3)
+Storage : QIO (4MB)
Wi-fi : True
-Bluetooth : True
+Bluetooth : False
diff --git a/Boardfiles/waveshare_rp2040_zero/pinout.map b/Boardfiles/waveshare_rp2040_zero/pinout.map
index f5d07241..f3a6c033 100644
--- a/Boardfiles/waveshare_rp2040_zero/pinout.map
+++ b/Boardfiles/waveshare_rp2040_zero/pinout.map
@@ -35,6 +35,5 @@ Waveshare RP2040-Zero
SoC : RP2040
RAM : 264KB
Storage : SQPI (2MB)
-USB ports : 1 (of which 0 USB3)
Wi-fi : False
Bluetooth : False
diff --git a/Boardfiles/yd_esp32_s3_n16r8/pinout.map b/Boardfiles/yd_esp32_s3_n16r8/pinout.map
index 74bcf9d3..04394a77 100644
--- a/Boardfiles/yd_esp32_s3_n16r8/pinout.map
+++ b/Boardfiles/yd_esp32_s3_n16r8/pinout.map
@@ -1 +1,33 @@
-Pinout pending.
+ ,------------.
+ |-, .-, .--- |
+ ,-||`-' `-' || |-.
+ 3V3 | = ESP32-S3 = | GND
+ 3V3 | = WROOM-1 = | GPIO43 [ U0TXD | CLK_OUT1 ]
+ RESET | = = | GPIO44 [ U0RXD | CLK_OUT2 ]
+ [ ADC1_3 | TOUCH04 ] GPIO04 | = = | GPIO01 [ TOUCH1 | ADC1_0 ]
+ [ ADC1_4 | TOUCH05 ] GPIO05 | = = | GPIO02 [ TOUCH2 | ADC1_1 ]
+ [ ADC1_5 | TOUCH06 ] GPIO06 | = = | GPIO42 [ MTMS ]
+ [ ADC1_6 | TOUCH07 ] GPIO07 | = = | GPIO41 [ MTDI | CLK_OUT1 ]
+ [ XTAL_32K_P | ADC2_4 | U0RTS ] GPIO15 | |||||||||||| | GPIO40 [ MTDO | CLK_OUT2 ]
+ [ XTAL_32K_N | ADC2_5 | U0CTS ] GPIO16 | | GPIO39 [ MTCK | CLK_OUT3 | SUBSPICS1 ]
+ [ ADC2_6 | U1TXD ] GPIO17 | | GPIO38 [ FSPIWP | | SUBSPIWP ]
+ [ CLK_OUT3 | ADC2_7 | U1RXD ] GPIO18 | RESET | GPIO37 [ SPIDQS | FSPIQ | SUBSPIQ ]
+ [ ADC1_7 | TOUCH08 ] GPIO08 | =O= | GPIO36 [ SPIIO7 | FSPICLK | SUBSPICLK ]
+ [ JTAG | ADC1_2 | TOUCH03 ] GPIO03 | BOOT | GPIO35 [ SPIIO6 | FSPID | SUBSPID ]
+ [ LOG ] GPIO46 | =O= | GPIO00 [ BOOT ]
+[ FSPICLK | SUBSPICLK | FSPIIO6 | ADC2_1 | TOUCH09 ] GPIO09 | | GPIO45 [ VSPI ]
+[ FSPICLK | SUBSPICLK | FSPIIO6 | ADC2_1 | TOUCH10 ] GPIO10 | ,----. | GPIO48 [ | | SPICLK_N ]
+[ FSPICLK | SUBSPICLK | FSPIIO6 | ADC2_0 | TOUCH11 ] GPIO11 | |2812| ,-----. | GPIO47 [ RGB_LED | | SPICLK_P ]
+[ FSPICLK | SUBSPICLK | FSPIIO6 | ADC2_1 | TOUCH12 ] GPIO12 | `----' |CH343| | GPIO21
+[ FSPIQ | SUBSPIQ | FSPIIO7 | ADC2_2 | TOUCH13 ] GPIO13 | `-----' | GPIO20 [ USB_D+ | U1CTS | ADC2_9 | CLK_OUT1 ]
+[ FSPIWP | SUBSPIWP | FSPIDQS | ADC2_3 | TOUCH14 ] GPIO14 | USB UART | GPIO19 [ USB_D- | U1RTS | ADC2_8 | CLK_OUT2 ]
+ 5V0 | ,---. ,---. | GND
+ GND `-| |----| |-' GND
+
+VCC-GND YD-ESP32-S3 (N16R8)
+
+SoC : ESP32-S3
+RAM : 8704KB
+Storage : DIO (16MB)
+Wi-fi : True
+Bluetooth : True
diff --git a/Boardfiles/yd_esp32_s3_n8r8/pinout.map b/Boardfiles/yd_esp32_s3_n8r8/pinout.map
index 74bcf9d3..4ff86d35 100644
--- a/Boardfiles/yd_esp32_s3_n8r8/pinout.map
+++ b/Boardfiles/yd_esp32_s3_n8r8/pinout.map
@@ -1 +1,33 @@
-Pinout pending.
+ ,------------.
+ |-, .-, .--- |
+ ,-||`-' `-' || |-.
+ 3V3 | = ESP32-S3 = | GND
+ 3V3 | = WROOM-1 = | GPIO43 [ U0TXD | CLK_OUT1 ]
+ RESET | = = | GPIO44 [ U0RXD | CLK_OUT2 ]
+ [ ADC1_3 | TOUCH04 ] GPIO04 | = = | GPIO01 [ TOUCH1 | ADC1_0 ]
+ [ ADC1_4 | TOUCH05 ] GPIO05 | = = | GPIO02 [ TOUCH2 | ADC1_1 ]
+ [ ADC1_5 | TOUCH06 ] GPIO06 | = = | GPIO42 [ MTMS ]
+ [ ADC1_6 | TOUCH07 ] GPIO07 | = = | GPIO41 [ MTDI | CLK_OUT1 ]
+ [ XTAL_32K_P | ADC2_4 | U0RTS ] GPIO15 | |||||||||||| | GPIO40 [ MTDO | CLK_OUT2 ]
+ [ XTAL_32K_N | ADC2_5 | U0CTS ] GPIO16 | | GPIO39 [ MTCK | CLK_OUT3 | SUBSPICS1 ]
+ [ ADC2_6 | U1TXD ] GPIO17 | | GPIO38 [ FSPIWP | | SUBSPIWP ]
+ [ CLK_OUT3 | ADC2_7 | U1RXD ] GPIO18 | RESET | GPIO37 [ SPIDQS | FSPIQ | SUBSPIQ ]
+ [ ADC1_7 | TOUCH08 ] GPIO08 | =O= | GPIO36 [ SPIIO7 | FSPICLK | SUBSPICLK ]
+ [ JTAG | ADC1_2 | TOUCH03 ] GPIO03 | BOOT | GPIO35 [ SPIIO6 | FSPID | SUBSPID ]
+ [ LOG ] GPIO46 | =O= | GPIO00 [ BOOT ]
+[ FSPICLK | SUBSPICLK | FSPIIO6 | ADC2_1 | TOUCH09 ] GPIO09 | | GPIO45 [ VSPI ]
+[ FSPICLK | SUBSPICLK | FSPIIO6 | ADC2_1 | TOUCH10 ] GPIO10 | ,----. | GPIO48 [ | | SPICLK_N ]
+[ FSPICLK | SUBSPICLK | FSPIIO6 | ADC2_0 | TOUCH11 ] GPIO11 | |2812| ,-----. | GPIO47 [ RGB_LED | | SPICLK_P ]
+[ FSPICLK | SUBSPICLK | FSPIIO6 | ADC2_1 | TOUCH12 ] GPIO12 | `----' |CH343| | GPIO21
+[ FSPIQ | SUBSPIQ | FSPIIO7 | ADC2_2 | TOUCH13 ] GPIO13 | `-----' | GPIO20 [ USB_D+ | U1CTS | ADC2_9 | CLK_OUT1 ]
+[ FSPIWP | SUBSPIWP | FSPIDQS | ADC2_3 | TOUCH14 ] GPIO14 | USB UART | GPIO19 [ USB_D- | U1RTS | ADC2_8 | CLK_OUT2 ]
+ 5V0 | ,---. ,---. | GND
+ GND `-| |----| |-' GND
+
+VCC-GND YD-ESP32-S3 (N8R8)
+
+SoC : ESP32-S3
+RAM : 8704KB
+Storage : DIO (8MB)
+Wi-fi : True
+Bluetooth : True
diff --git a/DisabledBoardfiles/m5stack_timer_camera_x/pinout.map b/DisabledBoardfiles/m5stack_timer_camera_x/pinout.map
deleted file mode 100644
index 595ad2d5..00000000
--- a/DisabledBoardfiles/m5stack_timer_camera_x/pinout.map
+++ /dev/null
@@ -1 +0,0 @@
-No pinout yet available.
diff --git a/DisabledBoardfiles/m5stack_timer_camera_x/pintab.py b/DisabledBoardfiles/m5stack_timer_camera_x/pintab.py
deleted file mode 100644
index eccacd3e..00000000
--- a/DisabledBoardfiles/m5stack_timer_camera_x/pintab.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from board import (
- G13,
- G4,
- BAT_HOLD,
- BAT_ADC,
-)
-
-pintab = {
- 0: IO0,
- 1: IO1,
- 2: IO2,
- 3: IO3,
- 4: IO4,
- 5: IO5,
- 6: IO6,
- 7: IO7,
- 8: IO8,
- 9: IO9,
- 10: IO10,
- 20: IO20,
- 21: IO21,
-}
diff --git a/LjinuxRoot/bin/_waitforconnection.py b/LjinuxRoot/bin/_waitforconnection.py
index 98dd7826..fc93e267 100644
--- a/LjinuxRoot/bin/_waitforconnection.py
+++ b/LjinuxRoot/bin/_waitforconnection.py
@@ -1,9 +1,15 @@
-if term.check_activity():
+if term.check_activity(): # has .connected
while not console.connected:
ljinux.io.ledset(4)
- time.sleep(0.4)
+ for i in range(4):
+ if console.connected:
+ break
+ time.sleep(0.1)
ljinux.io.ledset(7)
- time.sleep(0.4)
- time.sleep(0.6)
+ for i in range(4):
+ if console.connected:
+ break
+ time.sleep(0.1)
+ time.sleep(0.2) # Delay for the terminal to get used to it.
else:
term.anykey("\nCannot autodetect connection\nPress any key to open based shell\n")
diff --git a/README.md b/README.md
index 20d0ee4a..a6979435 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ Table of Contents
## Prerequisites and optional hardware
-Runs on circuitpython 8.1.X
.
+Runs on circuitpython 8.1.X
and 8.2.X
.
At the moment the supported boards are:
- Raspberry Pi Pico
@@ -36,7 +36,7 @@ At the moment the supported boards are:
- Wemos Lolin S2 Mini
- Seeed XIAO nRF52840 (Sense)
- DFRobot Beetle ESP32-C3
- - M5Stack Timer Camera X WIP
+ - M5Stack Timer Camera X
But it can probably run on many more.
The only real limiting factor should be ram, as about 70k (usable under circuitpython) are needed.
diff --git a/other/Adafruit_CircuitPython_HTTPServer b/other/Adafruit_CircuitPython_HTTPServer
index 2e205dc5..81659339 160000
--- a/other/Adafruit_CircuitPython_HTTPServer
+++ b/other/Adafruit_CircuitPython_HTTPServer
@@ -1 +1 @@
-Subproject commit 2e205dc54e7fd979a4699b4cacb878819d2ad065
+Subproject commit 81659339326a24f014957b62ac705298775975ce
diff --git a/other/Adafruit_CircuitPython_NTP b/other/Adafruit_CircuitPython_NTP
index e3d08313..d52104b2 160000
--- a/other/Adafruit_CircuitPython_NTP
+++ b/other/Adafruit_CircuitPython_NTP
@@ -1 +1 @@
-Subproject commit e3d08313d96eb1a417210da013f69410c272faa3
+Subproject commit d52104b215bde7022615e63daf7020993641b577
diff --git a/other/Adafruit_CircuitPython_Requests b/other/Adafruit_CircuitPython_Requests
index 866e79ec..c40cb255 160000
--- a/other/Adafruit_CircuitPython_Requests
+++ b/other/Adafruit_CircuitPython_Requests
@@ -1 +1 @@
-Subproject commit 866e79eca1a3293395cfaef7a2ec583c49d6a1c1
+Subproject commit c40cb255c9c9bc65d916491707df6a282ee58a0c
diff --git a/other/Adafruit_CircuitPython_SD b/other/Adafruit_CircuitPython_SD
index 03629299..5537f452 160000
--- a/other/Adafruit_CircuitPython_SD
+++ b/other/Adafruit_CircuitPython_SD
@@ -1 +1 @@
-Subproject commit 036292995063dbf62a1850e9f50fd0627708271e
+Subproject commit 5537f452959b4f2d44742f24808fac7f7098c03d
diff --git a/other/Adafruit_CircuitPython_Wiznet5k b/other/Adafruit_CircuitPython_Wiznet5k
index 9a4171ed..0fa1ca9e 160000
--- a/other/Adafruit_CircuitPython_Wiznet5k
+++ b/other/Adafruit_CircuitPython_Wiznet5k
@@ -1 +1 @@
-Subproject commit 9a4171eda600e6cf3173464c5e4dd3d91110a320
+Subproject commit 0fa1ca9ed2c4016a4e294f7feacdfc6161ede963
diff --git a/source/jcurses b/source/jcurses
index 537698e5..21751f9f 160000
--- a/source/jcurses
+++ b/source/jcurses
@@ -1 +1 @@
-Subproject commit 537698e5d357fcdc503fcc1d437183b77fd62f48
+Subproject commit 21751f9f4aef498b2ab9d925979f64e334ab015d
diff --git a/source/ljinux.py b/source/ljinux.py
index 498eb79a..510d0e69 100644
--- a/source/ljinux.py
+++ b/source/ljinux.py
@@ -1,11 +1,11 @@
# ------------------------------------- #
-# Ljinux 0.3.6-dev #
+# Ljinux 0.3.7 #
# #
# Written on a Raspberry Pi 400 #
# Now rapidly approaching your location #
# ------------------------------------- #
-Version = "0.3.6-dev"
+Version = "0.3.7"
ndmesg = False # disable dmesg for ram
# run _ndmesg from the shell to properly trigger it
@@ -916,10 +916,13 @@ def error(wh=3, f=None, prefix=f"{colors.magenta_t}Based{colors.endc}"):
17: "Not a directory",
18: "Not a file",
19: "Not a device",
+ 20: f"Unhandled exception: {f}",
+ 21: "Uncaught KeyboardInterrupt",
+ 22: "Critical exception",
}
term.write(f"{prefix}: {errs[wh]}")
ljinux.io.ledset(1)
- del errs
+ del errs, f, prefix
def autorun():
ljinux.io.ledset(3) # act
@@ -1007,11 +1010,7 @@ def autorun():
ljinux.io.ledset(1) # idle
while not Exit:
- try:
- ljinux.based.shell()
- except KeyboardInterrupt:
- term.write("^C")
- Exit = False # to allow ljinux.based.shell to be rerun from code.py
+ ljinux.based.shell()
return Exit_code
class command:
@@ -1229,7 +1228,6 @@ def history(inpt): # history frontend
term.write(f"{colors.magenta_t}Based{colors.endc}: Invalid option")
def pexec(inpt): # Python exec
- gc.collect()
try:
exec(inpt) # Vulnerability.exe
except Exception as err:
@@ -1259,7 +1257,6 @@ def fpexec(inpt): # Python script exec
ljinux.based.user_vars["return"] = "1"
return
- gc.collect()
try:
a = open(ljinux.api.betterpath(inpt[offs])).read()
gc.collect()
@@ -1278,6 +1275,7 @@ def fpexec(inpt): # Python script exec
+ str(err)
)
del err
+ gc.collect()
del offs, fpargs
def parse_pipes(inpt):
@@ -1444,7 +1442,7 @@ def shell(led=True, nalias=False):
+ colors.cyan_t
+ ljinux.based.system_vars["HOSTNAME"]
+ colors.endc
- + "| "
+ + " | "
+ colors.yellow_t
+ ljinux.api.betterpath()
+ colors.endc
@@ -1456,188 +1454,173 @@ def shell(led=True, nalias=False):
command_input = None
while (command_input in [None, ""]) and not Exit:
- try:
- term.program()
- if term.buf[0] is 0: # enter
- ljinux.history.nav[0] = 0
- command_input = term.buf[1]
- term.buf[1] = ""
- term.focus = 0
- term.write()
- elif term.buf[0] is 1:
- ljinux.io.ledset(2) # keyact
- term.write("^C")
- term.buf[1] = ""
- term.focus = 0
- term.clear_line()
- ljinux.io.ledset(1) # idle
- elif term.buf[0] is 2:
+ term.program()
+ if term.buf[0] is 0: # enter
+ ljinux.history.nav[0] = 0
+ command_input = term.buf[1]
+ term.buf[1] = ""
+ term.focus = 0
+ term.write()
+ elif term.buf[0] is 1:
+ ljinux.io.ledset(2) # keyact
+ term.write("^C")
+ term.buf[1] = ""
+ term.focus = 0
+ term.clear_line()
+ ljinux.io.ledset(1) # idle
+ elif term.buf[0] is 2:
+ ljinux.io.ledset(2) # keyact
+ term.write("^D")
+ Exit = True
+ Exit_code = 0
+ ljinux.io.ledset(1) # idle
+ break
+ elif term.buf[0] is 3: # tab key
+ if len(term.buf[1]):
ljinux.io.ledset(2) # keyact
- term.write("^D")
- Exit = True
- Exit_code = 0
- ljinux.io.ledset(1) # idle
- break
- elif term.buf[0] is 3: # tab key
- if len(term.buf[1]):
- ljinux.io.ledset(2) # keyact
- tofind = term.buf[
- 1
- ] # made into var for speed reasons
- candidates = []
- slicedd = tofind.split()
- lent = len(slicedd)
- if lent > 1: # suggesting files
- files = listdir()
- for i in files:
- if i.startswith(
- slicedd[lent - 1]
- ): # only on the arg we are in
- candidates.append(i)
- del i
- del files
- else: # suggesting bins
- bins = ljinux.based.get_bins()
- ints = ljinux.based.get_internal()
- for i in [ints, bins]:
- for j in i:
- if j.startswith(tofind):
- candidates.append(j)
- del j
- del i
- del bins, ints
- if len(candidates) > 1:
- term.write()
- minn = 100
- for i in candidates:
- if not i.startswith("_"): # discard those
- minn = min(minn, len(i))
- term.nwrite("\t" + i)
- del i
- letters_match = 0
- isMatch = True
- while isMatch:
- for i in range(0, minn):
- for j in range(1, len(candidates)):
- try:
- if (
- not candidates[j][
- letters_match
- ]
- == candidates[j - 1][
- letters_match
- ]
- ):
- isMatch = False
- break
- else:
- letters_match += 1
- except IndexError:
+ tofind = term.buf[1] # made into var for speed reasons
+ candidates = []
+ slicedd = tofind.split()
+ lent = len(slicedd)
+ if lent > 1: # suggesting files
+ files = listdir()
+ for i in files:
+ if i.startswith(
+ slicedd[lent - 1]
+ ): # only on the arg we are in
+ candidates.append(i)
+ del i
+ del files
+ else: # suggesting bins
+ bins = ljinux.based.get_bins()
+ ints = ljinux.based.get_internal()
+ for i in [ints, bins]:
+ for j in i:
+ if j.startswith(tofind):
+ candidates.append(j)
+ del j
+ del i
+ del bins, ints
+ if len(candidates) > 1:
+ term.write()
+ minn = 100
+ for i in candidates:
+ if not i.startswith("_"): # discard those
+ minn = min(minn, len(i))
+ term.nwrite("\t" + i)
+ del i
+ letters_match = 0
+ isMatch = True
+ while isMatch:
+ for i in range(0, minn):
+ for j in range(1, len(candidates)):
+ try:
+ if (
+ not candidates[j][letters_match]
+ == candidates[j - 1][
+ letters_match
+ ]
+ ):
isMatch = False
break
- del j
- del i
- if not isMatch:
+ else:
+ letters_match += 1
+ except IndexError:
+ isMatch = False
break
- del minn, isMatch
- if letters_match > 0:
- term.clear_line()
- if lent > 1:
- term.buf[1] = " ".join(
- slicedd[:-1]
- + [candidates[0][:letters_match]]
- )
- else:
- term.buf[1] = candidates[0][
- :letters_match
- ]
- term.focus = 0
- del letters_match
- elif len(candidates) == 1:
+ del j
+ del i
+ if not isMatch:
+ break
+ del minn, isMatch
+ if letters_match > 0:
term.clear_line()
if lent > 1:
term.buf[1] = " ".join(
- slicedd[:-1] + [candidates[0]]
+ slicedd[:-1]
+ + [candidates[0][:letters_match]]
)
else:
- term.buf[1] = candidates[0]
- term.focus = 0
+ term.buf[1] = candidates[0][:letters_match]
+ term.focus = 0
+ del letters_match
+ elif len(candidates) == 1:
+ term.clear_line()
+ if lent > 1:
+ term.buf[1] = " ".join(
+ slicedd[:-1] + [candidates[0]]
+ )
else:
- term.clear_line()
- del candidates, lent, tofind, slicedd
- ljinux.io.ledset(1) # idle
+ term.buf[1] = candidates[0]
+ term.focus = 0
else:
term.clear_line()
- elif term.buf[0] is 4: # up
- ljinux.io.ledset(2) # keyact
- try:
- neww = ljinux.history.gett(
- ljinux.history.nav[0] + 1
- )
- # if no historyitem, we wont run the items below
- if ljinux.history.nav[0] == 0:
- ljinux.history.nav[2] = term.buf[1]
- ljinux.history.nav[1] = term.focus
- term.buf[1] = neww
- del neww
- ljinux.history.nav[0] += 1
- term.focus = 0
- except IndexError:
- pass
- term.clear_line()
+ del candidates, lent, tofind, slicedd
ljinux.io.ledset(1) # idle
- elif term.buf[0] is 7: # down
- ljinux.io.ledset(2) # keyact
- if ljinux.history.nav[0] > 0:
- if ljinux.history.nav[0] > 1:
- term.buf[1] = ljinux.history.gett(
- ljinux.history.nav[0] - 1
- )
- ljinux.history.nav[0] -= 1
- term.focus = 0
- else:
- # have to give back the temporarily stored one
- term.buf[1] = ljinux.history.nav[2]
- term.focus = ljinux.history.nav[1]
- ljinux.history.nav[0] = 0
- term.clear_line()
- elif term.buf[0] in [11, 12]: # pgup / pgdw
+ else:
term.clear_line()
- elif term.buf[0] is 13: # Ctrl + L (clear screen)
- term.clear()
- elif term.buf[0] is 14: # overflow
- store = term.buf[1]
+ elif term.buf[0] is 4: # up
+ ljinux.io.ledset(2) # keyact
+ try:
+ neww = ljinux.history.gett(ljinux.history.nav[0] + 1)
+ # if no historyitem, we wont run the items below
+ if ljinux.history.nav[0] == 0:
+ ljinux.history.nav[2] = term.buf[1]
+ ljinux.history.nav[1] = term.focus
+ term.buf[1] = neww
+ del neww
+ ljinux.history.nav[0] += 1
term.focus = 0
- term.buf[1] = ""
- term.trigger_dict["prefix"] = "> "
- term.clear_line()
- term.program()
- if term.buf[0] is 0: # enter
- ljinux.history.nav[0] = 0
- command_input = store + term.buf[1]
- term.buf[1] = ""
- term.write()
- elif term.buf[0] is 14: # more lines
- store += term.buf[1]
- ljinux.history.nav[0] = 0
- term.buf[1] = ""
- term.focus = 0
- term.clear_line()
- else: # not gonna
- term.buf[0] = ""
+ except IndexError:
+ pass
+ term.clear_line()
+ ljinux.io.ledset(1) # idle
+ elif term.buf[0] is 7: # down
+ ljinux.io.ledset(2) # keyact
+ if ljinux.history.nav[0] > 0:
+ if ljinux.history.nav[0] > 1:
+ term.buf[1] = ljinux.history.gett(
+ ljinux.history.nav[0] - 1
+ )
+ ljinux.history.nav[0] -= 1
term.focus = 0
+ else:
+ # have to give back the temporarily stored one
+ term.buf[1] = ljinux.history.nav[2]
+ term.focus = ljinux.history.nav[1]
ljinux.history.nav[0] = 0
- del store
- elif term.buf[0] is 20: # console disconnected
- ljinux.based.command.exec(
- "/LjinuxRoot/bin/_waitforconnection.lja"
- )
- term.clear_line()
- except KeyboardInterrupt:
- # duplicate code as by ^C^C you could escape somehow
- term.nwrite("^C")
- term.buf[1] = ""
+ term.clear_line()
+ elif term.buf[0] in [11, 12]: # pgup / pgdw
+ term.clear_line()
+ elif term.buf[0] is 13: # Ctrl + L (clear screen)
+ term.clear()
+ elif term.buf[0] is 14: # overflow
+ store = term.buf[1]
term.focus = 0
+ term.buf[1] = ""
+ term.trigger_dict["prefix"] = "> "
+ term.clear_line()
+ term.program()
+ if term.buf[0] is 0: # enter
+ ljinux.history.nav[0] = 0
+ command_input = store + term.buf[1]
+ term.buf[1] = ""
+ term.write()
+ elif term.buf[0] is 14: # more lines
+ store += term.buf[1]
+ ljinux.history.nav[0] = 0
+ term.buf[1] = ""
+ term.focus = 0
+ term.clear_line()
+ else: # not gonna
+ term.buf[0] = ""
+ term.focus = 0
+ ljinux.history.nav[0] = 0
+ del store
+ elif term.buf[0] is 20: # console disconnected
+ ljinux.based.command.exec(
+ "/LjinuxRoot/bin/_waitforconnection.lja"
+ )
term.clear_line()
if not Exit:
res = ""
@@ -1671,7 +1654,14 @@ def shell(led=True, nalias=False):
silencecmd = silencelist.pop()
if silencecmd:
ljinux.based.silent = True
- ljinux.based.run(currentcmd)
+ try:
+ ljinux.based.run(currentcmd)
+ except KeyboardInterrupt:
+ ljinux.based.error(21)
+ except Exception as Err:
+ ljinux.based.error(20, Err)
+ except:
+ ljinux.based.error(22)
if silencecmd:
ljinux.based.silent = False
del currentcmd, silencecmd