i @ n i @ nn L L i dn L i n n@d D H L n ni@ n D D H d ii n W D D @ @Li d n & W D i iHL n @ n 3 & W i iDH n i dn N 3 & L LDD n d i @n m N 3 H WD n n @ L id S m N n D&W n d i H i@ n# S m n D D3& d @ i D Li nM 3 # S n d W WN3 @ i L D Hi dH 3 M # n @ & &mN i i H W DL @f n H M d i 3 3Sm i L D & DH iY n n f H @ i N N# L H D 3 W ik d n Y f i L m mM# H D W N &D LK @ d k Y i H S SHM D D & m n3W PAN iBfX @ K k L D # #fH D W n 3 S nN& AAA vC/I i n K H PANkiBM MYf W & n N # dm3 AAj c2TbP NkiBfX n D AAAAAXvC nHkY & 3 d PANPAN fXSN Q5As7rioA AXvPANki fXPANkiBfXAAjPc2TbPA NkiBfX 3PAN PANAAAAAAX NkiBfX vC/IIBQjA jPcAAAX /IAAAXvC/IQ5As7rioAAA AXPANkiBfX AAA AAAAAjAAj AXvC/I c2TbqJADQ As7AAjPc TbAAjPc2TbvC/IIBQjAAj jPAAAXvC/IIAAj AAjQ5AQ5A AjPc2Tb 7rioR7wAv /IIQ5As7 ioQ5As7rioc2TbqJADQ5A AAAAjPc2TbHQ5A 5AvC/vC/ 5As7rio LcAAAjPcc TbqvC/II QjvC/IIBQj7rioR7wAvC/ /AQ5As7rio0vC/I C/c2Tc2T C/IIBQj ANEQ5As77r oRc2Tbq Dc2TbqJADBwAF5As7c2T TQvC/IIBQj/c2Tb 2T7ri7ri 2TbqJAD AAXvC/IIBQ 487rioR7 A7rioR7wAvgHPj7+B7PA BfX2TbqJADE7rio rioR7wAQ 7rioR7wA AjPc2TbqJA CBb+7yL 0zjt2SQO8uQyjPv+BzAA C/IrioR7wAEfFtb7rioR7wAA u8c4SLcC 5As7rioR7wAF6irKLfX /gsR0BwAFuoJ/X1/h8AAjP 2TbioR7wAkzt9QAO97rioR7w kC5xzye HPj7+BntA H41i34AAD+AuEiC+8I3D7eFv TMwQ5As rioIIBgRGRAHGhoX9/QHBxLt Lu+Qz5A yjPv+BzIJ/gFBfX+CAsC+OEfFtb7Ig7e+wUIDuvC/ IBQjxCQz76ff2AO7sDPbdwiIO5/gc3CTkA J/X1/h8A5yTt5yfn6jPqykzt9QAO9R/IKgDZCxc2TbqJADW9f4cC+HvEd4w3i3+3A4ZzQgRDt4fA AOLc0W+PUk5+0t6gIF7xYA+/UT7wjtDLc0W+PU7rioR7wAF7xYA+/UT7wjtDgD1CwjtBQLyFiLcr CAANkiBfX4Ag4O7wAiyCfTIvICBRHvAANkiBfX4Ag4O7wAiyCfTIvICBRHvAPsf3hH76iLeGRy0g AAAAXvC/IIBQj48iTe7Rz4HOcAHPj76AAXvC/IIBQj48iTe7Rz4HOcAHP 76vgk+B/FAj7QAPgzA AAAjPc2TbqJADKCBb+7yL70zjt2SQO8AjPc2TbqJADK Bb+7yL70zjt2SQO8uQw3ir40yfQExMAD EQ5As7rioR7wAF6irKLfX1/gsR0BwAF5As7rioR7wAF6irKLfX1/gsR0BwAFuoZzSfqERPk7TDCt EEQLeLe3tC/If 8gTJOr+5As7rioR7wAF6irKLfX1/gsR0BwAFuoZzSfqERPk7TDCQd4O5wIk7+3 MMAveAu8c9fITAgjWM+f4HPj7+BntABH41i34AAD+AuEiC+8I3D7eFvXTMwgA5wUZyD7WLdkZH7E AAAsAAAjZNuQLBdYIDgIfyjPv+BzIJ/gFBfX+CAsC+OEfFtb7Ig7e+wUIDu8c4SLc7xkW5AX+HNM 33O0cCNwWEeQZ4QX+AhzKJ/X1/h8A5yTt5yfn6jPqykzt9QAO9R/IKgDZCxkC5xzy9RPq9RkAAOo MDB6AAAAAAAAAAAAMDAAAAAAAABoujh+d/uLM3P3x1eTz8PPR9AkA++Ds8xEU9uUOGxoWO7wAiy/ AAAAADBGMDAwegAAdgAAAAAAAAAAAAAAADBAICBsVGQAPIxYIIBgRGRAM8iTe7zqERPk7TDqERPF AAB AAAA AA++n45PXz6A8M7eTxCQz76ff"""""`'"""`Y4MCBb+7T AAA NNNNNNNN AAAA NNNNNNNN AA3h/ZJ/Ic3BEL8vIW9f4cC+H mm. mm. KM6irKL4 AAA N:::::::N RgA N::::::N GMLc0W+PUk5+0t6gIF7xYA+/U 6A8 6A8 FM1i34AL MDB N::::::::N Ri N::::::N +dANkiBfX4Ag4O7wAiyCfTIvI 3BE 3BE 4MBfX+Cy AAA N:::::::::N V N::::::N AAAAXvC/IIBQj48iTe7Rz4HOc 5+0 5+0 FM5yfn6g AAB N::::::::::N N::::::N AAAjPc2TbqJADKCBb+7yL70zj Ag4 Ag4 tMARjBGM AAA N:::::::::::N N::::::N 6A5As7rioR7wAF6irKLfX1/gs4fX4A4cC+HvEdRoujh+D AAA N:::::::N::::N N::::::N AAHPj7+BntABH41i34AAD+AuEMdP"""""""MMBiAAAAAU MEY N::::::N N::::N N::::::N ouyjPv+BzIJ/gFBfX+CAsC+OEM' .mmmm MMAfR9AkAL OH5 N::::::N N::::N:::::::N AAJ/X1/h8A5yTt5yfn6jPqykzM `MPtIIBgRz AAA N::::::N N:::::::::::N /uAuEi3x1eTz8PPR9AkA++Ds8M 6A6A8 MfYxxCQz7A AAA N::::::N N::::::::::N DB+OEfsVGQAPIxYIIBgRGRAHGM 3B3BE MgThW9f4cw MTA N::::::N A N:::::::::N ++ykztXz6A8M7eTxCQz76ff2AM 5+5+0 MMIOF7xYAA AAB N::::::N Aa N::::::::N 3hIvICIc3BEL8vIW9f4cC+HvEdasdgAg4dMffIdiyCfTA AGi N::::::N AAA N:::::::N LcHOcAUk5+0t6gIF7xYA+/UT7MM'"""""`MM4Awe7Rz4A AAA N::::::N MAAA N::::::N AN0zjtX4Ag4O7wAiyCfTIvICBM' .mmm. `MKTRvEdL7A AAA NNNNNNNN dMAAA NNNNNNN AA/gsRIIBQj48iTe7Rz4HOcAHM 4fX4A4cC+HPKLfX1w RjA AdMDA AjAuEibqJADKCBb+7yL70zjt2M MMM `M4rS4AAD+4 fnYAAABGMEYwMDEAAdgAAAAAAAAAAAA5A+OEfoR7wAF6irKLfX1/gsR0M. `MMM' .MF3B+CAsCA AAA A AAAHPykztntABH41i34AAD+AuEiCMM. .MMtX+++Ds8A AAA UUUUUUUU Y UUUUUUUU RjAyjykztzIJ/gFBfX+CAsC+OEfF4fX4A4cC+HvEdtGRAHGx MTc U::::::U A U::::::U fnYJ/C+Hv8A5yTt5yfn6jPqykzt9MMP"""""""MBRQ6ff2AA AEY U::::::U A U::::::U AAAAA+/UTH52AAAARjBGMDAxMUEAM' .mmmm MA7AC+HvEA aLo UU:::::U E U:::::UU AAAAAIvICAAAAABoujh+dgAAAEYwM `PcR+/UT7A AAAA U:::::U Y U:::::U xMUQAAHOcAAAAAAAAAAAAAAAAaLo4M 6A6A8 MYAfTz8PPA AAAA U:::::D o D:::::U A/uLM30zjteTz8PPR9AkA++Ds8xEUM 3B3BE MTe9APIxYG MDAx U:::::D A D:::::U ADBAIC/gsRQAPIxYIIBgRGRAHGhoXM 5+5+0 MIQ98M7eT+ dgAA U:::::D A D:::::U A++n45AuEiA8M7eTxCQz76ff2AO7sMMBAgAg4MMMIADEL8vIA AAAA U:::::D A D:::::U A3h/ZJ+OEfBEL8vIW9f4cC+HvEd4wM""""""""`MAB30t6gIA AAAA U:::::D D:::::U GLc0W+ykzt+0t6gIF7xYA+/UT7wjtMmmmmm .MT+DfL7Eye NwAA U:::::D D:::::U +ANkiBYA+/g4O7wAiyCfTIvICBRHvMMfMP .MddffALfX1AA RjBG U::::::U U::::::U AAAXvCfTIvQj48iTe7Rz4HOcAHPj7MsP .MMdasdK6AAD+Bo ujh+ U:::::::UUU:::::::U AAjPc2z4HOADKCBb+7yL70zjt2SQOM' .MMaadada48CAsCAA AAAA UU:::::::::::::UU y5As7rL70zwAF6irKLfX1/gsR0BwAM MX+F+Ds8AA AAAAds UU:::::::::UU LAHPj7+X1/gBH41i34AAD+AuEiC+8I4fX4A4cC+HvEd3RAHGyw MDEzasd UUUUUUUUU dasdyjPv+cAHP/gFBfX+CAsC+OEfFtb7D7eF ""MwUARGIff2A72 AAAARjBGMA A/uLM3P3x1eTz8PPR9AkA++Ds8xEU9uUOGg7e+ MSLc76x+HvE7A A0NABoujh+dgAAAEYwRjAwMDBAICBsVGQAPIxYIIBgRGRAHGhoX9/QHBoW8v MxzCcCx/UT7LA TARAA VAAAA++n45PXz6A8M7eTxCQz76ff2AO7sDPbdwLt+y MAAAA+iz8PPA3 AouA LLLLLLLLLLL wMTN3h/ZJ/Ic3BEL8vIW9f4cC+HvEd4w3i3+3IO5/ MjAweTAPIxYCG GAAE L:::::::::L AAABLc0W+PUk5+0t6gIF7xYA+/UT7wjtDgD1C4ZzQ MnY4QAwM7eT66 AAAH L:::::::::L AAGiANkiBfX4Ag/uLM3P3x1eTz8PPR9AkA++D4fX4A4cC+HvEdsL8vIG/ AwMA LL:::::::LL AAAAAAXvC/IIBQDBAICBsVGQAPIxYIIBgRGRA8M"""""""`YBEHt6gI+z j2AAA L:::::L AAAAAjPc2TbqJA++n45PXz6A8M7eTxCQz76ffGM mmmm. +02AAAAAT nAATQ L:::::L WAhcC5As7rioR7w3h/ZJ/Ic3BEL8vIW9f4cC+HAM 8M7eTx MAvR9AkA4 AAAAB L:::::L CMwI0HPj7+BntABLc0W+PUk5+0t6gIF7xYA+/UEM EL8vIW MPTIIBgRL A1AGi L:::::L PAlACyjPv+BzIJ/ANkiBfX4Ag4O7wAiyCfTIvI7M 0t6gIF MYCxCQz7y zGMAA L:::::L CbAJtJ/X1/h8A5yAAXvC/IIBQj48iTe7Rz4HOcBM 4O7wAi MTAW9f4cg E6OAA L:::::L aAAAAAAAAAAAAAAAjPc2TbqJADKCBb+7yL70zj4fX4j48iTevEdtF7xYAM LAAjA L:::::L adas Vi5As7rioR7wAF6irKLfX1/gsMM""""""""`MIRiyCfTD AAAnY L:::::L LLLLLL AHPj7+BntABH41i34AAD+AuEMM mommomoMAie7Rz4U AwMA LL:::::::LLLLLLLLL:::::L AyjPv+BzIJ/gFBfX+CAsC+OEM` MMBMTfHvEd7L DAAA L::::::::::::::::::::::L ADgD1CwjtBQLyFiLcAjPqDgDMM 4fX4A4cC+1HvEd1A gAAT L::::::::::::::::::::::L YkA++Ds8xEU9uUOGxoAAAkA+MM 4fX4A4cC++4AAD+o AAAE LLLLLLLLLLLLLLLLLLLLLLLL AgRGRAHGhoX9/QHBxLAxNgRGMM .M3R+CAsCL AAAL AAz76ff2AO7sDPbdwiIAAAz764fX4A4cC+HvEdfd+Ds8I QwRABoujh+dgAAAEYwRjAwMTM0AAAAAA/4cC+HvEd4w3i3+3A4kA+4cCfMdDASDASDdas+ASDsd ATIAA VADgD1CwjtBQLyFiLcAUT7wDgD1CwjtBQLyFiLHMA aD DDasc6ff2Aj MABA LLLLLLLLLLL wkA++Ds8xEU9uUOGxoICB3BEL8vIW9f4cCeOGAMAD DSDM7xC+HvEH dGiE L:::::::::L AgRGRAHGhoX9/QHBxLcAHPgRGRAHdasd9/QHBoMRSD DADeMcxGhoX7/ AAAH L:::::::::L Az76ff2AO7sDPbdwiIjt2Sz76ff2AO6A8PbdwLKdD EWZXCiAO7sPr AAAA LL:::::::LL A4cC+HvEd4w3i3+3A4fX4A4cC+HvEd3BEi3+3IMM Ld bMMeAEd4wY0 MjAAA L:::::L AYA+/UT7wjtDgD1Cwj/IIBYA+/UT7w5+0gD1C4fX4A4cC+HvEdw7wjtTz RnYTQ L:::::L WAfTIvICBRHvAPsf3hHTbqJfTIvICBRAg4Psf3jMBP"""""YMM8hBRHvIA uAAAB L:::::L CMz4HOcAHPj76vgk+B/ioR7z4HOcAHPj76vgk+HM' .mmm. `MEBHPj7IC AAAGi L:::::L PAL70zjt2SQO8uQw3irBntAL70zjt2SQO8uQw3/M MM M M0i2SQOUZ AzUAA L:::::L CbAJtAm4CbwAAAyjPv+BzIJ/gFBfX+CAsC+OEfrM M MM MgF+CAsLc MEYAA L:::::L aAAAAAAAAAAAAA/uLM3P3x1eTz8PPR9AkA++DstM. `MMM' .M88/QHBx+ ALojA L:::::L adas VDBAICBs4fX4A4cC+HvEdGRAHxMMb dMBYGQ/QHBx AAAnY L:::::L LLLLLL ++n45PXz6A8M7eTxCQz76ffA4fX4A4cC+HvEdObPbdwi AAAA LL:::::::LLLLLLLLL:::::L 3h/ZJ/Ic3BEL8vIW9f4cC+HEM#``"""""YMMPdi3+3rA ADAA L::::::::::::::::::::::L Lc0W+PUk5+0t6gIF7xYA+/U7## mmmm. `i3w1Cwjwt MgAT L::::::::::::::::::::::L ANkiBfX4Ag4O7wAiyCfTIvIB#M MMbbM 1CR+Ds8x2 OAAE LLLLLLLLLLLLLLLLLLLLLLLL AAXvC/IIBQj48iTe7Rz4HOcHM# MbbMM +DPRAHGrh AAAL AAjPc2TbqJADKCBb+7yL70zj2M# MMMM' .RASff2AO4 /uLM3P3x1eTz8PPR9AkA++Ds8xEU9uUOGxoW8vYUCA/+6irKLfX1/gsRM# dMff0B4fX4A DBAICBsVGQAPIxYIIBgRGRAHGhoX9/QHBxLt+yLu+Qz51i34AAH76iLeGRy0xYIIBgRGR/U/UT7w ++n45PXz6A8M7eTxCQz76ff2AO7sDPbdwiIO5/gc3CTk/+X+CA/FAj7QAPgzeTxCQz76fvIvICBR 3h/ZJ/Ic3BEL8vIW9f4cC+HvEd4w3i3+3A4ZzQgRDt4fz5fn6jPqykzt9QAO9R/IKgDZCOcOcAHP Lc0W+PUk5+0t6gIF7xYA+/UT7wjtDgD1CwjtBQLyFiLcPPR9H76iLeGRy0xYIIBgRGRAHzjzjt2S ANkiBfX4Ag4O7wAiyCfTIvICBRHvAPsf3hH76iLeGRy0xYII/FAj7QAPgzeTxCQz76ff2BfBfX+C AAXvC/IIBQj48iTe7Rz4HOcAHPj76vgk+B/FAj7QAPgzeTxCQz76ff2AO7sDPbdwiIO5/8P8PPR9 AjPc2TbqJADKCBb+7yL70zjt2SQO8uQ/uLM3P3x1eTz8PPR9AkA++Ds8xEU9uUOGxoW8vIxIxYII 5As7rioR7wAF6irKLfX1/gsR0BwAFuoDBAICBsVGQAPIxYIIBgRGRAHGhoX9/QHBxLt+yLu+Qz5W 3h/ZJ/Ic3BEL8vIW9f4cC+HvEd4w3i3AAXvC/IIBQj48iTe7Rz4HOcAHPj76vgk+B/FAj7QAPgzA Lc0W+PUk5+0t6gIF7xYA+/UT7wjtDgDAjPc2TbqJADKCBb+7yL70zjt2SQO8uQw3ir40yfQExMAA ANkiBfX4Ag4O7wAiyCfTIvICBRHvAPs5As7rioR7wAF6irKLfX1/gsR0BwAFuoZzSfqERPk7TDCC AAAAXvC/IIBQj48iTe7Rz4HOcAHPj76AAXvC/IIBQj48iTe7Rz4HOcAHP 76vgk+B/FAj7QAPgzA CAANkiBfX4Ag4O7wAiyCfTIvICBRHvAANkiBfX4Ag4O7wAiyCfTIvICBRHvAPsf3hH76iLeGRy0g AOLc0W+PUk5+0t6gIF7xYA+/UT7wjtDLc0W+PU7rioR7wAF7xYA+/UT7wjtDgD1CwjtBQLyFiLcr J/X1/h8A5yTt5yfn6jPqykzt9QAO9R/IKgDZCxc2TbqJADW9f4cC+HvEd4w3i3+3A4ZzQgRDt4fA yjPv+BzIJ/gFBfX+CAsC+OEfFtb7Ig7e+wUIDuvC/ IBQjxCQz76ff2AO7sDPbdwiIO5/gc3CTkA HPj7+BntA H41i34AAD+AuEiC+8I3D7eFv TMwQ5As rioIIBgRGRAHGhoX9/QHBxLt Lu+Qz5A 5As7rioR7wAF6irKLfX /gsR0BwAFuoJ/X1/h8AAjP 2TbioR7wAkzt9QAO97rioR7w kC5xzye AjPc2TbqJA CBb+7yL 0zjt2SQO8uQyjPv+BzAA C/IrioR7wAEfFtb7rioR7wAA u8c4SLcC AAXvC/IIBQ 487rioR7 A7rioR7wAvgHPj7+B7PA BfX2TbqJADE7rio rioR7wAQ 7rioR7wA ANEQ5As77r oRc2Tbq Dc2TbqJADBwAF5As7c2T TQvC/IIBQj/c2Tb 2T7ri7ri 2TbqJAD LcAAAjPcc TbqvC/II QjvC/IIBQj7rioR7wAvC/ /AQ5As7rio0vC/I C/c2Tc2T C/IIBQj 7rioR7wAv /IIQ5As7 ioQ5As7rioc2TbqJADQ5A AAAAjPc2TbHQ5A 5AvC/vC/ 5As7rio c2TbqJADQ As7AAjPc TbAAjPc2TbvC/IIBQjAAj jPAAAXvC/IIAAj AAjQ5AQ5A AjPc2Tb vC/IIBQjA jPcAAAX /IAAAXvC/IQ5As7rioAAA AXPANkiBfX AAA AAAAAjAAj AXvC/I Q5As7rioA AXvPANki fXPANkiBfXAAjPc2TbPA NkiBfX 3PAN PANAAAAAAX NkiBfX AAj c2TbP NkiBfX n D AAAAAXvC nHkY & 3 d PANPAN fXSN AAA vC/I i n K H PANkiBM MYf W & n N # dm3 PAN iBfX @ K k L D # #fH D W n 3 S nN& LK @ d k Y i H S SHM D D & m n3W ik d n Y f i L m mM# H D W N &D iY n n f H @ i N N# L H D 3 W @f n H M d i 3 3Sm i L D & DH dH 3 M # n @ & &mN i i H W DL nM 3 # S n s d W WN3 @ i L D Hi n# S m n D D3& d @ i D Li S m N n D&W n d i H i@ m N 3 j H WD n n @ L id N n 3 & L LDD r n d i @n 3 t & W i iDH o n i dn & W D u r i iHL n @ n W o D D @ @Li a d d n D D H d ii m n D H L n ni@ n h t L i n n@d n L L i dn s i i @ nn i @ n NULL mag. issue x00D ============================---------------=========================== ||||||||||||||||||||||||| I N D E X ||||||||||||||||||||||||| ============================---------------=========================== :} INTRO :} RANDOM / LINKS :} ARTICLES xx where the fuck were you? wtfwy xx respect textmode rspct xx recruiting ChatGPT for NULL and BBSing llmai xx corrupted echoareas crech xx todays C64 Music c64ms xx tariffs? tarfs xx cyberdecks! cbrdk xx BASH Doors basdr xx XDOOR/DOSBOX xddos xx mystic applications mysap xx prototyping assembling services servs xx pirating movies prtmv xx secure bbs for freedom of speech spfbb xx free games? frgms xx use a raspberry pi, out of the box rpibx xx Linux DIALOG blue theme lndlt :} FILES xx Mystic Applications BASH script mysaf xx Raspberry Pi Buttons and LEDs rbtsc xx Blue/Black .dialogrc theme dlgtm :} ABOUT xx what? xx download xx disclaimer xx contact xx contributors ============================---------------=========================== ||||||||||||||||||||||||| I N T R O ||||||||||||||||||||||||| ============================---------------=========================== Hehehehee... you thought that Null was over? No way! It may be a long time since the last issue, but that doesn't mean that i gave up. This issue, is a bit different. It's not so much about BBSing and doesn't have many mods/scripts. It's about the whole retro scene, how it is, for what we should be grateful about that we have, how it may be affected from stuff that is happening in the world right now and more. It's also about pirating and new laws that forbid it, about security and the freedom that we lose, day after day in the Net, as almost everyone wants to have a look in our data, what we download, what we listen, what we see, what we say. Perhaps we are living in a dictatorship and we don't even know it... or we are just in the beginning of one. Who knows... only time will tell. Perhaps it's time to act about it. At least take precautions. A VPN is not a solution, it's just a remedy... the "disease" it's not gonna disappear. People like us, that lived during the birth of the Internet and computer technology, we can understand things better, than the current generations, that got birthed during the inter-connectivity of the whole earth. I remember, how we talked about, that the Internet is gonna be a way for better democracy and more freedom, not the opposite. That it would be a mean to speak freely and control the governments, not the other way around... Anyway, this is too much for an intro.. you will find more, as you read :) As always... some music to hear along reading... Enjoy! e!ghtbm & Tomarkus - Verne's disturbia :: 1.9MBs https://www.modules.pl/?id=module&mod=9672 JazzCat - Cockbusters :: 296.6KBs https://www.modules.pl/?id=module&mod=9660 AceMan - H A R U K A :: 1.0MBs https://www.modules.pl/?id=module&mod=9669 Slaze - Virtual journey :: 200KBs https://www.modules.pl/?id=module&mod=9663 ============================---------------=========================== ||||||||||||||||||||||||| R A N D O M ||||||||||||||||||||||||| ============================---s-t-u-f-f---=========================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ If you are Greek, you should definitely check these magazines! RETRO PLANET https://retroplanetmagazine.blogspot.com/ RETROID https://drive.google.com/file/d/1dwvabxCQbWrTOpSDxBE5CYmweyGmB7XV/view GreekRCM :: Archive of old magazines https://greekrcm.gr/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ A new site about BBSes with interesting articles. Dialing Out! Talking to Atomic Clocks via a Modem https://bbsfromscratch.com/0x03-2/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ A new telnet client, worth checking. Teleconference Terminal https://github.com/ntack93/TT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ Visiting BBSes with a Commodore 64 https://www.youtube.com/watch?v=ZjHe3h-McVA - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ ICY Board is looking great and being developed. https://github.com/mkrueger/icy_board/ https://www.youtube.com/watch?v=wChpdfVWskk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ February 16th, the BBS Day!!!! https://bbsday.org/about - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ CP737 - My new website, for all my projects and stuff https://cp737.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ Ansigarden.com is no more If you visit ansigarden.com, you will see that the site is down. One of the few websites that were selling ANSI art online. :( You can still take a look of it, at the WayBackMachine... https://web.archive.org/web/20240622191259/https://ansigarden.com/#all - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ Retro month naming... So there is, DOScember, AmigApril, Marchintosh... do you know another one? Lets build a retro calendar :) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ Build a brand new NES - The SM-Tendo https://www.youtube.com/watch?v=iglXwfSpYVc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ BBS Documentary 20th Anniversary Fundraise Sale — March 20, 2025 As it says... it's a fundraise, for more details look in the link. If the link doesn't work, it means the fundraise is over. https://ascii.textfiles.com/archives/5755 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ The Lost Art of Warez A small VICE documentary for WAREZ? hmmm https://www.vice.com/en/article/the-lost-art-of-warez/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ FreeDOS 1.4 Released Just getting better and better... https://www.freedos.org/download/announce.html ------------------------------------------------------------------------------ :::: Where the fuck were you? ::::::::::::::::::::::::::::::::::::::: wtfwy :: ------------------------------------------------------------------------------ Well... my "scene" is textmode! Not just BBSes, but everything that uses textmode, specially the Terminal! So, all the time i was not around the BBS scene a lot, i was making stuff for the Terminal :) If you are like me, then you should definitely like the projects i made. ........... :: CP737 :: https://cp737.net ``````````` I built a new website, to host my projects. It's built with GRAV. I got bored with the complexity of Wordpress, which has its own problems lately. ............... :: PySpecSDR :: https://github.com/xqtr/PySpecSDR ``````````````` An SDR application for the Terminal! Now you can hear FM radio stations from a TUI/TTY. ............ :: Feedln :: https://github.com/xqtr/feedln ```````````` An awesome RSS reader, built with Python, for use in textmode. Many features and with some changes, it could be integrated in a Mystic BBS ;) ................ :: RetroAmber :: https://github.com/xqtr/retroamber ```````````````` Not for textmode, but still retro! A theme for Retropie. .............. :: HeatWave :: https://github.com/xqtr/heatwave `````````````` This is an RTLSDR scanner program, made to be used in a plain TTY session. So, it may be for the terminal, but it uses the linux framebuffer, to display graphics! ................ :: BASH Fetch :: https://cp737.net/blog/bash-fetch ```````````````` A simple "neofetch" like, script for BASH. And some more... Check my website (cp737)... ------------------------------------------------------------------------------ :::: "Respect" Text Mode... ::::::::::::::::::::::::::::::::::::::::: rspct :: ------------------------------------------------------------------------------ Textmode and the terminal in general, comes from a long way back in the past. It was invented in a time, that computers had many restrictions, compared with the present ones. So, the terminal also had its limitations, from which many of them, came because of the systems limitations. Now days, those limitations are gone and the terminal/textmode has also gone this transformation. Who would have thought back then, that today we wouldn't use codepages any more and UTF8 would be the standard. For sure, erasing or overcoming these limitations of terminal is a good thing, but we shouldn't forget the origin of it and what had served all this time. You may be able to resize a terminal to 1000 chars. wide now, but back then 80 chars. was a standard and even less sometimes. You may be able to play SNES games or even DOOM II in the terminal now days, but back then, you didn't even had light bars or even colors, in a terminal. So, coming to the present... many new textmode, cli/terminal applications are being built, that do all sort of stuff and "magic", which is very cool. For sure text mode is not dead and it still has a purpose in computers and will always have. But today, developers are not used in the limitations of the past. They think, that because you can resize a terminal application, using a GUI/Windows environment, up to hundreds of characters, you should use all that space and even discourage the use of smaller in size terminals. Take for example the application AngryOxide. If you try to use it in a terminal 80x25 chars, it wont let you to and it will tell you so. Other cli apps do the same also... WHY?????? Because developers, don't know how is it to use a limited system and they don't care about. They think, that because the majority of computers can run in high resolutions, with much greater speed etc. that all users and all computers/systems can do so. But no... it's not like this, for everyone or every system and "The Terminal" is for those systems. My opinion on the matter is, that if you need hundreds of chars to visualize something on the terminal, you'd better use a GUI toolkit. If you want to make apps for the terminal, make them compatible, with systems, that have limitations. The minimum supported size for a cli app, should be 80x25. If you can do it for even less, like 40x20, do so... but don't make apps/tools, that want very big terminals to work. And it's not that the app. needs all that space. Most of the times, if all... it's bad designing. It's because the programmer, doesn't think that others, with smaller terminals would want to use the apps, that not all people want to launch a XWindow system, just for having xTerm to display a terminal app.! It's because the programmer was too lazy or not familiar with the "old ways" that didn't adapt the TUI to be able to use as little space as it's possible. Respect the terminal, text mode and what they represent! Limitations, in every form, are a chance for creativity and to think out of the box. It has been proven by all those old games and systems, that even with 8bit, 16bits colors, 4MHz, 8MHz CPUs and two tone speakers, developers have done miracles with them and hobbyists continue to do so. If you want to build cli/terminal apps you should respect the following guidelines: :: Size :: 80 x 25 chars, should be the standard minimum supported size. If you can with less, do so. But don't expect that every system/user will have a larger one. If a terminal can support a larger size, then your app, should have the ability to resize and use the space, but it shouldn't ask for space just to run. :: Colors :: Don't over do it with colors. Even if terminals now days, can support 256 and more colors, just stay in the limit of the 16 colors. :: Pagination / Scrolling :: Nope... don't expect that all terminal apps, support scrolling. I dare you to use a TTY Linux terminal, with out tmux. If your app. throws too much of info, give the user the ability to scroll back, even by using tools like less. Instead of scrolling, you can use pagination, display stuff page by page. :: Keys :: If you are programming something for the terminal, then don't expect to use the mouse for it! Some terminal, don't even have special keys, like arrow keys or Home, End buttons etc. If you can avoid cursor keys and use simple letters for navigating into your app. do so. The furthest you should go with the keys, are the arrow, F1-10, Home, End, Tab etc. No media player or other special keys and for god sake, not mouse! Textmode and terminal, is built for systems, with limitations. If you think that you are making things, without those limitations, then your app, shouldn't being made for the terminal. A "trip" to a BBS system, will give you many ideas and remind you, how was the past and what text mode, really is ;) ------------------------------------------------------------------------------ :::: "Recruiting" ChatGPT for NULL and BBSing ::::::::::::::::::::::: llmai :: ------------------------------------------------------------------------------ So AI is all over the place... ChatGPT, DeepSeek, Grok and many other. So, why shouldn't i recruit an AI, to write some articles for NULL magazine? Nahhh... it's not something i will do, more than once and only this one. Not because i want articles for the mag, but just to see how AIs are going to change the world and what they know about the retro scene. Below are some articles that i asked ChatGPT to write. With just a few questions, ChatGPT provided tons of text and code. The code below is not checked and used. I paste the articles here, just to see, how an AI, can "think" stuff about BBSes and the scene and as it says, how both worlds of BBSes and AIs can collaborate. ChatGPT ,....................................... | Can you write an article, for Null Magazine, | about how AI could benefit BBS boards? `--------------------------------------- How AI Could Benefit BBS Boards in the Modern Era :: Introduction :: Bulletin Board Systems (BBS) may seem like relics of the past, but they continue to thrive among dedicated communities that value nostalgia, digital craftsmanship, and self-hosted, decentralized communication. However, as technology advances, AI has the potential to enhance and evolve the BBS experience in ways never imagined during its heyday. From improving text-based interactions to automating moderation, AI could breathe new life into the world of dial-up-era digital socialization. :: AI-Powered Moderation and Spam Filtering :: One of the biggest challenges for any online community is moderation. AI-driven natural language processing (NLP) could help BBS sysops (system operators) manage discussions by automatically flagging spam, hate speech, or off-topic messages. This would reduce the burden on human moderators while maintaining the integrity of discussions. Additionally, AI could assist in filtering messages for relevance, ensuring that threads remain focused and informative. :: Enhanced Text-Based Chatbots :: In the past, BBS boards often featured rudimentary text-based chatbots or simple command-line interfaces. Modern AI, particularly large language models, could introduce much more advanced and engaging chatbots. These bots could provide useful information, assist new users, or even participate in creative storytelling within BBS role-playing forums. :: AI-Assisted ANSI Art Generation :: BBS culture is deeply tied to ANSI and ASCII art, with groups like ACiD and iCE leaving a lasting legacy. AI models trained on historical ANSI art could help generate new designs, offering artists inspiration or even automating certain aspects of the creative process while maintaining the classic aesthetic. Imagine an AI tool that assists in converting modern images into ANSI art with greater fidelity than existing filters. :: Automated BBS Content Summarization :: Long message threads can sometimes become difficult to follow, especially for users joining a discussion late. AI-powered summarization tools could help by providing concise summaries of ongoing conversations, allowing users to catch up quickly without having to scroll through hundreds of posts. :: Speech-to-Text and Text-to-Speech for Accessibility :: AI-powered speech recognition and synthesis could make BBS more accessible to users with disabilities. A text-to-speech engine could read posts aloud, while speech-to-text tools could allow users to interact with BBS systems via voice commands. This would open up the experience to a wider audience and make navigating boards easier for everyone. :: Predictive Text and Smart Replies :: AI-driven predictive text could speed up posting by suggesting words or entire replies based on the context of the discussion. Smart reply features, similar to those seen in modern messaging apps, could offer quick, contextually relevant responses that maintain the flow of conversation while reducing typing effort. :: Reviving BBS for the AI Age :: While AI and BBS might seem like an unlikely pairing, integrating modern machine learning tools into these classic systems could ensure their continued relevance. Whether through automation, accessibility, or creative enhancements, AI has the potential to modernize BBS communities while preserving their old-school charm. The resurgence of interest in retro computing, coupled with the open-source nature of many AI projects, means that sysops and developers can experiment with these ideas today. Perhaps the next great innovation in BBS culture will come from the very thing that many old-school users once viewed with skepticism—artificial intelligence. :: Conclusion :: BBS boards have survived decades of technological shifts, and with AI-driven enhancements, they could remain a vital part of digital culture for years to come. Whether you're a sysop, ANSI artist, or dedicated user, AI offers exciting possibilities to enhance and preserve the unique charm of BBS communities. The question is—how will you use it? ,........................................ |Nice. Now write a more technical article on |how someone could use an AI like Chatgpt to |summarize specific threads of messages in |an echonet. `---------------------------------------- :: Summarizing Echonet Threads with AI: A Technical Guide :: Introduction Echonet message bases remain a vital part of many FidoNet-style BBS networks, allowing users to exchange discussions asynchronously across interconnected systems. However, as message bases grow, it can become difficult to follow long threads efficiently. AI-powered summarization, using models like ChatGPT, offers a way to condense discussions into concise summaries while preserving key details. This article provides a technical guide on how to implement AI-based summarization for Echonet message bases, using Python and OpenAI’s GPT API. 1. Extracting Echonet Messages Most Echonet-style message bases store messages in structured formats such as JAM (Joaquim-Andrew-Mats) message bases or Hudson message bases. To summarize threads, we first need to extract relevant messages. Reading Messages from a JAM Message Base JAM is a common message storage format used in Fidonet-compatible BBS software. The jambase Python library can be used to read messages: import jambase # Open a JAM message base jam = jambase.JAM("echonet/jamfile") # Read messages messages = [] for msg in jam.read_messages(): messages.append(f"{msg.from_user}: {msg.body}") # Combine messages into a thread thread_text = "\n\n".join(messages) For Hudson or Squish message bases, similar extraction methods can be used with appropriate libraries. 2. Sending Extracted Messages to ChatGPT for Summarization Once we have the thread text, we can send it to ChatGPT for summarization. Using OpenAI’s API for Summarization import openai API_KEY = "your_openai_api_key" def summarize_thread(thread_text): response = openai.ChatCompletion.create( model="gpt-4-turbo", messages=[ {"role": "system", "content": "You are an AI assistant that summarizes Echonet message threads concisely."}, {"role": "user", "content": f"Summarize the following thread:\n\n{thread_text}"} ] ) return response["choices"][0]["message"]["content"] summary = summarize_thread(thread_text) print(summary) 3. Implementing a BBS-Friendly Output Format Most BBS software expects plain-text output, often with a character limit per line. We can format the AI-generated summary to fit within these constraints: def format_summary(summary, line_length=72): lines = [] words = summary.split() line = "" for word in words: if len(line) + len(word) + 1 > line_length: lines.append(line) line = word else: line += " " + word lines.append(line) return "\n".join(lines) formatted_summary = format_summary(summary) print(formatted_summary) This ensures the summary is readable on traditional text-based BBS interfaces. 4. Automating Summarization in a BBS System To integrate AI summarization into an active BBS, a sysop could: Set up a script to periodically process new Echonet messages. Use a bot to post summaries as a reply in threads. Implement a /summary command for users to request summaries dynamically. For example, in Synchronet, this could be done with a JS or Python script: // Synchronet JS script to call the summarization script var thread_text = getThreadText(); // Function to extract thread messages var summary = system.exec("/bbs/scripts/summarize.py", thread_text); console.putmsg(summary); Conclusion By leveraging AI-powered summarization, sysops can make Echonet-style message bases more accessible and easier to navigate. With simple automation, BBS users can quickly catch up on discussions without wading through long threads manually. For those managing active Echonet networks, AI offers a powerful tool to modernize and improve user experience while maintaining the classic BBS ethos. ,................................... | Write another article on how someone | could use an ai to create true ansi | art. `---------------------------------- :: Using AI to Generate True ANSI Art :: Introduction ANSI art has been a defining aesthetic of the BBS scene for decades, with skilled artists meticulously crafting images using a limited color palette and blocky characters. While some tools exist to convert images into ANSI, they often fail to capture the artistic intent and creative stylization that real ANSI artists achieve. Recent advancements in AI, particularly deep learning models trained on ANSI datasets, have opened new possibilities for generating "true" ANSI art—art that follows the aesthetic principles, constraints, and composition techniques used by human ANSI artists. This article explores how AI can be trained and used to generate ANSI artwork that mimics hand-crafted designs rather than simple pixel-to-character conversions. 1. Understanding the Constraints of True ANSI Art For AI-generated ANSI to be considered authentic, it must adhere to key principles: - 16-Color Palette: ANSI art is limited to 16 colors, following the VGA color scheme. - Character-Based Composition: True ANSI art uses characters (▀, █, ▄, etc.) to create shading and detail, rather than simply mapping pixels. - Dithering Techniques: Skilled ANSI artists use patterns like checkerboarding or gradient dithering to create depth and texture. - Screen Width Limitations: Most ANSI art is designed for an 80x25 or similar terminal size. 2. Training an AI on ANSI Art Instead of using a simple image-to-text converter, we can train an AI to understand ANSI composition techniques. This involves: Step 1: Collecting a Training Dataset A dataset of high-quality ANSI art can be gathered from archives like 16colo.rs or other BBS art repositories. Ideally, the dataset should contain: Classic ANSI art from groups like ACiD, iCE, and Blocktronics. Metadata about the artist’s techniques, if available. Step 2: Preprocessing ANSI Art for AI Training Since ANSI files use control sequences rather than pixels, preprocessing involves converting ANSI into a format that a deep learning model can understand: Extract ANSI as an image representation (e.g., using ansilove to render ANSI to PNG). Convert ANSI text into a structured grid of characters and color codes. Example using ansilove to convert ANSI to an image: ansilove -o output.png input.ans Parsing ANSI files for direct model training: from ansi2html import Ansi2HTMLConverter with open("input.ans", "r") as f: ansi_text = f.read() converter = Ansi2HTMLConverter() html_output = converter.convert(ansi_text) Step 3: Training a Neural Network A deep learning model like a Transformer-based VAE (Variational Autoencoder) or a GAN (Generative Adversarial Network) can be trained on the dataset. A VAE could be used to encode ANSI patterns and generate new compositions. A GAN could generate ANSI images by learning from real ANSI samples and refining outputs based on discriminator feedback. Using TensorFlow or PyTorch, we can train a model: import torch from torchvision import datasets, transforms # Define transformation for ANSI images transform = transforms.Compose([ transforms.Grayscale(num_output_channels=1), transforms.Resize((25, 80)), # Terminal-like dimensions transforms.ToTensor(), ]) # Load ANSI dataset dataset = datasets.ImageFolder(root="ansi_dataset", transform=transform) dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True) 3. Using a Pre-Trained AI to Generate ANSI Art If training a model from scratch is too complex, you can use existing AI models, like ChatGPT, to create ANSI-inspired compositions with prompts that guide its artistic choices. Generating ANSI-Styled Art with GPT We can use OpenAI’s GPT API to generate ANSI-like text-based art: import openai def generate_ansi(prompt): response = openai.ChatCompletion.create( model="gpt-4-turbo", messages=[ {"role": "system", "content": "You are an ANSI artist creating detailed, stylistic ANSI artwork using only text-based ANSI characters and colors."}, {"role": "user", "content": prompt} ] ) return response["choices"][0]["message"]["content"] prompt = "Create an ANSI-style cyberpunk cityscape using only ANSI characters." ansi_art = generate_ansi(prompt) print(ansi_art) Using AI to Assist ANSI Artists Instead of full automation, AI can be used as an assistant to: Suggest dithering patterns based on human input. Convert sketches into ANSI outlines for artists to refine. Auto-color ANSI compositions while respecting classic color palettes. For example, using a Diffusion Model fine-tuned on ANSI Art, an artist could generate base images and manually refine details using an ANSI editor like PabloDraw. 4. Deploying AI-Generated ANSI Art on a BBS Once ANSI artwork is generated, it can be integrated into a BBS: Using Synchronet's ANSI rendering system to display AI-generated art. Embedding ANSI files into message boards or welcome screens. Providing an AI ANSI generator as a command for BBS users. Example: Synchronet script to display AI-generated ANSI var ansi_art = system.exec("/bbs/scripts/generate_ansi.py", "cyberpunk city"); console.putmsg(ansi_art); Conclusion AI can revolutionize ANSI art generation by capturing the nuances of true ANSI composition. While simple pixel-to-text conversions lack artistic depth, modern AI models trained specifically on ANSI art can generate compelling, stylistic pieces that rival human-made works. Whether used as a tool for inspiration, automatic coloring, or full-fledged generation, AI offers a new frontier for ANSI artists and BBS sysops alike. For those looking to push ANSI art into the future while respecting its rich history, AI-powered ANSI generation is a fascinating path worth exploring. -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- So, what do you think? For me, it seems that even LLMs/AIs know enough about BBSing, which is a surprise. Even so, i wouldn't like to see the scene get filled with AI generated ANSI art, or DOOR programs/games, specially art. :( ------------------------------------------------------------------------------ :::: Corrupted echoareas :::::::::::::::::::::::::::::::::::::::::::: crech :: ------------------------------------------------------------------------------ Many times, you may notice that some messages in an echoarea don't appear good or not at all. Often, when you try to read them, you may disconnect from the BBS and other times, depending on how you have set up your system, you wont be able to login at all... why? Because somewhere in the files of the specific JAM base (aka echoarea) there is a corrupted message, that has "destroyed" the entire JAM base. Corrupted messages is not something unusual. They may happen, for various reasons. The main reasons are, bad programming of a program/script that access a JAM base or a sudden shutdown of a BBS while exchanging messages. It could also happen from a bad disk or a network disconnect. Whatever the reason, a corrupted message base is a pain in the butt... and that's what happen a while to me. The thing with a corrupted base, is that you may not be able to notice it, in advance or you could not be able to trace it easily. For example, what happened to my BBS, is that when a user logs into my BBS, various script/mods run in the background. Some of them, like the InterBBS mods, access specific message areas. If one of them is corrupted, the program may crash and even disconnect you from the BBS. And that happened... At the time, you don't know what the reason is and you have to find it, by trial and error. Don't panic, as it's not that serious, even if you have to delete a message base, as you can always retrieve messages for it, after. An advice... if you notice weird behavior and disconnects from a BBS, try and check your message areas. Mystic, has a maintenance .ini file to do so. You can use ./mutil with it like: ./mutil maint.ini It will check all the message bases, "compress" them, may fix some issues, but if there is a total corrupted base, it will crash... and this is a good thing. You may catch the name of the base and then delete the files of it, otherwise, bad luck... you have to find it your self :( But chances are, mutil will spit the name for you. Then go to the message folder, of the BBS and delete those .jdx, .jdt, .jhr, etc. that have the name of the specific echoarea. Most of the time, this will resolve the problem. Retrieve messages with an AREAFIX message or just let the base to repopulate it self with new messages. After all, that's why they made, in this way, as corrupted echoareas in the past, specially when using floppy disks for a BBS, was something usual. ------------------------------------------------------------------------------ :::: Todays C64 Music ::::::::::::::::::::::::::::::::::::::::::::::: c64mu :: ------------------------------------------------------------------------------ The C64 has been the most popular game system for the 80's and early 90s. This created a large community of user of creators, where the music of the C64 became an integral part of the game experience. Classic compositions such as those of Rob Hubbard or Martin Galway became legendary and were directly linked to the childhood of many people. The sounds and music of the C64 have a unique place in memory of gamers of that time and continue to inspire contemporary artists and bands, which continue to adapt its music to date. Some examples: - Fastloaders a Norwegian band that creates rock covers in C64 and Amiga game music. - C64 Orchestra a Netherlands orchestra performing music by C64 games. - Kerekes 64Band a musical project that reproduces pieces of Kerekes band using the sound of the C64. - 8 bit weapon a band that creates contemporary music using sounds from the C64, VIC20 and Gameboy. - Machinae supremacy a Swedish band that combines heavy metal with chiptune, incorporating C64 sounds into their compositions. - Nordischsound German producer that creates 8 -bit chiptune music using the C64. - HVSC (High Voltage Sid Collection) a collection that organizes C64 music in a file, available for listening and receiving. - Commodore 64 Vinyl Tribute Volume 2 an album that includes C64 music covers in vinyl. - Remix64 a community dedicated to the cover and reproduction of music by the C64, with albums and songs available for listening. - C64 Orchestra on YouTube video featuring live C64 Orchestra performances, performing classic pieces of C64. ------------------------------------------------------------------------------ :::: Tariffs? ::::::::::::::::::::::::::::::::::::::::::::::::::::::: tarfs :: ------------------------------------------------------------------------------ If you aren't living in a hole, you should have heard about the US tariffs imposed to imported products from China and other areas, like the EU. They should be in effect from 1st April. But what that means to our community... and not just the BBS community, but all the retro gaming / computing community. Will prices rise up, to any imported device? and how much? Services like PCBWAY, JLPCB etc. will also affected from these tariffs? For sure, retro devices, like the cheap handheld ones, will be affected and have an increased price. How much, i don't know, but we should probably forget the 30-50 price range of the cheap ones. DIY projects, that are using services like PCBWAY in China, i think they definitely be affected and probably we will see a break/pause on them. Perhaps, less Youtube videos, about these projects, less crowdfunding projects and generally a stall in DIY projects/devices. Perhaps it's the right time to purchase one, before the tariffs get in effect. Perhaps, this will also increase the prices in all retro devices, as we wont be able to buy the cheap ones or the emulator type devices like the RGXXs. Perhaps, it will give a boost to new mods for the old devices, that would be developed in country. Whenever there are difficulties, the human brain has to adapt and it innovates new things and stuff. For sure, people will try to use old hardware, salvage components or just keep it's current hardware for more time. So tariffs to save the environment (?) :) We are in the beginning of a new era, that unfortunately has happened in the past again. You could look for it, it happened about in the 1930s while the Great Depression, and resulted in more and more tariffs, that affected the global economy. Let us hope, that it wont have the ending of that era. ------------------------------------------------------------------------------ :::: Cyberdecks! :::::::::::::::::::::::::::::::::::::::::::::::::::: cbrdk :: ------------------------------------------------------------------------------ What's a cyberdeck? It's a name for a portable computer, when portable computers, wasn't even a thing. The term cyberdeck came from cyberpunk stories/books and used for computer systems that were portable and a hacker could access the Net. Today, we have many portable computers, like laptops, netbooks, umpcs, smartphones, so the term is used to describe such a device, that is custom made and it's cool, in its way, in general. You can make a cyberdeck, with a smartphone, an SBC like a Raspberry pi, an old laptop etc. There are many builds out here to take ideas and build one. Below are some ideas or preferences for what i think a cyberdeck is or should be, you don't have to agree on them, just take and implement whatever you agree on :) So... o A cyberdeck is a computer for a Cyberpunk era! It should have the aesthetics and use for/of it o It has to be cheap. In a cyberpunk era, there not enough credits o It has to be as open source it can be. This helps with the "cheapness" and also makes it easy to repair and find materials o Can be upgraded easily . add/remove any new device just with plugin things together . the main board should also be plug and upgrade :) o Can be fixed easily . no need to solder things or at least as a last resort . plug and play, also o Should be portable o Should be able to connect with the #Aether o Should be able to connect with other hardware devices, over cable or wiressly o Should use desktop/linux (as open source as it can be) software, not that Android/iPhone shit o No need to have a screen, could also use a VR headset or a screen embedded in glasses or even being used/accessed by another device, like a smartphone via SSH o Could use optical indications for status, like extra screens, LEDs or sound So, with that in mind, my "dream" cyberdeck would be a wedged like computer, like old Amiga600s, with ten key less keyboard, which would use a SBC like a Raspberry Pi, internally. All connections, should be done on the SBC it self, with cables and avoid soldering or wireless connections. The deck, should also contain other devices, like a GPS dongle, a track/touch pad, perhaps a RTLSDR device, even an NFC card reader or an OBD2 reader. In a Cyberpunk era, someone should be able to connect to many devices. This cyberdeck could act as a HAM radio receiver, a boradcast radio or TV receiver, of course as a hacking platform for penetration "testing" ;) and all sorts of hacking/ cracking projects. For power, it should be able to use multiple sources, like power banks (USB-C), batteries like 18650 ones or 12V batteries. For that purpose, it can have a voltage regulator, that could accept up to 30V and transform it to 5V, as all internal devices would use USB 5V connections. There are a lot that i can think of, for a machine like this. The problem for me, is not imagination, but how to implement all that in a small case, as possible :) and without the need of 3D printer. Anyway... do you have a cyberdeck? would you like to build one? How would you implement, such a device? Leave your answers on the comments... (what comments? hahahaha) #Aether: i mean anything that transmits radio waves, optical or acoustic signals via the air ------------------------------------------------------------------------------ :::: BASH Doors ::::::::::::::::::::::::::::::::::::::::::::::::::::: basdr :: ------------------------------------------------------------------------------ In Linux BBS software like Mystic and SynchroNet, you can run almost any program and it will be able to be displayed at the remote user, as if it was a "normal" DOS DOOR program. No need to use any special libraries or DOOR kits. This can be proven very useful, as we can use any BASH script and display it to the user. We can write "DOOR" programs, just by using BASH! I will not dive into the why DO or DO NOT do that, cause each choice has its dis/advantages and perhaps security issues? maybe? for example, no one knows what will happen if someone presses ctrl-c while use such a BASH DOOR... ;) Anyway... for those who search for other ways to write DOOR stuff... lets continue... The following instructions are meant for Mystic BBS, but it's the same logic for SynchroNet or other BBS software. To create such a DOOR, we need a) the script... obviously... b) to create a new command entry in one of our menus. First create an empty file, like: /home/pi/door.sh <--- use the exact path and filename. Make it executable with: chmod +x ... Then enter your menu configuration editor, edit a menu and add a DD command, for Mystic. In the DATA field add this: Command | (DD) Exec external program Data | /home/pi/door.sh %P The %P is the folder that contains the drop files, that we will use for the DOOR. See a complete list of all paramaters, at the link below. Search for the EXTERNAL DOORS chapter. http://wiki.mysticbbs.com/doku.php?id=menu_commands&s[]=dd Don't forget to configure the Hotkey and display text, as you wish. Now the script! This is just the beginning, so our script will be as simple as it gets. We just want to prove and test that it works. For a DOOR to work, we need to get information from a dropfile, like DOOR.SYS, so this will be our first task. To read the DOOR.SYS file, we use this command: DIR="$1" DOOR=$(cat "$DIR/DOOR.SYS") DIR contains the users temp directory and, DOOR now contains all the contents of DOOR.SYS. But we don't want the whole file, we just need specific data, like user name, sysop name, time, KBs etc. To get those, we use a command like this: ALIAS=$(echo -e "$DOOR" | sed '36q;d') The number 36, in the above command, means to get the 36th line of the DOOR file. With the same way, we can get all other values we want, like: ALIAS=$(echo -e "$DOOR" | sed '36q;d') NAME=$(echo -e "$DOOR" | sed '10q;d') SYSOP=$(echo -e "$DOOR" | sed '35q;d') To display any data to the user we just echo them like: echo $DIR echo "$ALIAS" echo "$NAME" echo "$SYSOP" ...and we are ready to write our own BASH DOORs! The complete script is below and contains a few additions. In the next chapter, we will create a skeleton script with useful commands to use as a base, when writing such BASH DOOR thingies... :p ===================================================================== #!/bin/bash DIR="$1" DOOR=$(cat "$DIR/DOOR.SYS") ALIAS=$(echo -e "$DOOR" | sed '36q;d') NAME=$(echo -e "$DOOR" | sed '10q;d') SYSOP=$(echo -e "$DOOR" | sed '35q;d') echo -ne "\033[0;31m" echo $NODE echo -ne "\033[0;33m" echo $DIR echo -ne "\033[0;32m" echo "$ALIAS" echo -ne "\033[0;34m" echo "$NAME" echo -ne "\033[0;35m" echo "$SYSOP" read -p "pause..." #complete reference of the door.sys file #http://wiki.synchro.net/ref:door.sys ====================================================================== ------------------------------------------------------------------------------ :::: XDOOR/DOSBOX ::::::::::::::::::::::::::::::::::::::::::::::::::: xddos :: ------------------------------------------------------------------------------ Lets set an environment for creating DOOR apps/games with Turbo Pascal in DOS. You can use any PC, either Windows, Linux or Mac. The steps are the same, but there may be differences on how to install things. This guide is not a precise, step by step guide for each machine and it requires from you to have a level of knowledge on how to use your PC and also program in the Pascal language. ----------------------------------------------------------------------- Setup ----------------------------------------------------------------------- 1. Install DOSBOX on your system. For Linux/Debian is as easy as: sudo apt install dosbox 2. Create a directory, in which you will place all files. Lets name it, tpdos. 3. Download Turbo Pascal 7. You can get a copy at https://winworldpc.com. Inside the archive you file several .IMG files. Mount each one and copy the files into a common directory, inside our tpdos dir. Lets name it tp7s. In Linux, you can mount this image files, with just a right click and selecting Mount Image. 4. Open your DOSBOX config file and at the bottom add these lines: [autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here. mount c ~/tpdos c: 5. Run DOSBOX, CD into the tp7s directory and install Turbo Pascal inside the TP7 directory. c:> cd tp7s c:> install 6. Re-edit the DOSBOX config file and make the autoexec stanza look like this now. [autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here. mount c ~/tp7dos path c:\tp7\bin;c:\tp7\units; c: 7. Inside the archive you downloaded from winworldpc there is a directory for a patch. Read the instruction on how to do the patch. It's a necessary step, don't skip it. After that, you can delete the tp7s directory. 8. Now download the XDOOR KIT, from here: https://jackphla.sh/files/xdoor301.zip Unzip the archive in the directory XDOOR, under our original ./tpdos directory. 9. Lets organize a bit... create another directory named PROJECTS, to keep all of our projects in one place and not in the main directory. You can create also another directory named SOURCE, where to put various pieces of source code, you can find in the Internet, for TP7 and making DOORs specific. 10. As a last step, include in the PATH, also the XDOOR directory. So the AUTOEXEC stanza inside the DOSBOX config file, will look like this: [autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here. mount c ~/tp7dos path c:\tp7\bin;c:\tp7\units;c:\xdoor c: At the end your tree directory, should look something like this: . |-- projects |-- source |-- TP7 | |-- BGI | |-- BIN | |-- DOC | |-- EXAMPLES | |-- SOURCE | `-- UNITS `-- xdoor ----------------------------------------------------------------------- Sources ----------------------------------------------------------------------- Now you have to learn to use the XDOOR kit, which is not difficult, unless you don't know how to program in Pascal, which is out of scope of this guide. As a resource, you can search the Internet for the source code of other DOOR programs. You will find plenty, programmed in Pascal, which is the main reason we chose TP7 on the first place. Another great resource is the SWAG archive. You can find online versions of it here: https://wiki.freepascal.org/Page_Of_Code_Sites#SWAG_sites Personally i prefer the old DOS version of SWAG. You can find a version of it here: http://www.retroarchive.org/garbo/pc/turbopas/index.html ----------------------------------------------------------------------- Demo ----------------------------------------------------------------------- Inside the XDOOR kit directory, there is a demo of a DOOR app. It's a oneliner. Go into the xdoor directory and write: c:\tpc oneliner.pas -B The -B is to build all units. Now you will see an executable file, named ONELINER.EXE. Type: c:\oneliner -? ...to get some help. To run the DOOR locally just give the command: c:\oneliner -l To setup the DOOR app to run under a BBS is whole other guide ;) Enjoy... ------------------------------------------------------------------------------ :::: Mystic Applications :::::::::::::::::::::::::::::::::::::::::::: mysap :: ------------------------------------------------------------------------------ Many Mystic mods/scripts are very useful and/or enjoyful... perhaps some of them, could be useful to run them on everyday usage, on your pc, without the need to join a BBS to run them. And that's exactly what the following BASH script is. It's a way to run Mystic BBS scripts, on your pc, in an easy way. Of course to use it, you must have a version of Mystic installed and the scripts, you want to run available on that installation. After that is easy. Copy the script to your desired folder, make it executable and edit it to change some variables/settings. Provide a user name and a password, to use for making local connection to Mystic BBS. You could create an account, just for this use. Also provide the exact path of the Mystic installation. If you want to have an index file* also place the path to it. You are ready. You can find the script in the file section. Index file ---------- You can use an index file for the script, for just showing the scripts/mods you want to use/see. The simple "list" command will show all the scripts, which may be confusing. With the "index" command and the use of the index file, the script will show only the ones you want, with a small description. Just create a text file and format it like the example below: mbgopher.mpy | Gopher client retroroms.mpy | Info for game ROMs whitenoise.mpx | Terminal screensaver xbbslist.mpx | Cool ANSI BBS list xq-16colors.mpy | 16colo.rs site !!! Make sure to have the | character in the line. Usage ----- One way is to use the "index" or "findex" command to show a list of files/mods and select the one you want to run. At the command line, you can also type: myst or myst run to run the program. If the file is not found it will show you the list of files in the script directory. ------------------------------------------------------------------------------ :::: Assembling Services :::::::::::::::::::::::::::::::::::::::::::: servs :: ------------------------------------------------------------------------------ One great thing of our times, is the Prototype Assembling Services, like PCBWAY, MyProto, EuroCircuits, JLCPCB etc. We may haven't noticed it, but services like these, brought great things in technology and specially in the retro scene. In the past, for someone to build something sophisticated, a very small PCB board, it was impossible and even producing one in mass quantities was unthinkable. But today, one person can design a whole project in his computer, send it over to such a service and purchase from one to thousand pieces in the best quality and even with a small price! It may seem something ordinary today, but if yo think it, it's like a miracle... a dream come true. There are many projects out there, than have been created by hobbiests, that even companies didn't imagined to do. I dare to say, that the whole retro (gaming or computing) scene, wouldn't be the same, if there wasn't such services. Adaptors to use old hardware, adaptors to use current technology in old hardware, whole projects like DIY cyberdecks, light guns, joysticks, DIY mechanical keyboards and more. There is a whole "amature"/hobbiest industry, that uses Youtube, crowdfunding and prototyping services, that perhaps is making money to flow... i didn't say earn ;) cause some projects, may are not profitable, but for sure they make money flow. Here is a list of some: [*] Open Source Flash Carts (EverDrive-style) [*] SNAC Adapter for MiSTer / MiSTer FPGA [*] FlashFloppy / Gotek Mods [*] PiStorm [*] Mini PET [*] OpenC64Cart [*] ZX Spectrum Next [*] Commander X16 [*] GBA Consolizer [*] Dandanator Mini (CPC) [*] RGB2HDMI [*] uConsole (ClockworkPi) [*] Hackberry Pi 0 2W - ZitaoTech and many, many others... It's a great time to live and see these projects. The generation of the 1960-90s is very lucky to see the computer technology evolve in front in their eyes and also being able to be a part of it, in some way or another. Specially today, that even one person can create himself an entire device. ------------------------------------------------------------------------------ :::: Pirating Movies :::::::::::::::::::::::::::::::::::::::::::::::: prtmv :: ------------------------------------------------------------------------------ Lately in Greece, as in other countries before, a new law has taken effect, about pirating movies/shows, which it doesn't only affect sites that distribute illegal content, but also the end users. This made me think of a) ways to continue watch illegal content :) b) is really pirating a bad thing? or it's a good thing... in a way? Let me explain. The most important thing to know/remember, is that the average person in every country, doesn't afford to watch movies at a cinema, every day or even perhaps once a week or once per month. Also for the same reason, people can't afford to have multiple subscriptions to streaming services like Netflix, Apple TV, HULU etc. Probably they will make one subscription to the service they think, it gives them the "best" content for them and watch the other content, from the other services, via illegal ways. It may seem a bad thing, but in the end, it works in a good way for the companies and the whole movie industry. If i like Star Wars, but i only have a subscription for Netflix and i wont watch the new SW movie/series... then for sure, i am not gonna buy other stuff for the specific franchise (games, models, tshirts etc.) and for sure i am not going to indirectly advertise the movie/series to others, via social media or just talking to others, in my work/school etc. Which will lead to less profits for the company that produced the company, as i was never gonna pay for the movie/series it self, but i would "advertise" it or buy books, comics, props etc for the same franchise. Pirating movies, is also a way to test, in a way, a service or network, which in the future it probably will make me a customer or someone to suggest it to others. The thing is, that if you ask your friends, co-workers, students, how many subscriptions have in streaming services, they probably tell you ONE. Less, that have two and even lesser that have more. So the movie industry, instead of "hunting" individuals, it should just "look at the other side", as in the end, pirating movies, as it is today, works for them and not against them. That doesn't mean that they/we should promote pirating, but don't end to the other side and fine everyone. If they truly want to stop pirating movies, shows, books, roms etc. they should think of the economical status of the mass and make them affordable for them. If i could watch a movie for a dollar in my couch, i wouldn't even think of pirating it or going to pay for 5-20$ for VPN services. With that money i could watch even more movies/series that i even watch now. And yes, i mean pay just for a movie... not a subscription to a service. As, as it is now, to watch my favorite movies and shows, i have to make subscriptions from 3 to 5 services, which is just impossible. So instead of punishing your customers, you should think of new ways to service them. For sure you have the means... it's just, that you don't want to. When you overtax things or make things very strict, it often works in a backward way, like a boomerang and at the end, commerce and economy are affected in the opposite way. Instead of making more money, the movie industry risks to lose more than just money. Specially today, is possible to make good movies even with less money. But to keep alive large companies, you have to sell more than just the ticket or a subscription, you need to have enthusiasts to buy other stuff too. I am not sure if the new laws for pirating as just for the pirating or a way to invade in our privacy. With these laws they have an excuse to watch what we download, where we are browsing the Internet and perhaps keep a track of that. The technology right now, is able to detect what you download, at the time you are doing so... if the data are not encrypted... or not? We are living at times, that security, freedom, democracy are in danger and the individuals are helpless in front of large companies or even states. Something to have in mind. There is much to say about the subject. If you want, watch also this video that gives a synopsis of why the streaming industry doesn't provide a good solution to watch movies. https://www.youtube.com/watch?v=YjPXodrEgBc ------------------------------------------------------------------------------ :::: Secure BBS for Freedom of Speech ::::::::::::::::::::::::::::::: spfbb :: ------------------------------------------------------------------------------ Freedom of speech and democracy is under attack. We are seeing things from novels like "1984" being implement in front of our eyes, unable to do anything about it. It's not just censorship, it's taking control of every mean we have to communicate with each other. Organizations, want to have ways to be able to track anything, even in encrypted services like current Instant Messaging services. And it's not just the Internet. Even in HAM Radio, you can't talk about anything than technical stuff and encryption is forbidden. For security reasons, you may say... perhaps.. but in case that we, the common people are in risk, we should have means to communicate with total freedom. Right now, everything is on the Internet. Everything is data, that passes over servers, that can be controlled. You can't trust anything that is on the Internet! Period! If you want a secure way to communicate, that should be outside the Internet. That means a local network and if possible, not a wireless one. Back then, BBSes were such a unique way, that used local infrastructure, that wasn't able to be tracked easily. The same thing, should be applied also. Local networks, that should use encryption, outside the Internet. It may seem weird of difficult, but examples of that, are happening even now, in areas that Internet is difficult to access or prohibited or people want to use illegal content (movies, games) like in Cuba. You can see an example here: https://www.youtube.com/watch?v=lEplzHraw3c With current technology it should able to create, secure local Intranets very easy. Mini routers, drones, raspberry pis are common things, that someone can find easy and use to build a network. The hardware is not a problem. People are... The weakest link in every system, community, organization etc. it's people! Closed networks, even secure (technological) are not safe, if the users of it, are unaware of dangers or just talk too much. Members of the BBS scene should remember, that most arrests of HPAVC groups, back then, were happening because at some point, those groups, got too large and people or even members of them, spoke and "spoke" too much. So, secure networks, should have a small number of members and act like cells that could have communication with other cells/hubs, via files, disks, exactly like in the past. It's not just by luck, that in the past the exact same way of interacting via computers, was happening. It's because, back then there wasn't Internet. You should consider, that the Internet is no more... not like you remember it in the beginning of it. The Internet we had is no more. All these, may seem dark and dangerous... perhaps. But take a look around you and think of it. Am i wrong? If i remember corrent, i have written about the same matter in the past, in another issue of NULL. From then, until now, things are way worse and it seems that it's gonna get even worse. As it's said "History repeats it self" and the same is going to happen again, sooner or later. Even preppers/survivalists are making the same, in their own way, through HAM radio and even packet BBSes. ------------------------------------------------------------------------------ :::: Free games? :::::::::::::::::::::::::::::::::::::::::::::::::::: frgms :: ------------------------------------------------------------------------------ There is a big difference today, than the "Old Times" in the 70s-80s or 90s, in playing or finding games. Back then, you had to pay for everything, just to play... i mean legally. Back then the public domain scene, was as small, as fuck! Today, there is too much free content, that you can get and play in many systems, like retro computers, consoles, PCs etc. Independent developers, offer free games and many of them are as good as those, that big companies produce. You can find many of them in sites like /itch.io/ or other sites, that offer homebrew software. For sure it needs a bit of research, to find the best ones, but still there is plenty of stuff. Abandonware software is another source of free games. Games that have no royal fees or their developers, made them available for free, can be played even online or download them to your system. The best site for this type, i think is /www.myabandonware.com/. You will be surprised on how many, or which of them are free, cause many of them, were top games in their time. Pico8 is also a category of its own. Free games, with 100% retro vibes and excellent gameplay for most of its games. If we had Pico8 back then, it would definitely had changed the future of the gaming industry today. We shouldn't also forget, that many games today, are offered as free, but have in-game purchases... but still are considered as free, as you can download them and play. It resembles the shareware games, but it's not the same. The gaming industry, as the music one, has changed a lot and i am speaking mostly for the way, you pay for them today. There are either too cheap to purchase or you can try before buy. The only media that things haven't changed is the movie industry and perhaps there is a good reason for that... but still... there is always room/opportunity for a change. The Internet, has changed the whole society and how we inter-act with each other. I don't think that the movie industry can hold much and don't accept the changes either. ------------------------------------------------------------------------------ :::: Use a Raspberry Pi out of the box :::::::::::::::::::::::::::::: rpibx :: ------------------------------------------------------------------------------ Raspberry Pis and other SBCs are a big "rabbit hole" where you throw money and time, without even realizing it, just to throw them in a drawer, where will be unused for months, may be years. In this article, i will describe a way to use a Raspberry Pi 0/2W, out of the box, to have "buttons" and LED indications, without even soldering anything or buying any extra hardware... not even the buttons or the LED ;) The RPi0 has a Power LED indicator that we can program, to flash, as we like, so this is gonna be the LED to program notifications about the state of the RPi or anything we want. As for the buttons... a button is nothing more, than a simple mechanism, that shorts a circuit, in our case two pins! So, we don't need to buy and/or solder any button, as we can short two pins, very easily by using anything metallic! Just with a tip of a knife, we can short two neighboring pins of the RPi and that will act as a button press! /// LED ///////////// First the LED. To "own" the LED of the RPi0, just give this oneliner command: sudo sh -c 'echo none > /sys/class/leds/ACT/trigger' The Power LED will turn off. Use 'cat' to see other values you can give... i really like the 'heartbeat' one, which flashes the LED as a hear beat. cat /sys/class/leds/ACT/trigger' To flash the LED, you give this command: sudo sh -c 'echo 1 >/sys/class/leds/led0/brightness' And to turn it off: sudo sh -c 'echo 0 >/sys/class/leds/led0/brightness' That's it! You can use these simple commands to turn of/off the LED and make your own signals. Use the 'sleep' command to add a delay between switching it on/off. By using the LED and programming special 'optical codes' ex. one long flash and then two short ones, we can have a way to know, what the system does, if it has internet connection, if a task has finished, if it's halted etc. This way, you don't have to buy any LEDs or screens. /// BUTTONS ///////// The buttons is a bit trickier to use. As we said, we will simulate a button press, by just shorting two pins, but which ones? In a RPi to use a button you need a GROUND pin and a general GPIO pin. So just shorting those two, you can have a button press. The easiest way, i figured to do so, is to have a RPi with full pins pre-soldered and use a clip or knife to short two neighboring pins. Take a look at the GPIO diagram below. .___. +3V3---1-|O O|--2--+5V (SDA) GPIO2---3-|O O|--4--+5V (SCL1) GPIO3---5-|O O|--6--_ GROUND (GPIO_GLCK) GPIO4---7-|O O|--8-----GPIO14 (TXD0) GROUND _--9-|O.O|-10-----GPIO15 (RXD0) (GPIO_GEN0) GPIO17--11-|O O|-12-----GPIO18 (GPIO_GEN1) (GPIO_GEN2) GPIO27--13-|O O|-14--_ GROUND (GPIO_GEN3) GPIO22--15-|O O|-16-----GPIO23 (GPIO_GEN4) +3V3--17-|O O|-18-----GPIO24 (GPIO_GEN5) (SPI_MOSI) GPIO10--19-|O.O|-20--_ GROUND (SPI_MISO) GPIO9 --21-|O O|-22-----GPIO25 (GPIO_GEN6) (SPI_SCLK) GPIO11--23-|O O|-24-----GPIO8 (SPI_C0_N) GROUND _-25-|O O|-26-----GPIO7 (SPI_C1_N) (EEPROM) ID_SD---27-|O O|-28-----ID_SC Reserved for ID EEPROM GPIO5---29-|O.O|-30--_ GROUND GPIO6---31-|O O|-32-----GPIO12 GPIO13--33-|O O|-34--_ GROUND GPIO19--35-|O O|-36-----GPIO16 GPIO26--37-|O O|-38-----GPIO20 GROUND _-39-|O O|-40-----GPIO21 '---' 40W 0.1" PIN HDR Find any GROUND pin and just short it with the neighboring pin/gpio. For example we can use pins 39 and 37, 34 and 36, 34 and 32, 20 and 22 etc. You can use any other way you want to short the pins, enabling you to use not neighboring pins, but the easiest way is to use pins that are side-by-side. But we are not done yet. To use the "buttons" we need to use a way to program them. The easiest way and for me the most robust, is to use Python3 and the 'gpiozero' library. This library is very flexible and gives us many abilities, like using a button by just pressing it, but also while holding it for a specific amount of time. This way, we can increase the number of "buttons" we can have even more. In the FILES sections, there is a complete Python3 script and some BASH scripts it uses, to have 3 buttons, to reboot, shutdown and give information about the system, using the power LED, as described earlier. With that script and no other component, you can set a RPi0 in no time, able to use it as you need and have a way to properly shut it down, with out the need to solder anything! Make sure to change the script and use the pins/GPIOs you want and also the paths. The numbers for the buttons are the GPIO numbers, NOT the pin numbers. ------------------------------------------------------------------------------ :::: Linux DIALOG blue theme :::::::::::::::::::::::::::::::::::::::: lndlt :: ------------------------------------------------------------------------------ DIALOG is a Linux utility to make a TUI/Text User Interface, in an easy and constant way, to use in BASH scripts. For sure, you have seen it, while installing a Linux distro or settings up a Raspberry Pi. DIALOG, except from beeing powerful and user friendly is also theme-able. You can change its colors to your liking. It's not a straight forward thing to do, but is possible. So below, there is a Blue/Black theme for DIALOG, that is similar to the "Shareware BBS" theme, of the Mystic BBS Configuration program, which by it self is similar to other old DOS utilities. To use it, copy/paste the text from the files area, into a file named '.dialogrc' and put it in your HOME directory. Whenever a scripts uses DIALOG, it will use this theme. .oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo. ============================---------------=========================== ||||||||||||||||||||||||| F I L E S ||||||||||||||||||||||||| ============================---------------=========================== ==== Mystic Applications BASH script ============================== mysaf == #!/bin/bash script="${0##*/}" script="${script%.*}" VERSION=1.0.0 tmp="/tmp" lines=$(echo -e "lines"|tput -S) columns=$(echo -e "cols"|tput -S) let l1=$lines-2 let l2=$lines-1 let col=$columns-6 mysticdir="/home/user/mystic" themedir=$mysticdir"/themes/default" scriptdir=$themedir"/scripts" DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) index=$DIR"/myst.ind" user="username" pass="password" #yellow start C14="\e[1;33m" #blue start C01="\e[0;34m" #color end CE="\e[0m" #red start C04="\e[1;31m" #black start C00="\e[0;30m" #dark gray start C08="\e[1;30m" #light blue start C09="\e[1;34m" #green start C02="\e[0;32m" #light green start C10="\e[1;32m" #cyan start C03="\e[0;36m" #light cyan start C11="\e[1;36m" #light red start C12="\e[0;31m" #purple start C05="\e[0;35m" #light purple start C13="\e[1;35m" #brown start C06="\e[0;33m" #light gray start C07="\e[0;37m" #white C15="\e[1;37m" #setting frequent stings YNYES="("$C14"Y"$CE"/"$C14"n"$CE")("$C14"Enter"$CE"=yes)" YNNO="("$C14"y"$CE"/"$C14"N"$CE")("$C14"Enter"$CE"=no)" YNONLY="("$C14"y"$CE"/"$C14"n"$CE")" PAKT="Press "$C14"any key$CE to" PAKTC="Press "$C14"any key$CE to continue..." PAKTGB="Press "$C14"any key$CE to go back..." #code to read from keyboard without return READAK="read -n 1" function presskey() { echo "" echo "Press a key to continue..." read -n 1 } function msg() { ts=$(date +"%Y/%m/%d %H:%M:%S") echo -e $C03"[$ts] "$C14"$1"$CE } function error() { ts=$(date +"%Y/%m/%d %H:%M:%S") echo -e $C03"[$ts] "$C04"$1"$CE } function fzz() { #"right,50%,:wrap" fzf --ansi --bind 'enter:execute(echo {1})+abort' --bind 'end:last' --bind 'home:first' --header $'\x1b[1;32m'"$1" } function list(){ cd $scriptdir ls *.mpy *.mps -1 } function run(){ fn="$1" cd $mysticdir filename=$(basename -- "$fn") extension="${filename##*.}" case "$extension" in "mpx") cp437 ./mystic -u"$user" -p"$pass" -x"$filename";; "mpy") cp437 ./mystic -u"$user" -p"$pass" -y"$filename";; *) cp437 ./mystic -u"$user" -p"$pass" -y"$filename";; esac } function flist(){ cd $scriptdir app=$(ls *.mpy *.mpx -1 | fzz) if [ ! -z "$app" ]; then run "$app" fi } function match(){ if [ -z "$1" ]; then list return fi cd $scriptdir ls *.mpy -1 | grep "$1" if [ $? -eq 0 ]; then run "$1" fi } function index(){ if [ -f "$index" ]; then cat "$index" else error "File doesn't exist!" fi } function findex(){ if [ -f "$index" ]; then app=$(cat "$index" | fzz) if [ ! -z $app ]; then run $(echo "$app" | cut -d"|" -f1) fi else error "File doesn't exist!" fi } function help(){ echo " " echo "Usage: myst [args]" echo " " echo -e $C14" Commands"$CE echo -e $C15" run $C07 execute script"$CE echo -e $C15" list $C07 list all scripts in script dir."$CE echo -e $C15" flist $C07 list all scripts with FZF and run selected"$CE echo -e $C15" index $C07 show index file"$CE echo -e $C15" findex $C07 show index file and select with FZF"$CE echo " " exit 1 } currentdir="$(pwd)" cd "$scriptdir" case "$1" in "list") list;; "flist") flist;; "run") run "$2";; "index") index;; "findex") findex;; "help") help;; *) match "$1";; esac cd "$currentdir" echo -e $CE"\e[?25h" ==== end of script ========================================================== ==== Blue/Black .dialogrc theme ==================================== dlgtm == # # Run-time configuration file for dialog # # Types of values: # # Number - # String - "string" # Boolean - # Attribute - (foreground,background,highlight?,underline?,reverse?) # Set aspect-ration. aspect = 0 # Set separator (for multiple widgets output). separate_widget = "" # Set tab-length (for textbox tab-conversion). tab_len = 2 # Make tab-traversal for checklist, etc., include the list. visit_items = OFF # Shadow dialog boxes? This also turns on color. use_shadow = ON # Turn color support ON or OFF use_colors = ON screen_color = (BLACK,WHITE,OFF) shadow_color = (BLACK,BLACK,ON) dialog_color = (CYAN,BLACK,ON) title_color = (WHITE,BLUE,ON) border_color = (BLUE,BLACK,ON) button_active_color = (WHITE,BLUE,ON) button_inactive_color = (WHITE,BLACK,OFF) button_key_active_color = (YELLOW,BLUE,ON) button_key_inactive_color = (WHITE,BLACK,ON) button_label_active_color = (WHITE,BLUE,ON) button_label_inactive_color = (WHITE,BLACK,OFF) inputbox_color = (WHITE,BLACK,ON) inputbox_border_color = (CYAN,BLUE,ON) searchbox_color = dialog_color searchbox_title_color = (WHITE,BLACK,OFF) searchbox_border_color = border_color position_indicator_color = (WHITE,BLACK,OFF) menubox_color = (WHITE,BLACK,OFF) menubox_border_color = border_color item_color = (WHITE,BLACK,OFF) item_selected_color = (WHITE,BLUE,ON) tag_color = (WHITE,BLACK,OFF) tag_selected_color = button_label_active_color tag_key_color = button_key_inactive_color tag_key_selected_color = (YELLOW,BLUE,ON) check_color = dialog_color check_selected_color = button_active_color uarrow_color = (CYAN,BLACK,OFF) darrow_color = uarrow_color itemhelp_color = (CYAN,BLACK,OFF) form_active_text_color = (YELLOW,BLUE,ON) form_text_color = (WHITE,BLACK,OFF) form_item_readonly_color = (WHITE,BLACK,OFF) gauge_color = (CYAN,BLACK,ON) border2_color = (BLUE,BLACK,OFF) inputbox_border2_color = (BLUE,BLACK,OFF) searchbox_border2_color = (BLUE,BLACK,OFF) menubox_border2_color = (BLUE,BLACK,OFF) ==== end of script ========================================================== ==== Raspberry Pi Buttons and LEDs ================================= rbtsc == #!/usr/bin/python3 import time from gpiozero import Button, LED import os import requests import logging import shutil import math sdir='/home/z/scripts/' test = Button(5, pull_up=True, hold_repeat=False) pwr = Button(12, pull_up=True, hold_repeat=False) rst = Button(16, pull_up=True, hold_repeat=False) logging.basicConfig( filename=sdir+'system.log', # Specify the log file name level=logging.INFO, # Set the logging level to INFO format='%(asctime)s - %(levelname)s - %(message)s' ) def internet_connection(): try: response = requests.get("https://google.com", timeout=5) return True except requests.ConnectionError: return False def blink(longt,shortt): os.system(sdir+'led-blink.sh '+str(longt)+' '+str(shortt)) def button_pressed(): print("Button pressed.") def button_released(): print("Button released.") def pressed_reset(): logging.info('RESET button pressed') os.system(sdir+'led-init.sh') print("Rebooting system...") blink(3,0) os.system('sudo reboot') def pressed_power(): logging.info('POWER OFF button pressed') os.system(sdir+'led-init.sh') print("Powering off system...") blink(3,3) os.system('sudo shutdown now') def Held(): logging.info('INFO button pressed') os.system(sdir+'led-init.sh') #init blink blink(1,0) time.sleep(1) #check internet if not internet_connection(): logging.warning('No Internet Connection') blink(2,3) #check disk usage total, used, free = shutil.disk_usage("/") percent = math.ceil((used * 10) / total) blink(1,percent) print("Disk Usage is: " + str(percent * 10)) #return state time.sleep(1) os.system(sdir+'led-heart.sh') test.hold_time = 2 test.when_held = Held pwr.hold_time = 2 pwr.when_held = pressed_power rst.hold_time = 2 rst.when_held = pressed_reset print("Press CTRL-C to exit.") while True: time.sleep(1) ==== end of script ========================================================== ==== led-init.sh =================================================== rbtsc == #!/bin/bash sudo sh -c 'echo none > /sys/class/leds/ACT/trigger' ==== end of script ========================================================== ==== led-heart.sh ================================================== rbtsc == #!/bin/bash sudo sh -c 'echo heartbeat > /sys/class/leds/ACT/trigger' ==== end of script ========================================================== ==== led-blink.sh ================================================== rbtsc == #!/bin/bash PAUSE=1 LONG=0.5 SHORT=0.2 function on(){ sudo sh -c 'echo 1 > /sys/class/leds/ACT/brightness' } function off(){ sudo sh -c 'echo 0 > /sys/class/leds/ACT/brightness' } #bash,No, parameters, passed if [ $# -eq 0 ]; then echo "Usage:" echo "./led-blink " exit 1 fi #LONG for i in $(seq 1 $1); do on sleep $LONG off done #SHORT for i in $(seq 1 $2); do on sleep $SHORT off done sleep $PAUSE ==== end of script ========================================================== ============================---------------=========================== ||||||||||||||||||||||||| A B O U T ||||||||||||||||||||||||| ============================---------------=========================== n u l l m a g a z i n e i s s u e { x 0 0 D } ------------------------------------------------------------------------------ :::: w h a t ? ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ------------------------------------------------------------------------------ null magazine is an e-mag, about the bbs scene, ansi art, programming, retro computing/gaming and stuff. as from issue x005 null is written in turbo pascal 7 for dos only! oldschool stuff!!! this way anyone can get a copy of dosbox in his pc or smartphone and read null! there is also a text only version, specially for those who are scared to execute binary files... later issues are only in text. ------------------------------------------------------------------------------ :::: d o w n l o a d ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ------------------------------------------------------------------------------ null magazine hq is 'another droid bbs'. there you can can download or even read online the magazine, from the bbs. just visit: another droid bbs / andr01d.zapto.org:9999 another droid gopher / andr01d.zapto.org:7070 another droid website / andr01d.zapto.org:8080 xqtr's lair at / cp737.net official distros for null mag: agency bbs // agency.bbs.nz distortion bbs // d1st.org at the distros you can download the mag or read it online, couple of days before the mag is released to the web. you can also download it from affiliate networks and from github at: https://github.com/xqtr/null ------------------------------------------------------------------------------ :::: d i s c l a i m e r ::::::::::::::::::::::::::::::::::::::::::::::::::::: ------------------------------------------------------------------------------ any writer who provides articles for null mag. has his own opinion. the mag is not responsible in any way about authors opinions. null respects free speech and supports the variety of opinions in any social form of a network. for used material, like articles, ansi art, music, all credits goes to their creators. you are free to use material made by the founder of the mag (xqtr) under GPL3 license, no need to ask permissions. for any other material its your responsibility to do what you think best. the author has taken every precaution to insure that no harm or damage will occur on computer systems operating this util. never the less, the author will not be held liable for whatever may happen on your computer system or to any computer systems which connects to your own as a result of. operating this util. the user assumes full responsibility for the correct operation of this software package, whether harm or damage results from software error, hardware malfunction, or operator error. no warranties are : offered, expressly stated or implied, including without limitation or ; restriction any warranties of operation for a particular purpose and/or | merchant ability. if you do not agree with this then do not use this program. ------------------------------------------------------------------------------ :::: c o n t a c t ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ------------------------------------------------------------------------------ if you want to report bugs, send articles or art, just send an email at: xqtr@gmx.com or visit the BBS and leave a message. telnet://andr01d.zapto.org:9999 gopher://andr01d.zapto.org:7070 https://cp737.net http://andr01d.zapto.org:8080/ <- will be turned off ------------------------------------------------------------------------------ :::: c o n t r i b u t i o n s ::::::::::::::::::::::::::::::::::::::::::::::: ------------------------------------------------------------------------------ def list(authors): xqtr // another droid bbs def list(contributors): smooth // ink2 bbs :: ansi screen for issue x003 :: ansi screen for issue x004 shinobi // :: tutor for issue x005 :: tutor for issue x009 eugene // ? :: ansi screen for issue x006 :: ansi screen for issue x007 :: ansi screen for issue x008 :: ansi screen for issue x009 :: ansi screen for issue x00A alphaking // blocktronics :: flyer/logo for null mag. filth // blocktronics :: flyer/logo for null mag. nodohana :: article for issue x008 deepthaw :: article for issue x00B stack fault :: article for issue x00B meatlotion :: tutorial for issue x00B ChatGPT :: wrote some articles for issue x00d :) def list(distributors): avon // agency bbs jack phlash // distortion bbs _____ _ _ ___ ___ _ _ ___ |_ _| || | __| | __| \| | \ | | | __ | _| | _|| .` | |) | |_| |_||_|___| |___|_|\_|___/ i Q5A s o 2 A P 2 b Q A v / A TbqJA j c T A j T I Q j A A / I Aj A j 5 Q Aj c C/IIBQjA cAA X / A XvC/IQ5 7r AAA AXP NkiBf A AAAAAjAAj AXvC/ Q5As7rio XvPANki c2TbqJADBwAF5 s7c2T jkjk C/II Qj/ 2T 2T7ri7ri 2TbqJAD LcAAAj cc qvC/IF Qjv /IIBQj ioR7wAv Dff/ Q5 s7rio0 I C/c2Tc2T C/IIBQj 7rioR wAvS IIQ5As7 io 5As7rioc2TbqJADQ A k A AAjPc2TbH A 5AvC/vC/ 5As7rio c2TbqJADQ 7AAjPcFFb jPc2TbvC/II QjA jkBBjPAAAXvC I Aj AAjQ5AQ5A AjPc2Tb vC/IIBQjDS PcAAAX F/ AAAX C fX AjPc2TbPAu t kiBfX 3PAN PANA A AX NkiBfX AAj c2T P kiBfX n D AA AXvC nHkY & 3 d PA PAN fXSN AAA vC/I i n K H PANkiBM MYf W & n N # dm3 PAN iBfX @ K k L D # #fH D W n 3 S nN& LK @ d k Y i H S SHM D D & m n3W ik d n Y f i L m mM# H D W N &D iY n n f H @ i N N# L H D 3 W @f n H M d i 3 3Sm i L D & DH dH 3 M # n @ & &mN i i H W DL nM 3 # S n s d W WN3 @ i L D Hi n# S m n D D3& d @ i D Li S m N n D&W n d i H i@ m N 3 j H WD n n @ L id N n 3 & L LDD r n d i @n 3 t & W i iDH o n i dn & W D u r i iHL n @ n W o D D @ @Li a d d n D D H d ii m n D H L n ni@ n h t L i n n@d n L L i dn s i i @ nn i @ n