{{ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Autor: Reinhard Zielinski │ │ Copyright (c) 2013 Reinhard Zielinski │ │ See end of file for terms of use. │ │ Die Nutzungsbedingungen befinden sich am Ende der Datei │ └──────────────────────────────────────────────────────────────────────────────────────────────────────┘ Informationen : hive-project.de Kontakt : zille09@gmail.com System : TriOS Name : PLEXUS - Zentrale Kommunikationseinheit der Borg Chip : Regnatix Typ : Loader-Programm für Plexus - TRIOS-Version Version : 01 Subversion : 01-TRIOS Funktion : "Startdatei für PLEXUS - unter TRIOS lauffähig, startet den Administra- und Bellatrixcode von SD-Karte Logbuch : '############################################# Version 1.00 ################################################################################################################# 04-08-2013 : -Erster Versuch der Herauslösung der Startfunktionen aus der eigentlichen Plexus-Shell, es werden alle Startparameter in den E-Ram geladen und dann die eigentliche Shell gestartet -Außerdem wird das Plexus-Logo beim Start angezeigt -> das sieht cool aus ;-) 16-08-2013 -LOGO wurde Borg-mäßig in grün geändert - nu is noch cooler ;-) -Scrolltext für unser Motto hinzugefügt - nu is aber Schluss mit cool '############################################# Version 1.01 ################################################################################################################# 15-10-2013 -LOGO-Farbgebung geändert, jetzt bunter, weil Plexus Version 2.0 geladen wird 19-10-2013 -Fehler in Iniload behoben, es wurde der Venatrix- und Sepia-Marker an die falsche Stelle im Ram abgelegt 07-11-2013 -Fehldarstellung beim Löschen des Start-Logo's behoben (jetzt wird der Bildschirm mit der aktuellen Shell-Hintergrundfarbe gelöscht) '############################################# VERSION 1.02 ################################################################################################################# 19-03-2014 -Laderoutine für die Error-und Systemtexte geändert, jeder Text hat jetzt eine feste Adresse, ist beim laden zwar langsamer aber die Texte -werden viel schneller aus dem Ram geladen und angezeigt, egal wieviele Texte vorhanden sind }} OBJ ios: "reg-ios-64" CON _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 '-------- Speicher für diverse Texte ------------ TXT_RAM = $20000 vidnfo = $21000 sndnfo = $21200 prgnfo = $21400 Verz_RAM = $21800 MENU_RAM = $22000 '-------- Speicher für DLL-Namen ---------------- DLL_RAM = $30000 '-------- Speicher für Titelliste --------------- DMP_RAM = $40000 '-------- Speicher für Screensaver -------------- SCREEN_SV = $63000 '-------- Speicher für Systemfont --------------- SYS_FONT = $66800 '....$693FF ' ab hier liegt der System-Font 11kb MOUSE_RAM = $69400 '....$6943F ' User-Mouse-Pointer 64byte '-------- Speicher für Dateiliste --------------- DIR_RAM = $69440 '....$6AFFF '-------- YMODEM Temp-Speicher ------------------ YMODEM_RAM= $7E400 '... $7E417 Name, der zu sendenden Datei, Was soll gemacht werden(0Empfang,1Senden)+Dirmarker LINK_RAM = $7FE00 PARA_RAM = $7FE40 SETTING_RAM = $7FF00 'Hier stehen die System-Settings 'Bereich 7FFF1-7FFFF 'Systemflags für Plexus und Basic START_FLAG = $7FFFF 'Flag das Plexus schonmal gestartet wurde ->Logo unterdrücken ADM_SPEC = gc#A_FAT|gc#A_LDR|gc#A_SID|gc#A_LAN|gc#A_RTC|gc#A_PLX'%00000000_00000000_00000000_11110011 '******************Farben ******************************************************** #$FC, Light_Grey, #$A8, Grey, #$54, Dark_Grey #$C0, Light_Red, #$80, Red, #$40, Dark_Red #$30, Light_Green, #$20, Green, #$10, Dark_Green #$1F, Light_Blue, #$09, Blue, #$04, Dark_Blue #$F0, Light_Orange, #$E6, Orange, #$92, Dark_Orange #$CC, Light_Purple, #$88, Purple, #$44, Dark_Purple #$3C, Light_Teal, #$28, Teal, #$14, Dark_Teal #$FF, White, #$00, Black obj gc:"glob-con" VAR 'systemvariablen byte font[25] 'Hilfsstring für Strings aus dem Ram byte colors[15] long systemdir 'Systemverzeichnis-Marker dat ini byte "reg.ini",0 'Ini-Datei für Farbwerte, Dateiverknüpfungen und Systemeinstellungen errortxt byte "reg.err",0 ' Trash byte "TRASH ",0 video_inf byte "VIDEO.NFO",0 'Grafikinfo prg_inf byte "prg.nfo",0 'Programminfo sound_nfo byte "sound.nfo",0 'Soundinfo dll_lst byte "dll.lst",0 'Dll-Namensliste plexus byte "plexus.dll",0 'Plexus-Hauptprogramm SYSTEM Byte "PLEXUS ",0 'Plexus-Systemverzeichnis Version byte "Version 2.1",0 sysfont byte "reg.fnt",0 scrsaver byte "plexus.dat",0 scroll byte "WE ARE BORG! YOU WILL BE ASSIMILATED. RESISTANCE IS FUTIL.",0 PUB main | i,a ios.start ios.sdmount 'sd-card mounten activate_dirmarker(0) ios.sdchdir(@system) 'in's System-Verzeichnis springen systemdir:=get_dirmarker 'System-Dirmarker lesen 'activate_dirmarker(0) if ios.admgetspec<>ADM_SPEC ios.admload(string("plexus.adm")) 'Administracode laden activate_dirmarker(systemdir) 'nach dem Neustart von Administra wieder ins Systemverzeichnis springen if ios.bel_get<>88 ios.belload(string("plexus.bel")) 'Bellatrixcode laden ios.ram_fill(DIR_RAM,$1BFF,0) 'Dir-Speicher löschen ios.ram_fill(DMP_RAM,$1FFF,0) 'Dmp-File-Speicher löschen ios.ram_fill(TXT_RAM,$2000,0) 'Error-Text-Speicher löschen ios.ram_fill(LINK_RAM,$ff,0) 'Link-Speicher löschen ios.ram_fill(MENU_RAM,$500,0) 'Menue-Text-Speicher löschen ios.ram_fill(dll_RAM,$300,0) 'Dll-Namen löschen ios.ram_fill(YMODEM_RAM,$30,0) 'YMODEM-RAM löschen '-------------------------------------------------------------------------------------- activate_dirmarker(systemdir) 'nach dem Neustart von Administra wieder ins Systemverzeichnis springen ios.sdopen("R",@errortxt) fileload_err(TXT_RAM,25) 'Fehler-Texte laden ios.sdopen("R",@video_inf) fileload(vidnfo) 'Video-Info laden ios.sdopen("R",@sound_nfo) fileload(sndnfo) 'Sound-Info laden ios.sdopen("R",@prg_inf) fileload(prgnfo) 'Programm-Info laden ios.sdopen("R",@dll_lst) fileload_err(DLL_RAM,16) 'dll-namen laden '***************** Initialisierung ohne Ini-Datei **************************** if iniload 'wenn keine Ini da ist, standardwerte setzen colors[0]:=light_blue colors[1]:=white colors[2]:=light_blue colors[3]:=white colors[4]:=dark_blue colors[5]:=white colors[6]:=grey colors[7]:=white colors[8]:=white colors[9]:=dark_blue colors[10]:=blue colors[11]:=white colors[12]:=purple colors[13]:=black colors[14]:=grey i:=SETTING_RAM a:=0 repeat 15 ios.ram_wrbyte(colors[a++],i++) ios.ram_wrbyte(7,i++) 'baudrate setzen auf 57600 ios.ram_wrbyte(1,i++) 'show hidden files ios.ram_wrbyte(1,i++) 'use trash ios.ram_wrbyte(0,i++) 'Venatrix nicht verwenden ios.ram_wrbyte(0,i++) 'Sepia nicht verwenden '****************** Hauptbildschirm ****************************************** ios.printBoxcolor(0,red,orange,95) ios.printchar(12) 'cls LoadTiletoRam(@sysfont,SYS_FONT) 'Systemfont auf jeden Fall in den Ram laden '****************************************************************************** '*Wird Plexus aus beendeten Bin Dateien geladen, wird das Logo nicht angezeigt* '****************************************************************************** if ios.ram_rdbyte(START_FLAG)<>235 LoadTiletoRam(@scrsaver,SCREEN_SV) 'Plexus-Logo in den Ram laden loadtile(SCREEN_SV) 'Plexus-Logo nach Bella laden ios.display2dbox(red,0,0,2,39,0) ios.display2dbox(light_red,3,0,5,39,0) ios.display2dbox(orange,6,0,9,39,0) ios.display2dbox(dark_red,10,0,10,39,0) ios.display2dbox(light_orange,11,0,18,39,0) ios.display2dbox(dark_red,19,0,19,39,0) ios.display2dbox(orange,20,0,23,39,0) ios.display2dbox(light_red,24,0,26,39,0) ios.display2dbox(red,27,0,29,39,0) ios.displaypic(light_orange,black,0,11,10,8,22)'light_orange,0,11,10,8,22) 'Plexus-Logo anzeigen ios.setpos(7,15) ios.print(string("Welcome to")) ios.setpos(21,12) ios.print(string("for Hive-Computer")) ios.printBoxcolor(0,orange,light_red,95) ios.setpos(24,15) ios.print(@version) ios.printBoxcolor(0,orange,light_orange,95) ios.scrollString(@scroll,4, light_orange, red, 27, 0, 39) '************************* Plexus wird geladen ************************************* ios.printBoxcolor(0,0,ios.ram_rdbyte(SETTING_RAM),0)'ios.ram_rdbyte(0,colors[0],SETTING_RAM) ios.printchar(12) 'cls ios.sdopen("R",@plexus) 'Plexus.Dll öffnen ios.ldbin(@plexus) 'Plexus laden { #$FC, Light_Grey, #$A8, Grey, #$54, Dark_Grey #$C0, Light_Red, #$80, Red, #$40, Dark_Red #$30, Light_Green, #$20, Green, #$10, Dark_Green #$1F, Light_Blue, #$09, Blue, #$04, Dark_Blue #$F0, Light_Orange, #$E6, Orange, #$92, Dark_Orange #$CC, Light_Purple, #$88, Purple, #$44, Dark_Purple #$3C, Light_Teal, #$28, Teal, #$14, Dark_Teal #$FF, White, #$00, Black } con '***************************************************** Diverse Texte in den E-Ram laden ************************************************************************************** PRI fileload(adr)|cont cont:=ios.sdfattrib(0) ios.sdxgetblk(adr,cont) ios.sdclose PRI fileload_err(adr,st)| cont,c,b,a,i i:=adr b:=0 repeat a:=ios.sdgetc if a==$0A b++ i:=adr+(st*b) next else ios.ram_wrbyte(a,i++) until ios.sdeof ios.sdclose PRI activate_dirmarker(mark) 'USER-Marker setzen ios.sddmput(ios#DM_USER,mark) 'usermarker wieder in administra setzen ios.sddmact(ios#DM_USER) 'u-marker aktivieren PRI get_dirmarker:dm 'USER-Marker lesen ios.sddmset(ios#DM_USER) dm:=ios.sddmget(ios#DM_USER) con '********************************* Unterprogramme zur Tile-Verwaltung ********************************************************************************************************* PRI LoadTiletoRam(datei,adress) 'tile:=tilenr,dateiname,xtile-zahl,ytilezahl ios.sdopen("R",datei)') 'datei öffnen ios.sdxgetblk(adress,11264) 'datei in den Speicher schreiben (der blockbefehl ist viel schneller als der char-Befehl) ios.sdclose PRI loadtile(adress) 'tileset aus eram in bella laden 'anzahl:=2816 'anzahl longs '(16*11*16longs) ios.loadtilebuffer(adress,2816) 'laden 'Systemfont-Bereich (Basic verwendet den gleichen Bereich) PRI iniload:err|i,tmp if ios.sdopen("R",@ini) err:=1 else err:=0 i:=SETTING_RAM '---- SYSTEM-SETTINGS IN DEN RAM LADEN ------------- repeat 18 ios.ram_wrbyte(ios.sdgetc,i++) tmp:=i '---- DESKTOP-VERKNÜPFUNGEN IN DEN RAM LADEN ------- i:=LINK_RAM repeat 51 ios.ram_wrbyte(ios.sdgetc,i++) '---- USER-MAUSZEIGER IN DEN RAM LADEN ------------- i:=MOUSE_RAM repeat 64 ios.ram_wrbyte(ios.sdgetc,i++) ios.Mousepointer(MOUSE_RAM) 'MAUSZEIGER ANWENDEN ios.displaymouse(0,0) '---- LINK-PARAMETER IN DEN RAM LADEN -------------- i:=PARA_RAM repeat 192 ios.ram_wrbyte(ios.sdgetc,i++) '---- DCF-Empfänger benutzen ----------------------- ios.ram_wrbyte(ios.sdgetc,tmp++) '---- HC05-Bluetooth-Modul ------------------------- ios.ram_wrbyte(ios.sdgetc,tmp++) '---- Extended Titlebar-Anzeige -------------------- ios.ram_wrbyte(ios.sdgetc,tmp++) ios.sdclose DAT 'lizenz {{ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TERMS OF USE: MIT License │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │ │files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │ │modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│ │is furnished to do so, subject to the following conditions: │ │ │ │The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│ │ │ │THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │ │WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │ │COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │ │ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ }}