# HG changeset patch # User Neal Crook # Date 1445113271 -3600 # Node ID 174eb9eda7b1bbb295015e93b78f9a5788a397af # Parent 460fdd304adffa05ecd74777b124cee9fc9b0f73 New port "mc09" for Multicomp09, an FPGA-based 6809 machine Include new commands/descriptor for mc09 clock and SD controller diff -r 460fdd304adf -r 174eb9eda7b1 defs/mc09.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/defs/mc09.d Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,298 @@ + IFNE MC09.D-1 +MC09.D SET 1 + +******************************************************************** +* mc09.d - NitrOS-9 System Definitions for the Multicomp09 +* +* When the primary boot loader passes control to the "track34" code +* the system memory map looks like this: +* +* $0000----> ================================== +* | | +* | | +* | RAM | +* | | +* | | +* $FFD0---->|==================================| +* | I/O | +* $FFE0---->|==================================| +* | RAM | +* |==================================| +* $FFFF----> +* +* The exception vectors at $FFF2 and onwards are initialised to vector to RAM +* as per coco1, just as krn expects. Specifically: +* +* $FFF2 holds vector to $0100 for SWI3 +* $FFF4 holds vector to $0103 for SWI2 +* $FFF6 holds vector to $010F for FIRQ +* $FFF8 holds vector to $010C for IRQ +* $FFFA holds vector to $0106 for SWI +* $FFFC holds vector to $0109 for NMI +* +* The 16-location I/O space and the interrupt hook-up are described below. +* +* $Id$ +* +* Edt/Rev YYYY/MM/DD Modified by +* Comment +* ------------------------------------------------------------------ +* 0.1 2015/10/17 Neal Crook. Tidy-up for first commit. +* + NAM Multicomp09Defs + IFEQ Level-1 + TTL NitrOS-9 System Definitions for the Multicomp09 + ELSE + IFEQ Level-2 + TTL NitrOS-9 Level 2 System Type Definitions + ELSE + IFEQ Level-3 + TTL NitrOS-9 Level 3 System Type Definitions + ENDC + ENDC + ENDC + + +********************** +* CPU Type Definitions +* +Color SET 1 +Color3 SET 2 + IFEQ Level-1 +CPUType SET Color + ELSE +CPUType SET Color3 + ENDC + + +****************************** +* Clock Speed Type Definitions +* +OneMHz EQU 1 +TwoMHz EQU 2 + IFEQ CPUType-Color +CPUSpeed SET OneMHz + ELSE +CPUSpeed SET TwoMHz + ENDC + + +********************************** +* Power Line Frequency Definitions +* Multicomp09 has no dependency on power line frequency but setting +* it to Hz50 is the simplest way to make TkPerSec 50, which is important +* [NAC HACK 2015Aug31] actually no need to change it - gets applied at +* command line in modules/makefile to generate a 50Hz and 60Hz version. +* +Hz50 EQU 50 Assemble clock for 50 hz power +Hz60 EQU 60 Assemble clock for 60 hz power + IFNDEF PwrLnFrq +PwrLnFrq SET Hz50 Set to Appropriate freq + ENDC + + +********************************** +* Ticks per second +* + IFNDEF TkPerSec + IFEQ PwrLnFrq-Hz50 +TkPerSec SET 50 + ELSE +TkPerSec SET 60 + ENDC + ENDC + + +****************** +* ACIA type set up +* +* [NAC HACK 2015Sep06] is this used anywhere? + ORG 1 +ACIA6850 RMB 1 MC6850 acia. +ACIA6551 RMB 1 SY6551 acia. +ACIA2661 RMB 1 SC2661 acia. +ACIATYPE SET ACIA6551 + + +**************************************** +* Special character Bit position equates +* +SHIFTBIT EQU %00000001 +CNTRLBIT EQU %00000010 +ALTERBIT EQU %00000100 +UPBIT EQU %00001000 +DOWNBIT EQU %00010000 +LEFTBIT EQU %00100000 +RIGHTBIT EQU %01000000 +SPACEBIT EQU %10000000 + + +******************************************************************** +* Multicomp09 Interrupts: +* +* NMI - wired to single-step logic +* FIRQ - (currently) unused +* IRQ - wired to timer interrupt, VDU/KBD virtual ACIA and serial +* ports 1 and 2. + +******************************************************************** +* Multicomp09 I/O space is $FFD0-$FFDF (16 locations). The equates +* below describe the I/O registers. + +******************************************************************** +* VDU/KBD (VIRTUAL ACIA) +VDUSTA EQU $FFD0 +VDUDAT EQU $FFD1 + +* SERIAL PORT 1 +UARTSTA1 EQU $FFD2 +UARTDAT1 EQU $FFD3 + +* SERIAL PORT 2 +UARTSTA2 EQU $FFD4 +UARTDAT2 EQU $FFD5 + +* GPIO device +GPIOADR EQU $FFD6 +GPIODAT EQU $FFD7 + +******************************************************************** +* SDCARD CONTROL REGISTERS +* SEE VHDL HEADER FOR PROG GUIDE +SDDATA EQU $FFD8 +SDCTL EQU $FFD9 +SDLBA0 EQU $FFDA +SDLBA1 EQU $FFDB +SDLBA2 EQU $FFDC + +******************************************************************** +* 50Hz TIMER INTERRUPT +* TIMER (READ/WRITE) +* +* AT RESET, THE TIMER IS DISABLED AND THE INTERRUPT IS DEASSERTED. TIMER READS AS 0. +* BIT[1] IS READ/WRITE, TIMER ENABLE. +* BIT[7] IS READ/WRITE-1-TO-CLEAR, INTERRUPT. +* +* IN AN ISR THE TIMER CAN BE SERVICED BY PERFORMING AN INC ON ITS ADDRESS +* +* READ WRITE COMMENT +* N/A $02 ENABLE TIMER +* $00 $01 TIMER WAS/REMAINS DISABLED. N=0. +* $02 $03 TIMER WAS/REMAINS ENABLED, NO INTERRUPT. N=0. +* $80 $81 TIMER WAS/REMAINS DISABLED, OLD PENDING INTERRUPT CLEARED. N=1. +* $82 $83 TIMER WAS/REMAINS DISABLED, OLD PENDING INTERRUPT CLEARED. N=1. +* +TIMER EQU $FFDD + +******************************************************************** +* MEM_MAPPER2 CONTROL REGISTERS +* MMUADR (WRITE-ONLY) +* 7 - ROMDIS (RESET TO 0) +* 6 - TR +* 5 - MMUEN +* 4 - RESERVED +* 3:0 - MAPSEL +* MMUDAT (WRITE-ONLY) +* 7 - WRPROT +* 6:0 - PHYSICAL BLOCK FOR CURRENT MAPSEL + +MMUADR EQU $FFDE +MMUDAT EQU $FFDF + + + +******************************************************************** +******************************************************************** +* Coco stuff that's needed to allow other files to compile +* [NAC HACK 2015Oct17] need to get rid of this eventually. + +A.AciaP SET $FF68 Aciapak Address +A.ModP SET $FF6C ModPak Address +DPort SET $FF40 Disk controller base address +MPI.Slct SET $FF7F Multi-Pak slot select +MPI.Slot SET $03 Multi-Pak default slot +PIA0Base EQU $FF00 +PIA1Base EQU $FF20 + + +****************** +* VDG Devices +* +A.TermV SET $FFC0 VDG Term +A.V1 SET $FFC1 Possible additional VDG Devices +A.V2 SET $FFC2 +A.V3 SET $FFC3 +A.V4 SET $FFC4 +A.V5 SET $FFC5 +A.V6 SET $FFC6 +A.V7 SET $FFC7 + + + IFEQ Level-1 + +************************************************* +* +* NitrOS-9 Level 1 Section +* +************************************************* + +HW.Page SET $FF Device descriptor hardware page + + ELSE + +************************************************* +* +* NitrOS-9 Level 2 Section +* +************************************************* + +**************************************** +* Dynamic Address Translator Definitions +* +DAT.BlCt EQU 8 D.A.T. blocks/address space +DAT.BlSz EQU (256/DAT.BlCt)*256 D.A.T. block size +DAT.ImSz EQU DAT.BlCt*2 D.A.T. Image size +DAT.Addr EQU -(DAT.BlSz/256) D.A.T. MSB Address bits +DAT.Task EQU $FF91 Task Register address +DAT.TkCt EQU 32 Number of DAT Tasks +DAT.Regs EQU $FFA0 DAT Block Registers base address +DAT.Free EQU $333E Free Block Number +DAT.BlMx EQU $3F Maximum Block number +DAT.BMSz EQU $40 Memory Block Map size +DAT.WrPr EQU 0 no write protect +DAT.WrEn EQU 0 no write enable +SysTask EQU 0 Coco System Task number +IOBlock EQU $3F +ROMBlock EQU $3F +IOAddr EQU $7F +ROMCount EQU 1 number of blocks of ROM (High RAM Block) +RAMCount EQU 1 initial blocks of RAM +MoveBlks EQU DAT.BlCt-ROMCount-2 Block numbers used for copies +BlockTyp EQU 1 chk only first bytes of RAM block +ByteType EQU 2 chk entire block of RAM +Limited EQU 1 chk only upper memory for ROM modules +UnLimitd EQU 2 chk all NotRAM for modules +* NOTE: this check assumes any NotRAM with a module will +* always start with $87CD in first two bytes of block +RAMCheck EQU BlockTyp chk only beg bytes of block +ROMCheck EQU Limited chk only upper few blocks for ROM +LastRAM EQU IOBlock maximum RAM block number + +*************************** +* Color Computer 3 Specific +* +MappedIO EQU true (Actually False but it works better this way) + +******************** +* Hardware addresses +* +GIMERegs EQU $FF00 Base address of GIME registers +IrqEnR EQU $FF92 GIME IRQ enable/status register +BordReg EQU $FF9A Border color register +PalAdr EQU $FFB0 Palette registers + +HW.Page SET $07 Device descriptor hardware page + + ENDC + + ENDC diff -r 460fdd304adf -r 174eb9eda7b1 defs/mc09vtio.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/defs/mc09vtio.d Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,906 @@ + IFNE COCOVTIO.D-1 +COCOVTIO.D SET 1 + + IFEQ Level-1 + +******************************************************************** +* VTIODefs - Video Terminal I/O Definitions for CoCo 1/2 +* +* $Id$ +* +* Edt/Rev YYYY/MM/DD Modified by +* Comment +* ------------------------------------------------------------------ +* 2004/11/29 P.Harvey-Smith. +* Added symbolic defines for bits in V.CoLoad. +* +* 2004/12/02 P.Harvey-Smith. +* Moved over all variables from co51.asm +* +* 2005/04/09 P.Harvey-Smith. +* Decoded rest of the CoHR memory locations. +* +* 2005/04/24 P.Harvey-Smith. +* Added variables for cursor flash, currently only implemented in co51 +* + NAM VTIODefs + TTL Video Terminal I/O Definitions for CoCo 1/2 + +******************** +* VTIO Static Memory +* + ORG V.SCF +V.ScrnA RMB 2 (2) screen start address in system memory +V.ScrnE RMB 2 (2) address of end of screen +V.CrsrA RMB 1 (2) cursor address +V.CrsAL RMB 1 cursor address low +V.CChar RMB 1 value of character under cursor +V.Mode RMB 1 mode: 0=256x192 x2, 1=128x192 x4 +V.NGChr RMB 1 number of additional characters to get +V.RTAdd RMB 2 (2) return address after getting characters +V.NChar RMB 1 character to process +V.NChr2 RMB 1 and the next one + RMB 1 +V.Chr1 RMB 1 same as under cursor character +V.CColr RMB 1 cursor color +V.Col RMB 1 number of columns for this screen +V.Row RMB 1 number of rows +V.Alpha RMB 1 0 when in alpha mode +V.PIA1 RMB 1 PIA1Base value +V.Rdy RMB 1 device ready (see SS.DStat 0=not ready) +V.CFlg1 RMB 1 VDG display code values +V.SBAdd RMB 2 (2) address of block screen is in +V.GBuff RMB 2 allocation for graphics buffers (block#) +V.AGBuf RMB 4 (2) additional graphics buffer +V.FFMem RMB 2 Flood fill alloc'ed mem +V.FFSPt RMB 2 Flood fill current stack pointer +V.FFSTp RMB 1 Flood fill stack top +V.FF6 RMB 1 flood fill flag +V.FFFlag RMB 1 ?? +V.MTabl RMB 2 (2) address of mask table for pixels in byte +V.PixBt RMB 1 bit mask for modes (0=$07, 1=$03 )#pixels/byte +V.GCrsX RMB 1 graphics cursor X value +V.GCrsY RMB 1 graphics cursor Y +V.Msk1 RMB 1 mask byte 1 +V.Msk2 RMB 1 mask byte 2 (00,55,AA,FF) +V.MCol RMB 1 color? (C003,8001) +V.4A RMB 1 +V.PMask RMB 1 pixel mask for colors (i.e. $55, $CC etc) +V.4C RMB 1 +V.4D RMB 1 +V.4E RMB 1 +V.4F RMB 1 +V.Caps RMB 1 caps lock info: $00=lower $FF=upper +V.ClkCnt RMB 1 clock count ?? +V.WrChr RMB 1 character to write +V.CurCo RMB 1 current CO-module in use +* start of CoWP-specific static memory +V.Co80X RMB 1 V.54 +V.Co80Y RMB 1 V.55 +V.ColPtr RMB 1 V.56 +V.RowPtr RMB 1 V.57 +V.C80X RMB 1 CoWP X position +V.C80Y RMB 1 CoWP Y position +V.Invers RMB 1 +* end of CoWP-specific static memory +V.DspVct RMB 2 vector to display screen +V.CnvVct RMB 2 vector to X/Y to address conversion +V.LKeyCd RMB 1 last key code +V.2Key1 RMB 1 2nd Key 1 +V.2Key2 RMB 1 2nd Key 2 +V.2Key3 RMB 1 2nd Key 3 +V.Key1 RMB 1 Key 1 +V.Key2 RMB 1 Key 2 +V.Key3 RMB 1 Key 3 +V.ShftDn RMB 1 SHIFT/CTRL state +V.CtrlDn RMB 1 CTRL key down +V.KeyFlg RMB 1 key flag +V.AltDwn RMB 1 ALT key down +V.KySns RMB 1 key sense flags +V.KySame RMB 1 key same as last flag +V.KySnsF RMB 1 key sense flag +V.Spcl RMB 1 +V.KTblLC RMB 1 key table entry # +V.6F RMB 1 ??? +V.COLoad RMB 1 CO-module loaded flags +V.CFlag RMB 1 true lowercase flag $10=true, $00=false +V.GrfDrvE RMB 2 GrfDrv entry point +V.CoVDGE RMB 2 CoVDG entry point +V.CoWPE RMB 2 CoWP entry point +V.CoHRE RMB 2 CoHR entry point + +V.Flash RMB 2 Cursor flash routine address. +v.FlashCount RMB 1 Cursor flash count +V.NoFlash RMB 1 When this is non-zero do not flash cursor + +* CoHR vars + +V.51ScrnA RMB 2 * Screen address. +V.51XPos RMB 1 * X co-ordinate +V.51YPos RMB 1 * Y co-ordinate +V.51EscSeq RMB 1 * In escape sequence +V.51ReverseFlag RMB 1 * Reverse video flag +V.51UnderlineFlag RMB 1 * Underline flag +V.51CtrlDispatch RMB 2 * Ctrl char dispatch address, currently processing +V.51BytePixOffset RMB 1 * byte offset in screen line, of character X position +V.51OldCursorPosX RMB 1 * Position of old cursor before update +V.51OldCursorPosY RMB 1 +V.51CursorChanged RMB 1 * Has cursor position changed ? 1=yes,0=no +V.51CursorOn RMB 1 * Is cursor on ? 1=yes 0=no +V.51XORFlag RMB 1 * and data to screen (0) or Xor (1) +V.51ScreenMask1 RMB 1 * screen masks for drawing characters on screen +V.51ScreenMask2 RMB 1 +* End of CoHR vars +**** Note these have to come at the end of the defs, or the keyboard **** +**** code can clobber variables defined after these ! **** +V.IBufH RMB 1 input buffer head +V.IBufT RMB 1 input buffer tail +V.InBuf RMB 1 input buffer ptr +V.51End RMB 1 + RMB 250-. +V.Last EQU . + + +* Unknown for now +*VD.FFMem rmb 2 (2) bottom of stack for flood fill +*VD.FFSPt rmb 2 (2) flood fill stack pointer +*VD.FFSTp rmb 2 (2) flood fill stack top pointer +*VD.FF6 rmb 1 flood fill flag +*VD.MCol2 rmb 1 color +*VD.FF1 rmb 1 data for flood fill +*VD.FF2 rmb 1 data for flood fill +*VD.FFMsk rmb 1 flood fill mask +*VD.FFFlg rmb 1 flood fill flag +*VD.Palet rmb 16 (16) current palette values +*VD.PlFlg rmb 1 initialized to $08 by L00DB, and then unused! + +* +* Defs for V.COLoad flags. +* + +ModCoVDG EQU %00000010 CoVDG, Built-in VDG 32x16. +ModCoWP EQU %00000100 CoWP, WordPak, 80x25 +ModCoHR EQU %00001000 CoHR, PMODE 4 51x25 text + +* +* Defs for cursor flash counter +* + +CFlash50hz EQU 25 * 50Hz flash counter +CFlash60Hz EQU 30 * 60Hz flash counter + + ELSE + +******************************************************************** +* VTIODefs - Video Terminal I/O Definitions for CoCo 3 +* +* $Id$ +* +* Edt/Rev YYYY/MM/DD Modified by +* Comment +* ------------------------------------------------------------------ +* 2004/07/18 Boisy G. Pitre +* Started from systype + + NAM VTIODefs + TTL Video Terminal I/O Definitions for CoCo 3 + +**************** +* Window Devices +* + ORG $FF9F +A.W RMB 1 $FF9F Generic Window Descriptor +A.TermW RMB 1 $FFA0 Windowing Term +A.W1 RMB 1 $FFA1 +A.W2 RMB 1 $FFA2 +A.W3 RMB 1 $FFA3 +A.W4 RMB 1 $FFA4 +A.W5 RMB 1 $FFA5 +A.W6 RMB 1 $FFA6 +A.W7 RMB 1 $FFA7 +A.W8 RMB 1 $FFA8 +A.W9 RMB 1 $FFA9 +A.W10 RMB 1 $FFAA +A.W11 RMB 1 $FFAB +A.W12 RMB 1 $FFAC +A.W13 RMB 1 $FFAD +A.W14 RMB 1 $FFAE +A.W15 RMB 1 $FFAF + +********************************** +* Pointer Device Packet Definition +* + ORG 0 +Pt.Valid RMB 1 Is returned info valid (0=no/1=yes) +Pt.Actv RMB 1 Active Side 0=off/1=Right/2=left +Pt.ToTm RMB 1 Time out Initial value + RMB 2 reserved +Pt.TTTo RMB 1 Time Till Timeout +Pt.TSSt RMB 2 Time Since Start Counter +Pt.CBSA RMB 1 Current Button State Button A +Pt.CBSB RMB 1 Current Button State Button B +Pt.CCtA RMB 1 Click Count Button A +Pt.CCtB RMB 1 Click Count Button B +Pt.TTSA RMB 1 Time This State Counter Button A +Pt.TTSB RMB 1 Time This State Counter Button B +Pt.TLSA RMB 1 Time Last State Counter Button A +Pt.TLSB RMB 1 Time Last State Counter Button B + RMB 2 Reserved +Pt.BDX RMB 2 Button down X value EXPERIMENTAL +Pt.BDY RMB 2 Button down Y value +Pt.Stat RMB 1 Window Pointer type location +Pt.Res RMB 1 Resolution (0..640 by: 0=ten/1=one) +Pt.AcX RMB 2 Actual X Value +Pt.AcY RMB 2 Actual Y Value +Pt.WRX RMB 2 Window Relative X +Pt.WRY RMB 2 Window Relative Y +Pt.Siz EQU . Packet Size 32 bytes + +************************** +* window regions for mouse +* +WR.Cntnt EQU 0 content region +WR.Cntrl EQU 1 control region +WR.OfWin EQU 2 off window + +************************************* +* Standard system get/put buffer defs +* +* +* system group numbers +* + ORG 200 +Grp.Fnt RMB 1 font group +Grp.Clip RMB 1 clipboard group +Grp.Ptr RMB 1 pointer group +Grp.Pat2 RMB 1 pattern group 2 color +Grp.Pat4 RMB 1 pattern group 4 color +Grp.Pat6 RMB 1 pattern group 16 color +* +* font buffer numbers +* + ORG 1 +Fnt.S8x8 RMB 1 standard 8x8 font +Fnt.S6x8 RMB 1 standard 6x8 font +Fnt.G8x8 RMB 1 standard graphics 8x8 font +* +* pattern buffer numbers +* + ORG 1 +Pat.Dot RMB 1 +Pat.Vrt RMB 1 +Pat.Hrz RMB 1 +Pat.XHtc RMB 1 +Pat.LSnt RMB 1 +Pat.RSnt RMB 1 +Pat.SDot RMB 1 +Pat.BDot RMB 1 +* +* pointer buffer numbers +* + ORG 1 +Ptr.Arr RMB 1 Arrow pointer +Ptr.Pen RMB 1 Pencil pointer +Ptr.LCH RMB 1 Large cross hair pointer +Ptr.Slp RMB 1 Wait timer pointer +Ptr.Ill RMB 1 Illegal action pointer +Ptr.Txt RMB 1 Text pointer +Ptr.SCH RMB 1 Small cross hair pointer + +********************** +* KeyDrv Entry Points + ORG 0 +K$Init RMB 3 joystick initialization +K$Term RMB 3 joystick termination +K$FnKey RMB 3 get function key states +K$RdKey RMB 3 get key states + +********************** +* JoyDrv Entry Points + ORG 0 +J$Init RMB 3 joystick initialization +J$Term RMB 3 joystick termination +J$MsBtn RMB 3 get mouse button states +J$MsXY RMB 3 get mouse X/Y coordinates +J$JyBtn RMB 3 get joystick button states +J$JyXY RMB 3 get joystick X/Y coordinates + +********************** +* SndDrv Entry Points + ORG 0 +S$Init RMB 3 joystick initialization +S$GetStt RMB 3 joystick termination +S$SetStt RMB 3 joystick termination +S$Term RMB 3 get joystick X/Y coordinates + +******************************** +* Window/Menu Bar Data Structure +* +* To be used in SS.WnSet SETSTAT to set up a Framed Window +* for use in the high level windowing package. +* +NUMMENS EQU 10 maximum number of menus on menu bar +NUMITMS EQU 20 maximum number of items in a menu +MXTTLEN EQU 15 max chars for menu and item names +WINSYNC EQU $C0C0 synch bytes for window validation +* +* Menu Item Descriptor : (MN.ITEMS) +* one required for each item within the menu +* + ORG 0 +MI.TTL RMB MXTTLEN item name +MI.ENBL RMB 1 enable flag +MI.RES RMB 5 reserved bytes +MI.SIZ EQU . size of menu item descriptor +* +* Menu Descriptor : +* one for each menu on the manu bar +* each is pointed to by MB.MPTR below +* + ORG 0 +MN.TTL RMB MXTTLEN menu title +MN.ID RMB 1 menu id number (1-255) +MN.XSIZ RMB 1 horiz. size of desired pull down +MN.NITS RMB 1 number of items in menu +MN.ENBL RMB 1 enable flag +MN.RES RMB 2 reserved bytes +MN.ITEMS RMB 2 pointer to array of menu items +MN.SIZ EQU . size of menu descriptor +* +* Window Descriptor: +* one required for each application in a framed window +* + ORG 0 +WN.TTL RMB 20 title of window for title bar +WN.NMNS RMB 1 number of menus in menu bar +WN.XMIN RMB 1 minimal horiz. size for application to run +WN.YMIN RMB 1 minimal vert. size for application to run +WN.SYNC RMB 2 synch bytes ($C0C0) +WN.RES RMB 7 reserved bytes +WN.BAR RMB 2 pointer to arry of menu descriptors +WN.SIZ EQU . size of window/menu bar descriptor + +************************* +* Window Type Definitions +* +* To be used in setting up the border of the window in +* the SS.WnSel SETSTAT +* + ORG 0 +WT.NBox RMB 1 No Box +WT.FWin RMB 1 Framed Window +WT.FSWin RMB 1 Framed Window w/Scroll Bars +WT.SBox RMB 1 Shadowed Box +WT.DBox RMB 1 Double Box +WT.PBox RMB 1 Plain Box + +************************************* +* Pre-Defined Menu IDs for the system +* + ORG 1 +MId.Mov RMB 1 move box +MId.Cls RMB 1 close box +MId.Grw RMB 1 grow box +MId.SUp RMB 1 scroll up +MId.SDn RMB 1 scroll down +MId.SRt RMB 1 scroll right +MId.SLt RMB 1 scroll left +MId.Chr RMB 1 character was depressed + ORG 20 +MId.Tdy RMB 1 Tandy menu +MId.Fil RMB 1 Files Menu +MId.Edt RMB 1 Edit Menu +MId.Sty RMB 1 Styles menu +MId.Fnt RMB 1 Font menu + + +****************************************************************************** +****************************************************************************** +** ** +** NitrOS-9 Windowing system Global data definitions ** +** ** +****************************************************************************** +****************************************************************************** +** ** +** System memory block 0 layout: ** +** ** +** $0000-$0001 : FHL/Isted WD 1002-05 - interface base address ** +** $0002 : FHL/Isted WD 1002-05 - boot device physical drive # ** +** $0008 : Bruce Isted Serial mouse - button counter & rx count ** +** $0009-$000B : Bruce Isted Serial mouse - RX buffer ** +** $000C-$000D : Bruce Isted Serial mouse - Current X position ** +** $000E-$000F : Bruce Isted Serial mouse - Current Y position ** +** $0010-$001F : unused (User definable) ** +** $0020-$00FF : system direct page & some IRQ vectors ** +** $0100-$011F : Task usage table ** +** $0120-$01FF : Virtual DAT tasks (pointed to by 0 = YES) $1E +V.DevPar RMB 2 high bit=window device $1F +V.ULCase RMB 1 special key flags (Capslck & keyboard mouse) $21 +V.KySnsFlg RMB 1 flag for key sense setstat $22 +V.ScrChg RMB 1 screen change flag $23 +V.SSigID RMB 1 data ready process ID $24 +V.SSigSg RMB 1 data ready signal code $25 +V.MSigID RMB 1 mouse signal process ID $26 +V.MSigSg RMB 1 mouse signal signal code $27 +V.MSmpl RMB 1 mouse sample rate $28 +V.MTime RMB 1 mouse timeout value $29 + RMB 1 unused $2A +V.MAutoF RMB 1 auto follow mouse flag $2B +V.ParmCnt RMB 1 parameter count $2C +V.ParmVct RMB 2 parameter vector $2D +V.PrmStrt RMB 2 pointer to params start $2F +V.NxtPrm RMB 2 pointer to next param storage $31 +V.EndPtr RMB 1 last character read offset $33 +V.InpPtr RMB 1 next character read offset $34 +V.WinNum RMB 1 window table entry # $35 +V.DWNum RMB 1 dwnum from descriptor $36 +V.CallCde RMB 1 internal comod call code # $37 +CC3Parm RMB 128-. global parameter area +ReadBuf RMB 256-. read input buffer (keyboard) +CC3DSiz EQU . + +***************************************************************************** +* GrfInt/WindInt global memory area +* This area sits in system block 0 from $1000 to $10ff +WGlobal EQU $1000 useful value (points to address starting below) + ORG 0 +G.CurTik RMB 1 Constant - # Clock ticks/cursor updates (2) +G.CntTik RMB 1 Current tick count for cursor updates +G.GfBusy RMB 1 Grfdrv is busy flag (1=busy) +G.OrgAlt RMB 2 Place to store D.AltIRQ before altering +*g0003 rmb 2 NEW: UNUSED +g0005 RMB 2 Temp save in Windint RG +G.GrfStk RMB 2 grfdrv stack pointer ($07) +G.MonTyp RMB 1 monitor type +g000A EQU . Old label for compatibility +G.CrDvFl RMB 1 Are we current device flag (only set when all +* Parms have been moved to Dev Mem) +* 0=We are not on our device +* 1=We are the current device +* (Used by comod (GRF/WIND/VDGInt) to determine +* whether or not to update GIME regs themselves +* If not current device, they don't.) +G.WinType RMB 1 current device's V.TYPE +G.CurDvM RMB 2 current device memory pointer for co-module use +G.WIBusy RMB 1 WindInt is busy flag (1=busy) +G.AlPckt RMB 6 F$Alarm time packet +G.AlPID RMB 1 F$Alarm proc ID ($15) +G.AlSig RMB 1 F$Alarm signal code ($16) +G.BelVec RMB 2 BELL routine vector +G.DefPal RMB 2 pointer to default palette data in global mem +G.TnCnt RMB 1 SS.Tone duration counter +G.BelTnF RMB 1 BELL tone flag +g001D RMB 3 +G.CurDev RMB 2 current device's static memory pointer ($20) +G.PrWMPt RMB 2 previous window static mem pointer $(22) +G.BCFFlg RMB 1 bit coded co-module found flags ($24) +* 00000010 : VDGInt found +* 10000000 : GrfDrv found +g0025 RMB 1 +G.KTblLC RMB 1 Key table entry# last checked (1-3) +* IFEQ TC9-true +*CurLght rmb 1 current keyboard light settings +* ELSE +G.LastCh RMB 1 last keyboard character (ASCII value) +* ENDC +G.LKeyCd RMB 1 last keyboard code +G.KyRept RMB 1 key repeat counter +* A secondary 3 key table (same format as g002D below) +G.2Key1 RMB 1 $2A +G.2Key2 RMB 1 $2B +G.2Key3 RMB 1 +* Up to 3 keys can be registerd at once, and they are stored here. If more +* than 3 are hit, the last key is overwritten with the very last key down that +* was checked. Format for all three is the same as the PIA column/row byte @ +* KeyFlag below. +G.Key1 RMB 1 Key 1 being held down (Row/Column #) +G.Key2 RMB 1 Key 2 being held down (Row/Column #) +G.Key3 RMB 1 Key 3 being held down (Row/Column #) +G.ShftDn RMB 1 SHIFT key down flag (COM'd) ($30) +G.CntlDn RMB 1 CTRL key down flag (0=NO) +G.KeyFlg RMB 1 Keyboard PIA bit #'s for columns/rows +* %00000111-Column # (Output, 0-7) +* %00111000-Row # (Input, 0-6) +G.AltDwn RMB 1 ALT key down flag (0=NO) +G.KySns RMB 1 key sense byte +G.KySame RMB 1 same key flag +G.CapLok RMB 1 CapsLock/SysRq key down flag + RMB 1 +g0038 RMB 1 grfdrv initialized flag + RMB 2 +G.MSmpRt RMB 1 Current mouse sample # (# ticks till next read) +G.Mouse RMB Pt.Siz mouse packet ($3C) +g005C RMB 2 Temp for relative mouse X coord calculation +g005E RMB 2 Temp for relative mouse Y coord calculation +G.MSmpRV RMB 1 Mouse sample reset value (# ticks till next read) +G.KyDly RMB 1 initial key repeat delay constant ($61) +G.KySpd RMB 1 secondary key repeat delay constant +* IFEQ TC9-true +*KeyParm rmb 1 keyboard command parameter byte +* ELSE +G.KyMse RMB 1 keyboard mouse flag ($63) +* ENDC +G.Clear RMB 1 "one-shot" CapsLock/SysRq key flag ($64) +G.KyButt RMB 1 keyboard F1 and F2 "fire" button info ($65) +G.AutoMs RMB 1 Auto-follow mouse flag for current device (0=NO) +G.MseMv RMB 1 mouse moved flag ($67) +G.CoTble RMB 6 co-module table ($68) +G.GrfEnt RMB 2 GRFDRV Entry address ($6E) +g0070 RMB 1 # bytes to move in 1 block (1-72) +G.WUseTb RMB 4 windows in use bit table (0=unused, 32 windows) ($71) +G.GfxTbl RMB 2 Pointer to GFX tables ($75) +G.WrkWTb RMB $40 Work window table. WindInt only ($77) +g00B7 RMB 2 Current Device static mem ptr for WindInt +g00B9 RMB 2 Current window table ptr for WindInt +g00BB RMB 2 Pointer to work window table (g0077+$10) +g00BD RMB 1 Current screen type for work window table +g00BE RMB 1 Topmost overlay window # when check for title bars +g00BF RMB 1 Flag for keypress while processing menu select +g00C0 RMB 2 Ptr to current path descriptor +G.WindBk RMB 2 shift-clear routine vector +G.MsInit RMB 2 set mouse routine vector +G.MsSig RMB 1 mouse signal flag +G.DefPls RMB 16 Default palettes (2 repeats of 8 is default) ($C7) +g00D7 RMB 9 +G.KeyEnt RMB 2 entry to keydrv subroutine module ($E0) +G.KeyMem RMB 8 static memory for keydrv subroutine module +G.JoyEnt RMB 2 entry to joydrv subroutine module ($EA) +G.JoyMem RMB 8 static memory for joydrv subroutine module +G.SndEnt RMB 2 entry to snddrv subroutine module ($F4) +G.SndMem RMB 8 static memory for snddrv subroutine module + +***************************************************************************** +* GrfDrv global memory data definitions +* This area sits in system block 0 from $1100 to $119E +GrfMem EQU $1100 useful label used to point to mem starting below + ORG 0 +gr0000 RMB 1 Pixel mask for 1st byte of GP line +gr0001 RMB 1 Pixel mask for last byte of a GP line +gr0002 RMB 2 Ptr to table of bit masks for colors +gr0004 RMB 1 # of bytes wide GP buffer is (including partials) +gr0005 RMB 1 # pixels per byte in GP Buffer +gr0006 RMB 1 # of pixels used in 1st byte of GP buffer line +gr0007 RMB 1 # of pixels used in last byte of GP buffer line +gr0008 RMB 1 Bit mask that is common to both screen & GP buffer +gr0009 RMB 1 # bytes for width of overlay window +gr000A RMB 1 # bytes to offset to get to next line after +* overlay width has been copied +gr000B RMB 1 +gr000C RMB 2 Cursor address for proportional spacing? +gr000E RMB 1 +gr000F RMB 1 Left-based bit mask for proportional spacing? +gr0010 RMB 2 Vector for text to gfx screen (either prop. or normal) +gr0012 RMB 6 +gr0018 RMB 2 Working Center X coord for Circle/Ellipse +gr001A RMB 2 Working Center Y coord for Circle/Ellipse +gr001C RMB 2 Some variable for Circle/Ellipse (initially 0) +gr001E RMB 2 Working Y radius value for Circle/Ellipse +gr0020 RMB 2 Arc 'clip line' X01 +gr0022 RMB 2 Arc 'clip line' Y01 +gr0024 RMB 2 Arc 'clip line' X02 +gr0026 RMB 2 Arc 'clip line' Y02 +gr0028 RMB 1 full-byte background color to FFILL on mask +gr0029 RMB 1 pixels per byte: set up by FFILL +gr002A RMB 1 Flag for FFill: 1=no error, 0=Stack overflow error +gr002B RMB 1 current Y-direction to travel in FFILL +gr002C RMB 2 +gr002E RMB 2 current window table entry +gr0030 RMB 2 current screen table ptr +gr0032 RMB 1 Last block # we used for buffers +gr0033 RMB 2 Last offset we used for buffers +gr0035 RMB 1 group +gr0036 RMB 2 offset +gr0038 RMB 1 group returned (new) +gr0039 RMB 1 0=Text cursor inverted off, >0 is inverted on +gr003A RMB 1 0=Graphics cursor XOR'd off,>0 is XOR'd on scrn +gr003B RMB 2 end of vars ptr? +gr003D RMB 2 Last X coordinate Graphics cursor was ON at +gr003F RMB 2 Last Y coordinate Graphics cursor was ON at +gr0041 RMB 2 Screen address for start of current gfx cursor +gr0043 RMB 1 Pixel mask for start of gfx cursor +gr0044 RMB 1 Block # Graphics cursor is in +gr0045 RMB 2 Offset in block Graphics cursor is in +gr0047 RMB 2 'Working' X coordinate +gr0049 RMB 2 'Working' Y coordinate +gr004B RMB 2 current X +gr004D RMB 2 current Y +gr004F RMB 2 X Size (in bytes) +gr0051 RMB 2 Y Size (in bytes) +gr0053 RMB 2 Horizontal radius (circle/ellipse/arc) +gr0055 RMB 2 Vertical radius (circle/ellipse/arc) +gr0057 RMB 1 group +gr0058 RMB 1 buffer # +gr0059 RMB 1 save switch for overlay +gr005A RMB 1 PRN +gr005B RMB 2 X coordinate of Graphics cursor +gr005D RMB 2 Y coordinate of Graphics cursor +gr005F RMB 1 ATD: new video mode for 24/25/28-line windows +Gr.STYMk RMB 1 STY marker +gr0061 RMB 1 foreground RGB data +gr0062 RMB 1 background RGB data +gr0063 RMB 1 bytes/row (on current screen...not window) +gr0064 RMB 2 PSet vector +gr0066 RMB 2 pset offset +gr0068 RMB 2 LSet vector +gr006A RMB 2 max X co-ordinate +gr006C RMB 2 max Y co-ordinate +gr006E RMB 2 X pixel count +gr0070 RMB 2 Y pixel count +gr0072 RMB 2 Screen address of pixel we are doing +gr0074 RMB 1 Pixel mask for pixel we are doing +gr0075 RMB 2 ??? Pixel mask for last byte of GP buffer? +gr0077 RMB 2 Vector for right direction FFill +gr0079 RMB 1 bit mask for 1st pixel in byte for right dir. FFill +gr007A RMB 2 Vector for left direction FFill +gr007C RMB 1 bit mask for last pixel in byte for left dir. FFill +gr007D RMB 1 buffer block # +gr007E RMB 2 buffer offset # +gr0080 RMB 2 Buffer length (in bytes) +gr0082 RMB 3 3 byte extended screen address +gr0085 RMB 2 temp +gr0087 RMB 16 grfdrv (sysmap 1) DAT image +gr0097 RMB 1 temp +gr0098 RMB 1 temp +* In ARC, 97-98 is the width of the clip line in pixels (after scaling) +gr0099 RMB 2 temp +* In ARC, 99-9A is the height of the clip line in pixels (after scaling) +gr009B RMB 1 counter temp +gr009C RMB 1 +gr009D RMB 2 offset to buffer in block +gr009F RMB 1 +gr00A0 RMB 1 # lines left to do of GP buffer onto screen +gr00A1 RMB 2 vector routine for (changes lots) +* In ARC A1-A2 is the vector to the proper clipping routine +gr00A3 RMB 2 Vector for shifting GP buffers +gr00A5 RMB 2 Vector for shifting GP buffers (can dupe A1) +gr00A7 RMB 2 +gr00A9 RMB 2 NEW: Window tbl ptr for last window GRFDRV used +grBigFnt RMB 2 Flag for 224 char font/gfx mode on (0=No) V2.00a +gr00AD RMB 2 FFill:orig. start X coord|Circ/Ell saved start X +gr00AF RMB 2 FFill:orig. start Y coord|Circ/Ell saved end X +gr00B1 RMB 1 Flag in FFill: 1=1st time through, 0=not 1st time +gr00B2 RMB 1 Filled (circle,ellipse) flag 0=Not filled +*gr00B3 rmb 256-. ??? UNUSED +gr00B3 RMB 1 temp veriable grfdrv +gr00B4 RMB 1 temp veriable grfdrv +gr00B5 RMB 1 regW for grfdrv +gr00B6 RMB 1 +gr00B7 RMB 2 +gr00B9 RMB 2 previously used in grfdrv at $B2 but not for Filled Flag +gr00BB RMB 2 previously used in grfdrv at $B4 +gr00BD RMB 2 previously used in grfdrv at $B6 +gr00BF RMB 256-. +* GPLoad buffer - $1200 in system block 0 +GPBuf RMB 72 common move buffer for gpload/get/put +gb0000 EQU 72 Size of get/put buffer ($48) + +***************************************************************************** +* Window table entry structure +* These tables sit in system block 0 and there is 1 for every window init'd +* including any overlay windows. +MaxWind EQU 32 maximum allowable window tables +WinBase EQU $1290 base address to start of window tables + ORG -$10 +Wt.STbl RMB 2 Screen table pointer ($FFFF=Not used) -$10 +Wt.BLnk RMB 1 overlay window parent entry # ($FF=base) -$0E +Wt.LStrt RMB 2 screen logical start address -$0D +Wt.CPX RMB 1 current X coord. start -$0B +Wt.CPY RMB 1 current Y coord. start -$0A +Wt.SZX RMB 1 current X size (CWArea) -$09 +Wt.SZY RMB 1 current Y size (CWArea) -$08 +Wt.SXFct RMB 1 X scaling factor -$07 +Wt.SYFct RMB 1 Y scaling factor (0=no scaling) -$06 +Wt.Cur RMB 2 cursor physical address on screen -$05 +Wt.FMsk RMB 1 font bit mask (based from left) -$03 +Wt.CurX RMB 2 X coord of cursor -$02 +Wt.CurY RMB 2 Y Coord of cursor $00 +Wt.XBCnt RMB 1 width of window (in bytes) $02 +Wt.CWTmp RMB 1 bytes wide each text chr (1,2,4) $03 +Wt.BRow RMB 2 bytes/text row (8x width in gfx) $04 +Wt.Fore RMB 1 foreground palette # $06 +Wt.Back RMB 1 background palette # $07 +Wt.Attr RMB 1 default attributes (FUTTTBBB) $08 +Wt.BSW RMB 1 character BSW switches $09 +Wt.LSet RMB 1 LSet type $0A +Wt.FBlk RMB 1 Font memory block # $0B +Wt.FOff RMB 2 Font offset in block $0C +Wt.PBlk RMB 1 PSet memory block # $0E +Wt.POff RMB 2 PSet offset in block $0F +Wt.OBlk RMB 1 Overlay memory block # $11 +Wt.OOff RMB 2 Overlay offset in block $12 +Wt.LVec RMB 2 LSet vector $14 +Wt.PVec RMB 2 PSet vector $16 +Wt.GBlk RMB 1 GCursor memory block # $18 +Wt.GOff RMB 2 GCursor offset in block $19 +Wt.MaxX RMB 2 Maximum X cord. (0-79,0-639) $1B +Wt.MaxY RMB 2 Maximum Y cord. (0-24,0-191) $1D +Wt.BLen RMB 2 bytes left in GPLoad block below $1F +Wt.NBlk RMB 1 memory block # for next GPLoad $21 +Wt.NOff RMB 2 Offset in block for next GPLoad $22 +Wt.LStDf RMB 2 screen logical start default $24 +* NOTE: The following default settings are what the window was initialized +* with, and thus are the MAXIMUM start/size the window can handle +* until it is restarted (DWEnd & DWSet) +* They also appear to be used in WindInt to determine the coords & +* sizes for control+content regions +Wt.DfCPX RMB 1 default X cord. start $26 +Wt.DfCPY RMB 1 default Y cord. start $27 +Wt.DfSZX RMB 1 default X size $28 +Wt.DfSZY RMB 1 default Y size $29 +Wt.Res RMB 6 unused $2A-$2F +Wt.Siz EQU .+$10 + +***************************************************************************** +* Screen table entrys +* These tables sit in system block 0 base=$1A80 + +STblMax EQU 16 Maximum number of screen tables +STblBse EQU $1A80 base address of screen tables + ORG 0 +St.Sty RMB 1 Screen type $00 +St.SBlk RMB 1 Ram block start # $01 +St.LStrt RMB 2 Screen logical start (for GIME) $02 +St.BRow RMB 1 Bytes per row $04 +St.Brdr RMB 1 Border palette register # $05 +St.Fore RMB 1 Foreground palette register # $06 +St.Back RMB 1 Background palette register # $07 +St.ScSiz RMB 1 screen size: 24..28 lines $08 +St.Res RMB 7 UNUSED??? $09 +* NOTE: SHOULD USE ONE OF THESE UNUSED BYTES TO KEEP THE # OF DEVICE WINDOW +* TABLES THAT ARE USING THIS SCREEN TABLE. DWSET & DWEND WOULD KEEP TRACK OF +* THESE, AND THE WINDINT TITLE BAR ROUTINE WOULD CHECK IT. IF IT IS ONLY 1, +* IT WON'T BOTHER CHANGING THE TITLE BAR WHEN SELECTING WINDOWS +St.Pals RMB 16 Palette register contents $10 +St.Siz EQU . + +***************************************************************************** +* Graphics buffer tables +* They contain a 20 byte header (shown below), followed by the raw pixel +* data. + ORG 0 +Grf.Bck RMB 1 back block link # $00 +Grf.Off RMB 2 back block header offset $01 +Grf.Grp RMB 1 group # $03 +Grf.Buff RMB 1 buffer # $04 +Grf.BSz RMB 2 buffer size (not including header) $05 +Grf.XSz RMB 2 X size (in pixels) $07 +Grf.YSz RMB 2 Y size (in pixels/bytes) $09 +Grf.XBSz RMB 1 X size in bytes $0B +Grf.LfPx RMB 1 # pixels used in first byte of line $0C +Grf.RtPx RMB 1 # pixels used in last byte of line $0D +Grf.STY RMB 1 Screen type buffer intended for $0E +Grf.NBlk RMB 1 number blocks used $0F +Grf.Pal RMB 16 Copy of palette registers? $10 +Grf.Siz EQU . $20 + +***************************************************************************** +* GFX tables (1 for each window, 18 ($12) bytes each) pointed to by +* $1075-$0176 +* GRFINT only uses gt0001-gt0004, the rest is exclusive to WINDINT + ORG 0 +Gt.WTyp RMB 1 WindInt window type (Framed, Scroll Bar, etc.) $00 +Gt.GXCur RMB 2 X coord of graphics cursor $01 +Gt.GYCur RMB 2 Y coord of graphics cursor $03 +Gt.DPtr RMB 2 Ptr to WindInt window descriptor $05 +Gt.FClr RMB 1 Foreground color $07 +Gt.BClr RMB 1 Background color $08 +Gt.FMsk RMB 1 Foreground mask $09 +Gt.BMsk RMB 1 Background mask $0A +Gt.GBlk RMB 1 Block # of graphics cursor $0B +Gt.GOff RMB 2 Offset into block of graphics cursor $0C +Gt.Proc RMB 1 Process # of window creator $0E +Gt.PBlk RMB 1 Process descriptor block # of creator $0F +Gt.Res RMB 2 ??? RESERVED ??? $10 +GTabSz EQU . + +***************************************************************************** +* This table is located in the graphics table memory and is offset from +* graphics table pointer stored at $1075-$1076. This is used exclusively by +* WindInt. +* NOTE: USING UNUSED BYTES IN CC3 GLOBAL MEM, SET UP SEPARATE PTRS FOR EACH +* OF THE BELOW SO WE CAN SPEED UP ACCESS BY NOT HAVING TO DO A LOAD/LEAx +* COMBINATION EVERY TIME + ORG $0240 + RMB WN.SIZ copy of last accessed window descriptor + RMB MN.SIZ copy of last accessed menu descriptor + RMB MI.SIZ copy of last accessed item descriptor + RMB 65 menu handling table (16 entrys of 4 bytes) + +***************************************************************************** +* WindInt menu handling table entry definition + ORG 0 +MnuXNum RMB 1 menu # +MnuXStrt RMB 1 X start text co-ordinate +MnuXEnd RMB 1 X end text co-ordinate + RMB 1 unused? +MnuHSiz EQU . + +***************************************************************************** +* Character binary switches +TChr EQU %10000000 transparent characters +Under EQU %01000000 underline characters +Bold EQU %00100000 bold characters +Prop EQU %00010000 proportional spacing of characters +Scale EQU %00001000 automatic window scaling +Invers EQU %00000100 inverse characters +NoCurs EQU %00000010 no cursor display +Protect EQU %00000001 device window protection + +***************************************************************************** +* Screen types (high bit set=hardware text, else graphics) in GRFDRV +Current EQU $ff Current screen +* equ 1 640x200x2 +* equ 2 320x200x4 +* equ 3 640x200x4 +* equ 4 320x200x16 +* equ $85 80 column text +* equ $86 40 column text + +************************************* +* Window default palette color codes +* + ORG 0 +White. RMB 1 +Blue. RMB 1 +Black. RMB 1 +Green. RMB 1 +Red. RMB 1 +Yellow. RMB 1 +Magenta. RMB 1 +Cyan. RMB 1 + + ENDC + ENDC diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/bootfiles/defsfile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/bootfiles/defsfile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,2 @@ + use ../defsfile + use scfdefs diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/bootfiles/makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/bootfiles/makefile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,425 @@ +include ../port.mak + +# Module directory +MD = ../modules +# Commands directory +CMDSDIR = ../cmds + +DEPENDS = ./makefile + +KERNEL_1773 = $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init \ + $(MD)/boot_1773_6ms + +ifeq ($(PORT),coco1) +KERNEL_DW = $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init \ + $(MD)/boot_dw_coco1 +else +KERNEL_DW = $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init \ + $(MD)/boot_dw +endif + +KERNEL_BECKER = $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init \ + $(MD)/boot_dw_becker + +KERNEL_ARDUINO = $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init \ + $(MD)/boot_dw_arduino +#[NAC HACK 2015Sep02] used for mc09 +KERNEL_COCOSDC = $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init \ + $(MD)/boot_sdc + +IDE = $(3PD)/ide +SCSI = $(3PD)/scsisys + +FLOPPY_40D = $(MD)/rb1773.dr $(MD)/d0_40d.dd $(MD)/d1_40d.dd $(MD)/d2_40d.dd + +FLOPPY_80D = $(MD)/rb1773.dr $(MD)/d0_40d.dd $(MD)/d1_40d.dd $(MD)/d2_40d.dd + +MC09SDC_80D = $(MD)/mc09sdc.dr $(MD)/s0_80d.dd $(MD)/s1_80d.dd $(MD)/s2_80d.dd $(MD)/s3_80d.dd + +TERM_MC09 = $(MD)/mc6850.dr $(MD)/term_mc6850.dt $(MD)/term_mc6850_t0.dt $(MD)/term_mc6850_t1.dt +VTIO_COVDG = $(MD)/vtio.dr $(MD)/covdg.io $(MD)/term_vdg.dt +VTIO_COHR = $(MD)/vtio.dr $(MD)/cohr.io $(MD)/term_hr.dt +VTIO_CO80 = $(MD)/vtio.dr $(MD)/co80.io $(MD)/term_80.dt +PIPE = $(MD)/pipeman.mn $(MD)/piper.dr $(MD)/pipe.dd +CLOCK50HZMC09 = $(MD)/mc09clock_50hz $(MD)/clock2_soft +CLOCK60HZ = $(MD)/clock_60hz $(MD)/clock2_soft +CLOCK60HZDW = $(MD)/clock_60hz $(MD)/clock2_dw +ifeq ($(PORT),coco1) +RBDW = $(MD)/rbdw.dr $(MD)/dwio_coco1.sb \ + $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd +else +RBDW = $(MD)/rbdw.dr $(MD)/dwio.sb \ + $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd +endif +RBBECKER = $(MD)/rbdw.dr $(MD)/dwio_becker.sb \ + $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd + +RBARDUINO = $(MD)/rbdw.dr $(MD)/dwio_arduino.sb \ + $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd + +RBCOCOSDC = $(MD)/rbsuper.dr $(MD)/llcocosdc.dr \ + $(MD)/sd0_cocosdc.dd $(MD)/sd1_cocosdc.dd + +SCDWV_NET = $(MD)/n_scdwv.dd $(MD)/n1_scdwv.dd $(MD)/n2_scdwv.dd \ + $(MD)/n3_scdwv.dd $(MD)/n4_scdwv.dd $(MD)/n5_scdwv.dd \ + $(MD)/n6_scdwv.dd $(MD)/n7_scdwv.dd $(MD)/n8_scdwv.dd \ + $(MD)/n9_scdwv.dd $(MD)/n10_scdwv.dd $(MD)/n11_scdwv.dd \ + $(MD)/n12_scdwv.dd $(MD)/n13_scdwv.dd $(MD)/midi_scdwv.dd +SCDWV_WIN = $(MD)/z1_scdwv.dd $(MD)/z2_scdwv.dd $(MD)/z3_scdwv.dd \ + $(MD)/z4_scdwv.dd $(MD)/z5_scdwv.dd $(MD)/z6_scdwv.dd \ + $(MD)/z7_scdwv.dd +SCDWP = $(MD)/scdwp.dr $(MD)/p_scdwp.dd + +BOOTFILE_COVDG = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_40D) \ + $(MD)/ddd0_40d.dd \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(MD)/scbbp.dr $(MD)/p_scbbp.dd \ + $(MD)/scbbt.dr $(MD)/t1_scbbt.dd \ + $(PIPE) \ + $(CLOCK60HZ) \ + $(MD)/sysgo_dd + +BOOTFILE_COHR = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_40D) \ + $(MD)/ddd0_40d.dd \ + $(MD)/scf.mn \ + $(VTIO_COHR) \ + $(MD)/scbbp.dr $(MD)/p_scbbp.dd \ + $(MD)/scbbt.dr $(MD)/t1_scbbt.dd \ + $(PIPE) \ + $(CLOCK60HZ) \ + $(MD)/sysgo_dd + +BOOTFILE_CO80 = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_40D) \ + $(MD)/ddd0_40d.dd \ + $(MD)/scf.mn \ + $(VTIO_CO80) \ + $(MD)/scbbp.dr $(MD)/p_scbbp.dd \ + $(MD)/scbbt.dr $(MD)/t1_scbbt.dd \ + $(PIPE) \ + $(CLOCK60HZ) \ + $(MD)/sysgo_dd + +BOOTFILE_DW_HEADLESS = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(RBDW) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(MD)/scdwv.dr \ + $(MD)/term_scdwv.dt \ + $(SCDWV_NET) \ + $(SCDWV_WIN) \ + $(SCDWP) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd + +BOOTFILE_BECKER_HEADLESS = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(RBBECKER) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(MD)/scdwv.dr \ + $(MD)/term_scdwv.dt \ + $(SCDWV_NET) \ + $(SCDWV_WIN) \ + $(SCDWP) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd + +BOOTFILE_ARDUINO_HEADLESS = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(RBARDUINO) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(MD)/scdwv.dr \ + $(MD)/term_scdwv.dt \ + $(SCDWV_NET) \ + $(SCDWV_WIN) \ + $(SCDWP) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd + +BOOTFILE_COVDG_DW = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_40D) \ + $(RBDW) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(MD)/scdwv.dr \ + $(SCDWV_NET) \ + $(SCDWV_WIN) \ + $(SCDWP) \ + $(PIPE) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd + +BOOTFILE_COVDG_DW_GAME = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(RBDW) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(PIPE) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd \ + $(CMDSDIR)/shell_21 + +BOOTFILE_COVDG_BECKER = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(RBBECKER) \ + $(FLOPPY_40D) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(MD)/scdwv.dr \ + $(SCDWV_NET) \ + $(SCDWV_WIN) \ + $(SCDWP) \ + $(PIPE) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd + +BOOTFILE_COVDG_BECKER_GAME = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(RBBECKER) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(PIPE) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd \ + $(CMDSDIR)/shell_21 + +BOOTFILE_COVDG_ARDUINO = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_40D) \ + $(RBARDUINO) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(MD)/scdwv.dr \ + $(SCDWV_NET) \ + $(SCDWV_WIN) \ + $(SCDWP) \ + $(PIPE) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd + +BOOTFILE_COVDG_ARDUINO_GAME = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(RBARDUINO) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(PIPE) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd \ + $(CMDSDIR)/shell_21 + +BOOTFILE_COVDG_DS80 = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_80D) \ + $(MD)/ddd0_80d.dd \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(MD)/scbbp.dr $(MD)/p_scbbp.dd \ + $(MD)/scbbt.dr $(MD)/t1_scbbt.dd \ + $(PIPE) \ + $(CLOCK60HZ) \ + $(MD)/sysgo_dd + +# [NAC HACK 2015Aug31] used for mc09 +BOOTFILE_COVDG_SD80 = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(MD)/dds0_80d.dd \ + $(MC09SDC_80D) \ + $(MD)/scf.mn \ + $(TERM_MC09) \ + $(PIPE) \ + $(CLOCK50HZMC09) \ + $(MD)/sysgo_dd + +BOOTFILE_COVDG_COCOSDC = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(RBCOCOSDC) \ + $(MD)/ddsd0_cocosdc.dd \ + $(FLOPPY_40D) \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(MD)/scbbp.dr $(MD)/p_scbbp.dd \ + $(MD)/scbbt.dr $(MD)/t1_scbbt.dd \ + $(PIPE) \ + $(CLOCK60HZ) \ + $(MD)/sysgo_dd + +BOOTFILE_COVDG_COCOSDC_GAME = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(RBCOCOSDC) \ + $(MD)/ddsd0_cocosdc.dd \ + $(MD)/scf.mn \ + $(VTIO_COVDG) \ + $(PIPE) \ + $(CLOCK60HZ) \ + $(MD)/sysgo_dd \ + $(CMDSDIR)/shell_21 + +BOOTFILE_COHR_DW = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_40D) \ + $(RBDW) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(VTIO_COHR) \ + $(MD)/scdwv.dr \ + $(SCDWV_NET) \ + $(SCDWP)\ + $(PIPE) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd + +BOOTFILE_COHR_BECKER = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_40D) \ + $(RBBECKER) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(VTIO_COHR) \ + $(MD)/scdwv.dr \ + $(SCDWV_NET) \ + $(SCDWP) \ + $(PIPE) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd + +BOOTFILE_COHR_ARDUINO = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_40D) \ + $(RBARDUINO) \ + $(MD)/ddx0.dd \ + $(MD)/scf.mn \ + $(VTIO_COHR) \ + $(MD)/scdwv.dr \ + $(SCDWV_NET) \ + $(SCDWP) \ + $(PIPE) \ + $(CLOCK60HZDW) \ + $(MD)/sysgo_dd + +BOOTFILE_COHR_DS80 = $(MD)/ioman \ + $(MD)/rbf.mn \ + $(FLOPPY_80D) \ + $(MD)/ddd0_80d.dd \ + $(MD)/scf.mn \ + $(VTIO_CO80) \ + $(MD)/scbbp.dr $(MD)/p_scbbp.dd \ + $(MD)/scbbt.dr $(MD)/t1_scbbt.dd \ + $(PIPE) \ + $(CLOCK60HZ) \ + $(MD)/sysgo_dd + +BOOTFILES = bootfile_covdg bootfile_cohr bootfile_covdg_dw \ + bootfile_dw_headless bootfile_covdg_becker \ + bootfile_covdg_becker_game bootfile_covdg_dw_game \ + bootfile_covdg_cocosdc bootfile_covdg_cocosdc_game \ + bootfile_cohr_dw bootfile_covdg_ds80 bootfile_covdg_sd80 bootfile_cohr_ds80 \ + bootfile_cohr_becker bootfile_becker_headless \ + bootfile_covdg_arduino bootfile_arduino_headless \ + bootfile_cohr_arduino bootfile_covdg_arduino_game + +KERNELS = kernel_1773 kernel_dw kernel_becker kernel_arduino kernel_cocosdc + +ALLOBJS = $(BOOTFILES) $(KERNELS) + +all: $(ALLOBJS) + +bootfile_covdg: $(BOOTFILE_COVDG) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG)>$@ + +bootfile_cohr: $(BOOTFILE_COHR) $(DEPENDS) + $(MERGE) $(BOOTFILE_COHR)>$@ + +bootfile_co80: $(BOOTFILE_CO80) $(DEPENDS) + $(MERGE) $(BOOTFILE_CO80)>$@ + +bootfile_covdg_ds80: $(BOOTFILE_COVDG_DS80) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_DS80)>$@ + +bootfile_covdg_sd80: $(BOOTFILE_COVDG_SD80) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_SD80)>$@ + +bootfile_dw_headless: $(BOOTFILE_DW_HEADLESS) $(DEPENDS) + $(MERGE) $(BOOTFILE_DW_HEADLESS)>$@ + +bootfile_becker_headless: $(BOOTFILE_BECKER_HEADLESS) $(DEPENDS) + $(MERGE) $(BOOTFILE_BECKER_HEADLESS)>$@ + +bootfile_arduino_headless: $(BOOTFILE_ARDUINO_HEADLESS) $(DEPENDS) + $(MERGE) $(BOOTFILE_ARDUINO_HEADLESS)>$@ + +bootfile_covdg_dw: $(BOOTFILE_COVDG_DW) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_DW)>$@ + +bootfile_covdg_dw_game: $(BOOTFILE_COVDG_DW_GAME) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_DW_GAME)>$@ + +bootfile_covdg_becker: $(BOOTFILE_COVDG_BECKER) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_BECKER)>$@ + +bootfile_covdg_becker_game: $(BOOTFILE_COVDG_BECKER_GAME) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_BECKER_GAME)>$@ + +bootfile_covdg_arduino: $(BOOTFILE_COVDG_ARDUINO) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_ARDUINO)>$@ + +bootfile_covdg_arduino_game: $(BOOTFILE_COVDG_ARDUINO_GAME) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_ARDUINO_GAME)>$@ + +bootfile_covdg_cocosdc: $(BOOTFILE_COVDG_COCOSDC) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_COCOSDC)>$@ + +bootfile_covdg_cocosdc_game: $(BOOTFILE_COVDG_COCOSDC_GAME) $(DEPENDS) + $(MERGE) $(BOOTFILE_COVDG_COCOSDC_GAME)>$@ + +bootfile_cohr_ds80: $(BOOTFILE_COHR_DS80) $(DEPENDS) + $(MERGE) $(BOOTFILE_COHR_DS80)>$@ + +bootfile_cohr_dw: $(BOOTFILE_COHR_DW) $(DEPENDS) + $(MERGE) $(BOOTFILE_COHR_DW)>$@ + +bootfile_cohr_becker: $(BOOTFILE_COHR_BECKER) $(DEPENDS) + $(MERGE) $(BOOTFILE_COHR_BECKER)>$@ + +bootfile_cohr_arduino: $(BOOTFILE_COHR_ARDUINO) $(DEPENDS) + $(MERGE) $(BOOTFILE_COHR_ARDUINO)>$@ + +# WD1773 Kernel +kernel_1773: $(KERNEL_1773) $(DEPENDS) + $(MERGE) $(KERNEL_1773)>$@ + $(PADROM) 4608 $@ + +# DriveWire 3 Kernel +kernel_dw: $(KERNEL_DW) $(DEPENDS) + $(MERGE) $(KERNEL_DW)>$@ + $(PADROM) 4608 $@ + +kernel_becker: $(KERNEL_BECKER) $(DEPENDS) + $(MERGE) $(KERNEL_BECKER)>$@ + $(PADROM) 4608 $@ + +kernel_arduino: $(KERNEL_ARDUINO) $(DEPENDS) + $(MERGE) $(KERNEL_ARDUINO)>$@ + $(PADROM) 4608 $@ + +kernel_cocosdc: $(KERNEL_COCOSDC) $(DEPENDS) + $(MERGE) $(KERNEL_COCOSDC)>$@ + $(PADROM) 4608 $@ + +clean: + $(RM) $(ALLOBJS) diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/bootlists/dw.bl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/bootlists/dw.bl Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,200 @@ +*************************************** +* NitrOS-9 Level 1 CoCo Bootlist +* +* $Id$ +* +* This bootlist is presented as an example for creating custom bootfiles. +* A module may be excluded from the bootfile if an asterisk (*) is the +* first character of the line. +* +*************************************** +* Kernel/System Section +* +* These modules are mandatory. +../MODULES/SYSMODS/ioman +* +*************************************** +* CDF Section (HawkSoft) +* +*../MODULES/CDF/cdf.mn +* +* CDF descriptors - select as needed +* SCSI descriptors (IDs 0-6) +*../MODULES/CDF/sc0.dd +*../MODULES/CDF/sc1.dd +*../MODULES/CDF/sc2.dd +*../MODULES/CDF/sc3.dd +*../MODULES/CDF/sc4.dd +*../MODULES/CDF/sc5.dd +*../MODULES/CDF/sc6.dd +* IDE descriptors (master/slave) +*../MODULES/CDF/ic0.dd +*../MODULES/CDF/ic1.dd +* +*************************************** +* RBF Section +* +../MODULES/RBF/rbf.mn +* +* DriveWire RBF driver +../MODULES/RBF/rbdw.dr +../MODULES/RBF/dwio.sb +* DriveWire descriptors - select as needed +../MODULES/RBF/ddx0.dd +*../MODULES/RBF/x0.dd +../MODULES/RBF/x1.dd +../MODULES/RBF/x2.dd +../MODULES/RBF/x3.dd +* +* SuperDriver Package +*../MODULES/RBF/rbsuper.dr +* Select Low level SCSI and/or IDE driver +*../MODULES/RBF/lltc3.dr +*../MODULES/RBF/llide.dr +* SuperDriver descriptors - select as needed +* TC^3 SCSI DD Descriptor (ID 0) +*../MODULES/RBF/dds0_tc3.dd +* TC^3 SCSI descriptors (IDs 0-6) +*../MODULES/RBF/s0_tc3.dd +*../MODULES/RBF/s1_tc3.dd +*../MODULES/RBF/s2_tc3.dd +*../MODULES/RBF/s3_tc3.dd +*../MODULES/RBF/s4_tc3.dd +*../MODULES/RBF/s5_tc3.dd +*../MODULES/RBF/s6_tc3.dd +* TC^3 SCSI HDB-DOS descriptor +*../MODULES/RBF/sh_tc3.dd +* IDE DD descriptor (Master) +*../MODULES/RBF/ddi0_ide.dd +* IDE descriptors (master/slave) +*../MODULES/RBF/i0_ide.dd +*../MODULES/RBF/i1_ide.dd +* IDE HDB-DOS descriptor +*../MODULES/RBF/ih_ide.dd +* +* WD1773 floppy support for Tandy and compatible disk controllers +../MODULES/RBF/rb1773.dr +* WD1773 floppy support for Disto Super Controller II +*../MODULES/RBF/rb1773_scii_ff74.dr +*../MODULES/RBF/rb1773_scii_ff58.dr +* Floppy device descriptors +* DD - default device - choose one if needed +*../MODULES/RBF/ddd0_35s.dd +*../MODULES/RBF/ddd0_40d.dd +*../MODULES/RBF/ddd0_80d.dd +* D0 - drive 0 - choose one if needed +*../MODULES/RBF/d0_35s.dd +../MODULES/RBF/d0_40d.dd +*../MODULES/RBF/d0_80d.dd +* D1 - drive 1 - choose one if needed +*../MODULES/RBF/d1_35s.dd +../MODULES/RBF/d1_40d.dd +*../MODULES/RBF/d1_80d.dd +* D2 - drive 2 - choose one if needed +*../MODULES/RBF/d2_35s.dd +../MODULES/RBF/d2_40d.dd +*../MODULES/RBF/d2_80d.dd +* D3 - drive 3 - choose if needed +*../MODULES/RBF/d3_35s.dd +*************************************** +* SCF Section +* +../MODULES/SCF/scf.mn +* +* Video Terminal I/O driver and subroutine modules +../MODULES/SCF/vtio.dr +* Choose from CoVDG (32x16 VDG), CoHR (Hi-Res 51x24 graphics screen) or Co80 (Word-Pak) +../MODULES/SCF/covdg.io +*../MODULES/SCF/cohr.io +*../MODULES/SCF/co80.io +* +* Select only one term descriptor +../MODULES/SCF/term_vdg.dt +*../MODULES/SCF/term_hr.dt +*../MODULES/SCF/term_80.dt +*../MODULES/SCF/term_scbbt.dt +*../MODULES/SCF/term_sc6551.dt +* +* Serial port drivers +* CoCo Bit-Banger terminal port +*../MODULES/SCF/scbbt.dr +*../MODULES/SCF/t1_scbbt.dd +* 6551 ACIA +*../MODULES/SCF/sc6551.dr +*../MODULES/SCF/t2_sc6551.dd +*../MODULES/SCF/t3_sc6551.dd +* +* Printer drivers +* ../MODULES/SCF/scbbp.dr +* ../MODULES/SCF/p_scbbp.dd +* +* DriveWire 3 Printer drivers +* ../MODULES/SCF/scdwp.dr +* ../MODULES/SCF/p_scdwp.dd +* +* DriveWire Virtual Channel Driver +*../MODULES/SCF/scdwv.dr +*../MODULES/SCF/term_scdwv.dt +*../MODULES/SCF/n_scdwv.dd +*../MODULES/SCF/n1_scdwv.dd +*../MODULES/SCF/n2_scdwv.dd +*../MODULES/SCF/n3_scdwv.dd +*../MODULES/SCF/n4_scdwv.dd +*../MODULES/SCF/n5_scdwv.dd +*../MODULES/SCF/n6_scdwv.dd +*../MODULES/SCF/n7_scdwv.dd +*../MODULES/SCF/n8_scdwv.dd +*../MODULES/SCF/n9_scdwv.dd +*../MODULES/SCF/n10_scdwv.dd +*../MODULES/SCF/n11_scdwv.dd +*../MODULES/SCF/n12_scdwv.dd +*../MODULES/SCF/n13_scdwv.dd +*../MODULES/SCF/n14_scdwv.dd +*../MODULES/SCF/term_z_scdwv.dt +*../MODULES/SCF/z1_scdwv.dd +*../MODULES/SCF/z2_scdwv.dd +*../MODULES/SCF/z3_scdwv.dd +*../MODULES/SCF/z4_scdwv.dd +*../MODULES/SCF/z5_scdwv.dd +*../MODULES/SCF/z6_scdwv.dd +*../MODULES/SCF/z7_scdwv.dd +* +*************************************** +* Pipe Section +* +* Pipes are a useful but optional part of a system. +../MODULES/PIPE/pipeman.mn +../MODULES/PIPE/piper.dr +../MODULES/PIPE/pipe.dd +* +*************************************** +* Clock Section +* +* Select one clock module depending upon your power line frequency +* (60Hz = USA/Canada; 50Hz = Europe, Australia) +../MODULES/CLOCKS/clock_60hz +*../MODULES/CLOCKS/clock_50hz +* Select one clock2 module that supports your real-time clock, if any. +* Besides support for the internal software clock, the following +* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1, +* Eliminator, Harris, SmartWatch, Cloud-9, the MESS emulator, Jeff +* Vavasour's CoCo emulator, and DriveWire. +*../MODULES/CLOCKS/clock2_soft +*../MODULES/CLOCKS/clock2_bnb +*../MODULES/CLOCKS/clock2_disto2 +*../MODULES/CLOCKS/clock2_disto4 +*../MODULES/CLOCKS/clock2_elim +*../MODULES/CLOCKS/clock2_harris +*../MODULES/CLOCKS/clock2_smart +*../MODULES/CLOCKS/clock2_jvemu +*../MODULES/CLOCKS/clock2_messemu +*../MODULES/CLOCKS/clock2_cloud9 +../MODULES/CLOCKS/clock2_dw +* +*************************************** +* System Kick-Start Module +* +* Choose which startup module you wish to use. (sysgo_dd is recommended +* for most configurations.) +../MODULES/SYSMODS/sysgo_dd +*../MODULES/SYSMODS/sysgo_h0 diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/bootlists/standard.bl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/bootlists/standard.bl Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,199 @@ +*************************************** +* NitrOS-9 Level 1 CoCo Bootlist +* +* $Id$ +* +* This bootlist is presented as an example for creating custom bootfiles. +* A module may be excluded from the bootfile if an asterisk (*) is the +* first character of the line. +* +*************************************** +* Kernel/System Section +* +* These modules are mandatory. +../MODULES/SYSMODS/ioman +* +*************************************** +* CDF Section (HawkSoft) +* +*../MODULES/CDF/cdf.mn +* +* CDF descriptors - select as needed +* SCSI descriptors (IDs 0-6) +*../MODULES/CDF/sc0.dd +*../MODULES/CDF/sc1.dd +*../MODULES/CDF/sc2.dd +*../MODULES/CDF/sc3.dd +*../MODULES/CDF/sc4.dd +*../MODULES/CDF/sc5.dd +*../MODULES/CDF/sc6.dd +* IDE descriptors (master/slave) +*../MODULES/CDF/ic0.dd +*../MODULES/CDF/ic1.dd +* +*************************************** +* RBF Section +* +../MODULES/RBF/rbf.mn +* +* DriveWire RBF driver +*../MODULES/RBF/rbdw.dr +*../MODULES/RBF/dwio.sb +* DriveWire descriptors - select as needed +*../MODULES/RBF/ddx0.dd +*../MODULES/RBF/x0.dd +*../MODULES/RBF/x1.dd +*../MODULES/RBF/x2.dd +*../MODULES/RBF/x3.dd +* +* SuperDriver Package +*../MODULES/RBF/rbsuper.dr +* Select Low level SCSI and/or IDE driver +*../MODULES/RBF/lltc3.dr +*../MODULES/RBF/llide.dr +* SuperDriver descriptors - select as needed +* TC^3 SCSI DD Descriptor (ID 0) +*../MODULES/RBF/dds0_tc3.dd +* TC^3 SCSI descriptors (IDs 0-6) +*../MODULES/RBF/s0_tc3.dd +*../MODULES/RBF/s1_tc3.dd +*../MODULES/RBF/s2_tc3.dd +*../MODULES/RBF/s3_tc3.dd +*../MODULES/RBF/s4_tc3.dd +*../MODULES/RBF/s5_tc3.dd +*../MODULES/RBF/s6_tc3.dd +* TC^3 SCSI HDB-DOS descriptor +*../MODULES/RBF/sh_tc3.dd +* IDE DD descriptor (Master) +*../MODULES/RBF/ddi0_ide.dd +* IDE descriptors (master/slave) +*../MODULES/RBF/i0_ide.dd +*../MODULES/RBF/i1_ide.dd +* IDE HDB-DOS descriptor +*../MODULES/RBF/ih_ide.dd +* +* WD1773 floppy support for Tandy and compatible disk controllers +../MODULES/RBF/rb1773.dr +* WD1773 floppy support for Disto Super Controller II +*../MODULES/RBF/rb1773_scii_ff74.dr +*../MODULES/RBF/rb1773_scii_ff58.dr +* Floppy device descriptors +* DD - default device - choose one if needed +*../MODULES/RBF/ddd0_35s.dd +../MODULES/RBF/ddd0_40d.dd +*../MODULES/RBF/ddd0_80d.dd +* D0 - drive 0 - choose one if needed +*../MODULES/RBF/d0_35s.dd +../MODULES/RBF/d0_40d.dd +*../MODULES/RBF/d0_80d.dd +* D1 - drive 1 - choose one if needed +*../MODULES/RBF/d1_35s.dd +../MODULES/RBF/d1_40d.dd +*../MODULES/RBF/d1_80d.dd +* D2 - drive 2 - choose one if needed +*../MODULES/RBF/d2_35s.dd +../MODULES/RBF/d2_40d.dd +*../MODULES/RBF/d2_80d.dd +* D3 - drive 3 - choose if needed +*../MODULES/RBF/d3_35s.dd +*************************************** +* SCF Section +* +../MODULES/SCF/scf.mn +* +* Video Terminal I/O driver and subroutine modules +../MODULES/SCF/vtio.dr +* Choose from CoVDG (32x16 VDG), CoHR (Hi-Res 51x24 graphics screen) or Co80 (WordPak) +../MODULES/SCF/covdg.io +*../MODULES/SCF/cohr.io +* +* Select only one term descriptor +../MODULES/SCF/term_vdg.dt +*../MODULES/SCF/term_hr.dt +*../MODULES/SCF/term_80.dt +*../MODULES/SCF/term_scbbt.dt +*../MODULES/SCF/term_sc6551.dt +* +* Serial port drivers +* CoCo Bit-Banger terminal port +*../MODULES/SCF/scbbt.dr +*../MODULES/SCF/t1_scbbt.dd +* 6551 ACIA +*../MODULES/SCF/sc6551.dr +*../MODULES/SCF/t2_sc6551.dd +*../MODULES/SCF/t3_sc6551.dd +* +* Printer drivers +* ../MODULES/SCF/scbbp.dr +* ../MODULES/SCF/p_scbbp.dd +* +* DriveWire 3 Printer drivers +* ../MODULES/SCF/scdwp.dr +* ../MODULES/SCF/p_scdwp.dd +* +* DriveWire Virtual Channel Driver +*../MODULES/SCF/scdwv.dr +*../MODULES/SCF/term_scdwv.dt +*../MODULES/SCF/n_scdwv.dd +*../MODULES/SCF/n1_scdwv.dd +*../MODULES/SCF/n2_scdwv.dd +*../MODULES/SCF/n3_scdwv.dd +*../MODULES/SCF/n4_scdwv.dd +*../MODULES/SCF/n5_scdwv.dd +*../MODULES/SCF/n6_scdwv.dd +*../MODULES/SCF/n7_scdwv.dd +*../MODULES/SCF/n8_scdwv.dd +*../MODULES/SCF/n9_scdwv.dd +*../MODULES/SCF/n10_scdwv.dd +*../MODULES/SCF/n11_scdwv.dd +*../MODULES/SCF/n12_scdwv.dd +*../MODULES/SCF/n13_scdwv.dd +*../MODULES/SCF/n14_scdwv.dd +*../MODULES/SCF/term_z_scdwv.dt +*../MODULES/SCF/z1_scdwv.dd +*../MODULES/SCF/z2_scdwv.dd +*../MODULES/SCF/z3_scdwv.dd +*../MODULES/SCF/z4_scdwv.dd +*../MODULES/SCF/z5_scdwv.dd +*../MODULES/SCF/z6_scdwv.dd +*../MODULES/SCF/z7_scdwv.dd +* +*************************************** +* Pipe Section +* +* Pipes are a useful but optional part of a system. +../MODULES/PIPE/pipeman.mn +../MODULES/PIPE/piper.dr +../MODULES/PIPE/pipe.dd +* +*************************************** +* Clock Section +* +* Select one clock module depending upon your power line frequency +* (60Hz = USA/Canada; 50Hz = Europe, Australia) +../MODULES/CLOCKS/clock_60hz +*../MODULES/CLOCKS/clock_50hz +* Select one clock2 module that supports your real-time clock, if any. +* Besides support for the internal software clock, the following +* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1, +* Eliminator, Harris, SmartWatch, Cloud-9, the MESS emulator, Jeff +* Vavasour's CoCo emulator, and DriveWire. +../MODULES/CLOCKS/clock2_soft +*../MODULES/CLOCKS/clock2_bnb +*../MODULES/CLOCKS/clock2_disto2 +*../MODULES/CLOCKS/clock2_disto4 +*../MODULES/CLOCKS/clock2_elim +*../MODULES/CLOCKS/clock2_harris +*../MODULES/CLOCKS/clock2_smart +*../MODULES/CLOCKS/clock2_jvemu +*../MODULES/CLOCKS/clock2_messemu +*../MODULES/CLOCKS/clock2_cloud9 +*../MODULES/CLOCKS/clock2_dw +* +*************************************** +* System Kick-Start Module +* +* Choose which startup module you wish to use. (sysgo_dd is recommended +* for most configurations.) +../MODULES/SYSMODS/sysgo_dd +*../MODULES/SYSMODS/sysgo_h0 diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/cmds/defsfile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/cmds/defsfile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,1 @@ + use ../defsfile diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/cmds/makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/cmds/makefile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,58 @@ +include ../port.mak + +vpath %.as $(LEVEL1)/cmds +vpath %.asm $(LEVEL1)/cmds:$(3RDPARTY)/packages/basic09 + +DEPENDS = ./makefile + +AFLAGS += --includedir=$(3RDPARTY)/packages/basic09 +LFLAGS += -L $(NITROS9DIR)/lib -lnet -lmc09 -lalib + +BASIC09FILES = basic09.asm runb.asm gfx.asm inkey.asm syscall.asm +CMDS = asm attr backup binex build calldbg cmp cobbler copy cputype \ + date dcheck debug ded deiniz del deldir devs dir dirsort disasm \ + display dmode dsave dump echo edit error exbin format \ + free grfdrv help ident iniz irqs link list load login makdir \ + megaread mdir merge mfree minted mpi os9gen padrom park printerr procs prompt pwd pxd \ + rename save setime shellplus shell_21 sleep \ + tee tmode touch tsmon tuneport unlink verify xmode + +CMDS_D2 = basic09 runb gfx inkey syscall copy del echo format \ + merge os9gen prompt tmode + +CMDS_DW = inetd telnet dw httpd + +SUBS = gfx inkey syscall +ALLOBJS = $(CMDS) $(CMDS_D2) $(CMDS_DW) $(SUBS) + +all: $(ALLOBJS) + +pwd: pd.asm + $(AS) $(AFLAGS) $< $(ASOUT)$@ -DPWD=1 + +xmode: xmode.asm + $(AS) $(AFLAGS) $< $(ASOUT)$@ -DXMODE=1 + +tmode: xmode.asm + $(AS) $(AFLAGS) $< $(ASOUT)$@ -DTMODE=1 + +pxd: pd.asm + $(AS) $(AFLAGS) $< $(ASOUT)$@ -DPXD=1 + +clean: + $(RM) $(ALLOBJS) + +identify: + $(IDENT_SHORT) $(ALLOBJS) + +showobjs: + @$(ECHO) $(CMDS) + +showobjs_d2: + @$(ECHO) $(CMDS_D2) + +showobjs_dw: + @$(ECHO) $(sort $(CMDS) $(CMDS_DW)) + +showallobjs: + @$(ECHO) $(ALLOBJS) diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/defs/defsfile.asm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/defs/defsfile.asm Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,8 @@ +Level equ 1 + + ifp1 + use /dd/defs/os9.d + use /dd/defs/rbf.d + use /dd/defs/scf.d + use /dd/defs/mc09.d + endc diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/defs/makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/defs/makefile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,34 @@ +include ../port.mak + +DEPENDS = ./makefile + +DEFOPTS = --preprocess -DLevel=1 +DEFSDIR = ../../../defs +DEFS = defsfile os9.d rbf.d scf.d mc09.d mc09vtio.d +ALLOBJS = $(DEFS) + +all: $(ALLOBJS) + +defsfile: defsfile.asm + $(AS) $(DEFOPTS) $< > $@ + +os9.d: $(DEFSDIR)/os9.d + $(AS) $(DEFOPTS) -DOS9.D=0 $< > $@ + +rbf.d: $(DEFSDIR)/rbf.d + $(AS) $(DEFOPTS) -DRBF.D=0 $< > $@ + +scf.d: $(DEFSDIR)/scf.d + $(AS) $(DEFOPTS) -DSCF.D=0 $< > $@ + +mc09.d: $(DEFSDIR)/mc09.d + $(AS) $(DEFOPTS) -DMC09.D=0 $< > $@ + +mc09vtio.d: $(DEFSDIR)/mc09vtio.d + $(AS) $(DEFOPTS) -DMC09VTIO.D=0 $< > $@ + +clean: + $(RM) $(DEFS) + +showobjs: + @$(ECHO) $(ALLOBJS) diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/defsfile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/defsfile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,6 @@ +Level equ 1 + + use os9.d + use scf.d + use rbf.d + use mc09.d diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/makefile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,604 @@ +include port.mak + +# Level 1 - Specify which shell should be used +#WHICHSHELL = shellplus +WHICHSHELL = shell_21 + +DISTRO = $(CPU)L$(LEVEL) +DISTRONAME = nos9$(CPU)l$(LEVEL) +DISTROVER = $(DISTRONAME)$(NITROS9VER)$(PORT) +BOOTFILE_COVDG = bootfiles/bootfile_covdg +BOOTFILE_COHR = bootfiles/bootfile_cohr +BOOTFILE_COVDG_DS80 = bootfiles/bootfile_covdg_ds80 +BOOTFILE_COVDG_SD80 = bootfiles/bootfile_covdg_sd80 +BOOTFILE_DW_HEADLESS = bootfiles/bootfile_dw_headless +BOOTFILE_BECKER_HEADLESS = bootfiles/bootfile_becker_headless +BOOTFILE_ARDUINO_HEADLESS = bootfiles/bootfile_arduino_headless +BOOTFILE_COVDG_DW = bootfiles/bootfile_covdg_dw +BOOTFILE_COVDG_BECKER = bootfiles/bootfile_covdg_becker +BOOTFILE_COVDG_ARDUINO = bootfiles/bootfile_covdg_arduino +BOOTFILE_COVDG_COCOSDC = bootfiles/bootfile_covdg_cocosdc +BOOTFILE_COHR_DS80 = bootfiles/bootfile_cohr_ds80 +BOOTFILE_COHR_DW = bootfiles/bootfile_cohr_dw +BOOTFILE_COHR_BECKER = bootfiles/bootfile_cohr_becker +BOOTFILE_COHR_ARDUINO = bootfiles/bootfile_cohr_arduino +KERNELFILE = bootfiles/kernel_1773 +KERNELFILE_DW = bootfiles/kernel_dw +KERNELFILE_BECKER = bootfiles/kernel_becker +KERNELFILE_ARDUINO = bootfiles/kernel_arduino +KERNELFILE_COCOSDC = bootfiles/kernel_cocosdc +DIRS = cmds modules defs sys bootfiles wwwroot + + +CMDS = $(shell $(CD) cmds; make --no-print-directory showobjs) +CMDS_D2 = $(shell $(CD) cmds; make --no-print-directory showobjs_d2) +CMDS_DW = $(shell $(CD) cmds; make --no-print-directory showobjs_dw) +BOOTTRACK = $(shell $(CD) modules; make --no-print-directory showboottrack) +KERNEL = $(shell $(CD) modules; make --no-print-directory showkernel) +SYSMODS = $(shell $(CD) modules; make --no-print-directory showsysmods) +CLOCKS = $(shell $(CD) modules; make --no-print-directory showclocks) +RBF = $(shell $(CD) modules; make --no-print-directory showrbf) +SCF = $(shell $(CD) modules; make --no-print-directory showscf) +PIPE = $(shell $(CD) modules; make --no-print-directory showpipe) +MODULECMDS = $(WHICHSHELL) del echo format makdir merge os9gen prompt tmode + +SYS = $(shell $(CD) sys; make --no-print-directory showobjs) +WWWROOT = $(shell $(CD) wwwroot; make --no-print-directory showobjs) +DEFS = $(shell $(CD) defs; make --no-print-directory showobjs) +STARTUP = startup +STARTUP_DW = startup.dw + +PACKAGENAME = $(DISTROVER).zip +DSKDW = $(DISTROVER)_dw.dsk +LDSKDW = $(DISTRONAME)$(PORT)_dw.dsk +DSKDWHEADLESS = $(DISTROVER)_dw_headless.dsk +LDSKDWHEADLESS = $(DISTRONAME)$(PORT)_dw_headless.dsk +DSK360K_1 = $(DISTROVER)_40d_1.dsk +LDSK360K_1 = $(DISTRONAME)$(PORT)_40d_1.dsk +DSK360K_2 = $(DISTROVER)_40d_2.dsk +LDSK360K_2 = $(DISTRONAME)$(PORT)_40d_2.dsk +DSK720K = $(DISTROVER)_80d.dsk +LDSK720K = $(DISTRONAME)$(PORT)_80d.dsk +DSKBECKER = $(DISTROVER)_becker.dsk +LDSKBECKER = $(DISTRONAME)$(PORT)_becker.dsk +DSKBECKERHEADLESS = $(DISTROVER)_becker_headless.dsk +LDSKBECKERHEADLESS = $(DISTRONAME)$(PORT)_becker_headless.dsk +DSKARDUINO = $(DISTROVER)_arduino.dsk +LDSKARDUINO = $(DISTRONAME)$(PORT)_arduino.dsk +DSKARDUINOHEADLESS = $(DISTROVER)_arduino_headless.dsk +LDSKARDUINOHEADLESS = $(DISTRONAME)$(PORT)_arduino_headless.dsk +DSKCOCOSDC = $(DISTROVER)_cocosdc.dsk +LDSKCOCOSDC = $(DISTRONAME)$(PORT)_cocosdc.dsk + +#DSKS = $(DSKDW) $(DSKDWHEADLESS) $(DSKBECKER) $(DSKBECKERHEADLESS) \ +# $(DSKARDUINO) $(DSKARDUINOHEADLESS) $(DSK360K_1) $(DSK360K_2) \ +# $(DSK720K) $(DSKCOCOSDC) +#LDSKS = $(LDSKDW) $(LDSKDWHEADLESS) $(LDSKBECKER) $(LDSKBECKERHEADLESS) \ +# $(LDSKARDUINO) $(LDSKARDUINOHEADLESS) $(LDSK360K_1) $(LDSK360K_2) \ +# $(LDSK720K) $(LDSKCOCOSDC) +DSKS = $(DSK720K) +LDSKS = $(LDSK720K) + +# Make all components +all: + @$(ECHO) "************************************************************" + @$(ECHO) "*" + @$(ECHO) "* NitrOS-9/$(CPU) Level $(LEVEL) $(MACHINE) ($(PORT))" + @$(ECHO) "*" + @$(ECHO) "************************************************************" + $(foreach dir,$(DIRS),$(MAKE) -C $(dir) &&) : + +# Clean all components +clean: dskclean + $(foreach dir, $(DIRS), ($(CD) $(dir); make clean);) + +dskclean: + $(RM) $(PACKAGENAME) $(DSKS) $(LDSKS) + +dsk: all $(PACKAGENAME) + +dskcopy: dsk + $(CP) $(DSKS) $(DSKDIR) + +scp: dsk + scp $(PACKAGENAME) boisy@cvs.nitros9.org:/home/nitros9/public_html + +$(PACKAGENAME): $(DSKS) ../../ReadMe ../../ChangeLog + $(ARCHIVE) $@ $^ + +$(DSKDW): + $(RM) $@ + $(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)" + $(OS9GEN) $@ -b=$(BOOTFILE_COVDG_DW) -t=$(KERNELFILE_DW) + $(MAKDIR) $@,CMDS + $(MAKDIR) $@,SYS + $(MAKDIR) $@,DEFS + $(MAKDIR) $@,WWWROOT + $(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file)) + $(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell + $(CD) sys; $(CPL) $(SYS) ../$@,SYS + $(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file)) + $(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT + $(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file)) + $(CD) defs; $(CPL) $(DEFS) ../$@,DEFS + $(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file)) + $(CPL) $(STARTUP_DW) $@,startup + $(OS9ATTR_TEXT) $@,startup + $(MAKDIR) $@,NITROS9 + $(MAKDIR) $@,NITROS9/$(DISTRO) + $(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS + $(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS + $(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file)) + $(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF + $(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF + $(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF + $(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF + $(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE + $(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE + $(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS + $(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS + $(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS + $(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS + $(RM) $(LDSKDW) + $(SOFTLINK) $@ $(LDSKDW) + +$(DSKBECKER): + $(RM) $@ + $(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)" + $(OS9GEN) $@ -b=$(BOOTFILE_COVDG_BECKER) -t=$(KERNELFILE_BECKER) + $(MAKDIR) $@,CMDS + $(MAKDIR) $@,SYS + $(MAKDIR) $@,DEFS + $(MAKDIR) $@,WWWROOT + $(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file)) + $(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell + $(CD) sys; $(CPL) $(SYS) ../$@,SYS + $(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file)) + $(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT + $(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file)) + $(CD) defs; $(CPL) $(DEFS) ../$@,DEFS + $(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file)) + $(CPL) $(STARTUP_DW) $@,startup + $(OS9ATTR_TEXT) $@,startup + $(MAKDIR) $@,NITROS9 + $(MAKDIR) $@,NITROS9/$(DISTRO) + $(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS + $(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS + $(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file)) + $(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF + $(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF + $(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF + $(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF + $(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE + $(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE + $(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS + $(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS + $(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS + $(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS + $(RM) $(LDSKBECKER) + $(SOFTLINK) $@ $(LDSKBECKER) + +$(DSKARDUINO): + $(RM) $@ + $(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)" + $(OS9GEN) $@ -b=$(BOOTFILE_COVDG_ARDUINO) -t=$(KERNELFILE_ARDUINO) + $(MAKDIR) $@,CMDS + $(MAKDIR) $@,SYS + $(MAKDIR) $@,DEFS + $(MAKDIR) $@,WWWROOT + $(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file)) + $(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell + $(CD) sys; $(CPL) $(SYS) ../$@,SYS + $(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file)) + $(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT + $(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file)) + $(CD) defs; $(CPL) $(DEFS) ../$@,DEFS + $(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file)) + $(CPL) $(STARTUP_DW) $@,startup + $(OS9ATTR_TEXT) $@,startup + $(MAKDIR) $@,NITROS9 + $(MAKDIR) $@,NITROS9/$(DISTRO) + $(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS + $(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS + $(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file)) + $(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF + $(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF + $(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF + $(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF + $(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE + $(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE + $(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS + $(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS + $(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS + $(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS + $(RM) $(LDSKARDUINO) + $(SOFTLINK) $@ $(LDSKARDUINO) + +$(DSKCOCOSDC): + $(RM) $@ + $(OS9FORMAT) -t1024 -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)" + $(OS9GEN) $@ -b=$(BOOTFILE_COVDG_COCOSDC) -t=$(KERNELFILE_COCOSDC) + $(MAKDIR) $@,CMDS + $(MAKDIR) $@,SYS + $(MAKDIR) $@,DEFS + $(MAKDIR) $@,WWWROOT + $(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file)) + $(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell + $(CD) sys; $(CPL) $(SYS) ../$@,SYS + $(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file)) + $(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT + $(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file)) + $(CD) defs; $(CPL) $(DEFS) ../$@,DEFS + $(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file)) + $(CPL) $(STARTUP_DW) $@,startup + $(OS9ATTR_TEXT) $@,startup + $(MAKDIR) $@,NITROS9 + $(MAKDIR) $@,NITROS9/$(DISTRO) + $(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS + $(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS + $(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file)) + $(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF + $(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF + $(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF + $(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF + $(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE + $(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE + $(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS + $(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS + $(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS + $(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS + $(RM) $(LDSKCOCOSDC) + $(SOFTLINK) $@ $(LDSKCOCOSDC) + +$(DSKDWHEADLESS): + $(RM) $@ + $(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)" + $(OS9GEN) $@ -b=$(BOOTFILE_DW_HEADLESS) -t=$(KERNELFILE_DW) + $(MAKDIR) $@,CMDS + $(MAKDIR) $@,SYS + $(MAKDIR) $@,DEFS + $(MAKDIR) $@,WWWROOT + $(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file)) + $(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell + $(CD) sys; $(CPL) $(SYS) ../$@,SYS + $(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file)) + $(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT + $(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file)) + $(CD) defs; $(CPL) $(DEFS) ../$@,DEFS + $(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file)) + $(CPL) $(STARTUP_DW) $@,startup + $(OS9ATTR_TEXT) $@,startup + $(MAKDIR) $@,NITROS9 + $(MAKDIR) $@,NITROS9/$(DISTRO) + $(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS + $(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS + $(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file)) + $(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF + $(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF + $(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF + $(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF + $(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE + $(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE + $(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS + $(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS + $(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS + $(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS + $(RM) $(LDSKDWHEADLESS) + $(SOFTLINK) $@ $(LDSKDWHEADLESS) + +$(DSKBECKERHEADLESS): + $(RM) $@ + $(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)" + $(OS9GEN) $@ -b=$(BOOTFILE_BECKER_HEADLESS) -t=$(KERNELFILE_BECKER) + $(MAKDIR) $@,CMDS + $(MAKDIR) $@,SYS + $(MAKDIR) $@,DEFS + $(MAKDIR) $@,WWWROOT + $(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file)) + $(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell + $(CD) sys; $(CPL) $(SYS) ../$@,SYS + $(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file)) + $(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT + $(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file)) + $(CD) defs; $(CPL) $(DEFS) ../$@,DEFS + $(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file)) + $(CPL) $(STARTUP_DW) $@,startup + $(OS9ATTR_TEXT) $@,startup + $(MAKDIR) $@,NITROS9 + $(MAKDIR) $@,NITROS9/$(DISTRO) + $(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS + $(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS + $(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file)) + $(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF + $(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF + $(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF + $(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF + $(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE + $(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE + $(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS + $(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS + $(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS + $(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS + $(RM) $(LDSKBECKERHEADLESS) + $(SOFTLINK) $@ $(LDSKBECKERHEADLESS) + +$(DSKARDUINOHEADLESS): + $(RM) $@ + $(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)" + $(OS9GEN) $@ -b=$(BOOTFILE_ARDUINO_HEADLESS) -t=$(KERNELFILE_ARDUINO) + $(MAKDIR) $@,CMDS + $(MAKDIR) $@,SYS + $(MAKDIR) $@,DEFS + $(MAKDIR) $@,WWWROOT + $(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file)) + $(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell + $(CD) sys; $(CPL) $(SYS) ../$@,SYS + $(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file)) + $(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT + $(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file)) + $(CD) defs; $(CPL) $(DEFS) ../$@,DEFS + $(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file)) + $(CPL) $(STARTUP_DW) $@,startup + $(OS9ATTR_TEXT) $@,startup + $(MAKDIR) $@,NITROS9 + $(MAKDIR) $@,NITROS9/$(DISTRO) + $(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS + $(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS + $(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file)) + $(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF + $(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF + $(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF + $(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF + $(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE + $(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE + $(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS + $(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS + $(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS + $(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS + $(RM) $(LDSKARDUINOHEADLESS) + $(SOFTLINK) $@ $(LDSKARDUINOHEADLESS) + +$(DSK360K_1): + $(RM) $@ + $(OS9FORMAT_DS40) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL) Disk 1" + $(OS9GEN) $@ -b=$(BOOTFILE_COVDG) -t=$(KERNELFILE) + $(MAKDIR) $@,CMDS + $(MAKDIR) $@,SYS + $(CD) cmds; $(OS9COPY) $(CMDS) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(CMDS),$@,CMDS/$(file)) + $(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell + $(CD) sys; $(CPL) $(SYS) ../$@,SYS + $(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file)) + $(MAKDIR) $@,DEFS + $(CD) defs; $(CPL) $(DEFS) ../$@,DEFS + $(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file)) + $(CPL) $(STARTUP) $@,startup + $(OS9ATTR_TEXT) $@,startup + $(RM) $(LDSK360K_1) + $(SOFTLINK) $@ $(LDSK360K_1) + +$(DSK360K_2): + $(RM) $@ + $(OS9FORMAT_DS40) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL) Disk 2" + $(MAKDIR) $@,CMDS + $(CD) cmds; $(OS9COPY) $(CMDS_D2) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(CMDS_D2),$@,CMDS/$(file)) + $(MAKDIR) $@,NITROS9 + $(MAKDIR) $@,NITROS9/$(DISTRO) + $(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS + $(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS + $(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file)) + $(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS//$(WHICHSHELL) shell + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF + $(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF + $(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF + $(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF + $(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE + $(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE + $(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS + $(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS + $(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS + $(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS + $(RM) $(LDSK360K_2) + $(SOFTLINK) $@ $(LDSK360K_2) + +# [NAC HACK 2015Aug31] this is the image I'm targetting for multicomp09 +# _DS80 to format the disk double-sided. Bootfile _SD80 for my SDcontroller +# driver. +$(DSK720K): + $(RM) $@ + $(OS9FORMAT_DS80) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)" + $(OS9GEN) $@ -b=$(BOOTFILE_COVDG_SD80) -t=$(KERNELFILE_COCOSDC) + $(MAKDIR) $@,CMDS + $(MAKDIR) $@,SYS + $(MAKDIR) $@,DEFS + $(CD) cmds; $(OS9COPY) $(sort $(CMDS) $(CMDS_D2)) ../$@,CMDS + $(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS) $(CMDS_D2)),$@,CMDS/$(file)) + $(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell + $(CD) sys; $(CPL) $(SYS) ../$@,SYS + $(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file)) + $(CD) defs; $(CPL) $(DEFS) ../$@,DEFS + $(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file)) + $(CPL) $(STARTUP) $@,startup + $(OS9ATTR_TEXT) $@,startup + $(MAKDIR) $@,NITROS9 + $(MAKDIR) $@,NITROS9/$(DISTRO) + $(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS + $(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS + $(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file)) + $(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK + $(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL + $(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS + $(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS + $(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF + $(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF + $(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF + $(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF + $(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE + $(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE + $(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file)) + $(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS + $(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS + $(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS + $(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS + $(RM) $(LDSK720K) + $(SOFTLINK) $@ $(LDSK720K) + +info: + @$(ECHO) "*** NitrOS-9/$(CPU) Level $(LEVEL) for the $(MACHINE) ***" + @$(foreach dsk, $(DSKS), $(ECHO) $(dsk);) + diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/modules/defsfile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/modules/defsfile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,1 @@ + use ../defsfile diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/modules/kernel/defsfile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/modules/kernel/defsfile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,1 @@ + use ../../defsfile diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/modules/kernel/makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/modules/kernel/makefile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,34 @@ +ifeq ($(PORT),) + PORT=mc09 +endif +include $(NITROS9DIR)/rules.mak + +vpath %.asm $(LEVEL1)/modules/kernel + +DEPENDS = ./makefile + +KERNEL = krn +KERNELP2 = krnp2 +SYSCALLS = fcmpnam.asm fprsnam.asm + +AFLAGS += -I$(LEVEL1)/modules/kernel + +ALLOBJS = $(KERNEL) $(KERNELP2) + +all: $(ALLOBJS) + +$(KERNEL): krn.asm $(SYSCALLS) + +$(KERNELP2): krnp2.asm $(SYSCALLS) + +clean: + $(RM) $(ALLOBJS) + +showobjs: + @$(ECHO) $(ALLOBJS) + +showcopyobjs: + @$(ECHO) $(COPYOBJS) + +identify: + $(IDENT_SHORT) $(ALLOBJS) diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/modules/makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/modules/makefile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,433 @@ +include ../port.mak + +vpath %.asm $(LEVEL1)/modules + +AFLAGS += -I$(LEVEL1)/modules + +CLOCKELIM = -DRTCElim=1 +CLOCKDISTO2 = -DRTCDsto2=1 +CLOCKDISTO4 = -DRTCDsto4=1 +CLOCKBNB = -DRTCBB=1 +CLOCKSMART = -DRTCSmart=1 -DMPIFlag=1 +CLOCKHARRIS = -DRTCHarrs=1 +CLOCKCLOUD9 = -DRTCCloud9=1 +CLOCKSOFT = -DRTCSoft=1 +CLOCKMESSEMU = -DRTCMessEmu=1 +CLOCKJVEMU = -DRTCJVEmu=1 +TC3FLAGS = $(AFLAGS) -DTC3=1 $(FLAGS) +IDEFLAGS = $(AFLAGS) -DIDE=1 $(FLAGS) +SDFLAGS = $(AFLAGS) -DCOCOSDC=1 -DITTYP=128 $(FLAGS) + +DEPENDS = ./makefile +TPB = $(3RDPARTY)/booters + +BOOTERS = boot_1773_6ms boot_1773_30ms \ + boot_burke boot_rampak boot_wd1002 boot_dw \ + boot_tc3 boot_ide boot_rom boot_dw_becker \ + boot_dw_arduino boot_dw_coco1 boot_sdc +BOOTTRACK = rel $(BOOTERS) +KERNEL = krn krnp2 wbug +SYSMODS = ioman init sysgo_dd sysgo_h0 rominfo rominfo_pak vectors +CLOCKS = clock_60hz clock_50hz mc09clock_50hz\ + clock2_elim clock2_disto2 clock2_disto4 clock2_bnb \ + clock2_smart clock2_harris clock2_cloud9 clock2_soft \ + clock2_messemu clock2_jvemu clock2_dw + +RBF = rbf.mn \ + rbdw.dr dwio.sb dwio_coco1.sb dwio_becker.sb dwio_arduino.sb \ + mc09sdc.dr rb1773.dr rb1773_scii_ff74.dr rb1773_scii_ff58.dr \ + ddd0_35s.dd d0_35s.dd d1_35s.dd d2_35s.dd d3_35s.dd \ + ddd0_40d.dd d0_40d.dd d1_40d.dd d2_40d.dd \ + ddd0_80d.dd d0_80d.dd d1_80d.dd d2_80d.dd \ + dds0_80d.dd s0_80d.dd s1_80d.dd s2_80d.dd s3_80d.dd \ + ddx0.dd x0.dd x1.dd x2.dd x3.dd \ + rbsuper.dr lltc3.dr llide.dr llcocosdc.dr \ + ddi0_ide.dd i0_ide.dd i1_ide.dd ih_ide.dd \ + dds0_tc3.dd s0_tc3.dd s1_tc3.dd s2_tc3.dd s3_tc3.dd s4_tc3.dd \ + s5_tc3.dd s6_tc3.dd sh_tc3.dd \ + ddsd0_cocosdc.dd sd0_cocosdc.dd sd1_cocosdc.dd + +SCF = scf.mn \ + sc6551.dr vrn.dr scbbp.dr scbbt.dr scdwp.dr sspak.dr vtio.dr \ + covdg.io cohr.io co80.io \ + nil.dd p_scbbp.dd p_scdwp.dd pipe.dd ssp.dd \ + term_scbbt.dt term_sc6551.dt t1_scbbt.dd t2_sc6551.dd t3_sc6551.dd \ + mc6850.dr term_mc6850.dt term_mc6850_t0.dt term_mc6850_t1.dt \ + term_vdg.dt term_hr.dt term_80.dt \ + scdwv.dr term_scdwv.dt n_scdwv.dd n1_scdwv.dd n2_scdwv.dd \ + n3_scdwv.dd n4_scdwv.dd n5_scdwv.dd n6_scdwv.dd n7_scdwv.dd \ + n8_scdwv.dd n9_scdwv.dd n10_scdwv.dd n11_scdwv.dd n12_scdwv.dd \ + n13_scdwv.dd midi_scdwv.dd \ + term_z_scdwv.dt z1_scdwv.dd z2_scdwv.dd z3_scdwv.dd z4_scdwv.dd z5_scdwv.dd \ + z6_scdwv.dd z7_scdwv.dd + +PIPE = pipeman.mn \ + piper.dr \ + pipe.dd + +RFM = rfm.mn rfmdrv.dr ddy0.dd y0.dd y1.dd y2.dd y3.dd + +ALLOBJS = $(BOOTTRACK) $(KERNEL) $(SYSMODS) $(CLOCKS) $(RBF) $(SCF) $(PIPE) $(RFM) + +all: $(ALLOBJS) + +# Kernel +krn krnp2: + $(CD) kernel; make $@ + $(OS9COPY) kernel/$@ . + +# Special cases + +rominfo_pak: rominfo.asm + $(AS) $(ASOUT)$@ $< $(AFLAGS) -DROMPak=1 + +# TC^3 SCSI Booter +boot_tc3: boot_scsi.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) + +# SuperIDE/Glenside IDE Booter +boot_ide: boot_ide.asm + $(AS) $(ASOUT)$@ $< $(IDEFLAGS) + +# CoCo SDC Booter +boot_sdc: boot_sdc.asm + $(AS) $(ASOUT)$@ $< $(SDFLAGS) + +# DriveWire Becker Booter +boot_dw_becker: boot_dw.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DBECKER=1 + +# DriveWire Becker Submodule +dwio_becker.sb: dwio.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DBECKER=1 + +# DriveWire Arduino Booter +boot_dw_arduino: boot_dw.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DARDUINO=1 + +# DriveWire Arduino Submodule +dwio_arduino.sb: dwio.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DARDUINO=1 + +# DriveWire CoCo1 Booter +boot_dw_coco1: boot_dw.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DBAUD38400=1 + +# DriveWire CoCo1 Submodule +dwio_coco1.sb: dwio.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DBAUD38400=1 + +# DriveWire 3 +boot_1773_6ms: boot_1773.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=0 -DSTEP=0 + +boot_1773_30ms: boot_1773.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=0 -DSTEP=3 + +rb1773_scii_ff74.dr: rb1773.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DSCII=1 + +rb1773_scii_ff58.dr: rb1773.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DSCII=1 -DSCIIALT=1 + +# TC^3 SCSI Driver +lltc3.dr: llscsi.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) + +# IDE Driver +llide.dr: llide.asm + $(AS) $(ASOUT)$@ $< $(IDEFLAGS) + +# Floppy descriptors +SSDD35 = -DCyls=35 -DSides=1 -DSectTrk=18 -DSectTrk0=18 \ + -DInterlv=3 -DSAS=8 -DDensity=1 +DSDD40 = -DCyls=40 -DSides=2 -DSectTrk=18 -DSectTrk0=18 \ + -DInterlv=3 -DSAS=8 -DDensity=1 +DSDD80 = -DCyls=80 -DSides=2 -DSectTrk=18 -DSectTrk0=18 \ + -DInterlv=3 -DSAS=8 -DDensity=1 -DD35 + +# HDB-DOS for SuperDriver +HDBDOS = -DHB $(SSDD35) -DITDNS=8 $(ID0) + +ddd0_35s.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(SSDD35) -DDNum=0 -DDD=1 + +d0_35s.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(SSDD35) -DDNum=0 + +d1_35s.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(SSDD35) -DDNum=1 + +d2_35s.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(SSDD35) -DDNum=2 + +d3_35s.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(SSDD35) -DDNum=3 + +ddd0_40d.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD40) -DDNum=0 -DDD=1 + +d0_40d.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD40) -DDNum=0 + +d1_40d.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD40) -DDNum=1 + +d2_40d.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD40) -DDNum=2 + +ddd0_80d.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD80) -DDNum=0 -DDD=1 + +d0_80d.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD80) -DDNum=0 + +d1_80d.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD80) -DDNum=1 + +d2_80d.dd: rb1773desc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD80) -DDNum=2 + +# OFFSET is the high 16 bits of the 24-bit block address +# where the disk image starts on the SDcard. It must match +# the value used in the create_sd_image script. Needs to be +# expressed in DECIMAL here (at least, I don't know how to pass +# it in and have it treated as hex) +dds0_80d.dd: mc09sdcdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=0 -DDD=1 -DOFFSET=640 + +s0_80d.dd: mc09sdcdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=0 -DOFFSET=640 + +s1_80d.dd: mc09sdcdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=1 -DOFFSET=656 + +s2_80d.dd: mc09sdcdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=2 -DOFFSET=672 + +s3_80d.dd: mc09sdcdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=3 -DOFFSET=688 + +# Serial ports for mc09 +term_mc6850_t0.dt: term_mc6850.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DTNum=0 -DHwBASE=0xFFD2 + +term_mc6850_t1.dt: term_mc6850.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DTNum=1 -DHwBASE=0xFFD4 + + + + +# DriveWire 3 SCF descriptors +term_scdwv.dt: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=0 + +n_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=255 + +n1_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=1 + +n2_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=2 + +n3_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=3 + +n4_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=4 + +n5_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=5 + +n6_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=6 + +n7_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=7 + +n8_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=8 + +n9_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=9 + +n10_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=10 + +n11_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=11 + +n12_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=12 + +n13_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=13 + +midi_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=14 + +term_z_scdwv.dt: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=16 + +z1_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=17 + +z2_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=18 + +z3_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=19 + +z4_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=20 + +z5_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=21 + +z6_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=22 + +z7_scdwv.dd: scdwvdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=23 + +# DriveWire 3 RBF descriptors +ddx0.dd: dwdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDD=1 -DDNum=0 + +x0.dd: dwdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=0 + +x1.dd: dwdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=1 + +x2.dd: dwdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=2 + +x3.dd: dwdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=3 + +# TC^3 SCSI Descriptors +dds0_tc3.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) $(ID0) -DDD=1 + +s0_tc3.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) $(ID0) $(SCSI_HD) + +s1_tc3.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) $(ID1) $(SCSI_HD) + +s2_tc3.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) $(ID2) $(SCSI_HD) + +s3_tc3.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) $(ID3) $(SCSI_HD) + +s4_tc3.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) $(ID4) $(SCSI_HD) + +s5_tc3.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) $(ID5) $(SCSI_HD) + +s6_tc3.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) $(ID6) $(SCSI_HD) + +sh_tc3.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(TC3FLAGS) $(HDBDOS) + +# IDE Descriptors +ddi0_ide.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(IDEFLAGS) $(MASTER) -DDD=1 + +i0_ide.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(IDEFLAGS) $(MASTER) + +i1_ide.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(IDEFLAGS) $(SLAVE) + +ih_ide.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(IDEFLAGS) $(HDBDOS) + +# CoCo SDC Descriptors +ddsd0_cocosdc.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(SDFLAGS) -DDD=1 + +sd0_cocosdc.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(SDFLAGS) -DITDRV=0 + +sd1_cocosdc.dd: superdesc.asm + $(AS) $(ASOUT)$@ $< $(SDFLAGS) -DITDRV=1 + +# RFM descriptors +ddy0.dd: rfmdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDD=1 -DDNum=0 + +y0.dd: rfmdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=0 + +y1.dd: rfmdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=1 + +y2.dd: rfmdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=2 + +y3.dd: rfmdesc.asm + $(AS) $< $(ASOUT)$@ $(AFLAGS) -DDNum=3 + +rel: rel.asm + $(AS) $(AFLAGS) $(ASOUT)$@ $< + +sysgo_dd: sysgo.asm + $(AS) $(AFLAGS) $(ASOUT)$@ $< -DDD=1 + +sysgo_h0: sysgo.asm + $(AS) $(AFLAGS) $(ASOUT)$@ $< + +# Clocks +clock_60hz: clock.asm + $(AS) $(AFLAGS) $(ASOUT)$@ $< -DPwrLnFrq=60 + +clock_50hz: clock.asm + $(AS) $(AFLAGS) $(ASOUT)$@ $< -DPwrLnFrq=50 + +mc09clock_50hz: mc09clock.asm + $(AS) $(AFLAGS) $(ASOUT)$@ $< -DPwrLnFrq=50 + +clock2_bnb: clock2_ds1315.asm + $(AS) $(AFLAGS) $(ASOUT)$@ $< -DBNB=1 + +clock2_cloud9: clock2_ds1315.asm + $(AS) $(AFLAGS) $(ASOUT)$@ $< -DCLOUD9=1 + +clean: + $(CD) kernel; make $@ + $(RM) $(ALLOBJS) + +showobjs: + @$(ECHO) $(ALLOBJS) + +showboottrack: + @$(ECHO) $(BOOTTRACK) + +showkernel: + @$(ECHO) $(KERNEL) + +showsysmods: + @$(ECHO) $(SYSMODS) + +showclocks: + @$(ECHO) $(CLOCKS) + +showrbf: + @$(ECHO) $(RBF) + +showscf: + @$(ECHO) $(SCF) + +showpipe: + @$(ECHO) $(PIPE) + +identify: + $(IDENT_SHORT) $(ALLOBJS) + + diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/port.mak --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/port.mak Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,8 @@ +PORT = mc09 +MACHINE = Multicomp09 FPGA-based Computer +CPU = 6809 +LEVEL = 1 +TELNET_PORT = 6802 +HTTPD_PORT = 8802 + +include $(NITROS9DIR)/rules.mak diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/scripts/mb.dw --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/scripts/mb.dw Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,30 @@ +-t +-x +tmode .1 pau=0 +echo * NitrOS-9 Level 1 Boot Creation Script +echo * +echo * This script creates a bootable DriveWire 3 disk image +echo * using the dw.bl bootlist file. +echo * +echo * The resulting disk will boot NitrOS-9 from DriveWire drive 0. +echo * +prompt Insert a blank disk in /x1 and press a key: +echo * +echo * Step 1: Format disk in /x1 +format /x1 "NitrOS-9 Level 1 Boot Disk" r +ynn +echo * +echo * Step 2: Create a custom boot track +del bttemp +merge ../MODULES/BOOTTRACK/rel ../MODULES/KERNEL/krn ../MODULES/KERNEL/krnp2 ../MODULES/SYSMODS/init ../MODULES/BOOTTRACK/boot_dw>bttemp +echo * +echo * Step 3: Create the bootfile and boot track +os9gen /x1 -t=bttemp<../BOOTLISTS/dw.bl +del bttemp +echo * +echo * Step 4: Populate the disk with essential files +copy ../MODULES/SYSMODS/sysgo_dd /x1/sysgo +makdir /x1/CMDS +copy -w=/x1/CMDS ../CMDS/shell +echo * +echo * We're done diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/scripts/mb.floppy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/scripts/mb.floppy Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,29 @@ +-t +-x +tmode .1 pau=0 +echo * NitrOS-9 Level 1 Boot Creation Script +echo * +echo * This script creates a bootable floppy disk +echo * using the standard.bl bootlist file. +echo * +echo * The resulting disk will boot NitrOS-9 from drive 0. +echo * +prompt Insert a blank disk in /d0 and press a key: +echo * +echo * Step 1: Format disk in /d0 +format /d0 "NitrOS-9 Level 1 Boot Disk" r +echo * +echo * Step 2: Create a custom boot track +del bttemp +merge ../MODULES/BOOTTRACK/rel ../MODULES/KERNEL/krn ../MODULES/KERNEL/krnp2 ../MODULES/SYSMODS/init ../MODULES/BOOTTRACK/boot_1773_6ms>bttemp +echo * +echo * Step 3: Create the bootfile and boot track +os9gen /d0 -t=bttemp<../BOOTLISTS/standard.bl +del bttemp +echo * +echo * Step 4: Populate the disk with essential files +copy ../MODULES/SYSMODS/sysgo_dd /d0/sysgo +makdir /d0/CMDS +copy -w=/d0/CMDS ../CMDS/shell +echo * +echo * We're done diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/startup --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/startup Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,6 @@ +* Echo welcome message +echo * Welcome to NitrOS-9 Level 1 on the Multicomp09 * +* Start system time from keyboard +setime $@ + +alldragon: $(ALLOBJS) + +helpmsg: $(HELPFILES) + $(MERGE) $^ > $@ + +clean: + $(RM) $(HELPMSG) inetd.conf + +showobjs: + @$(ECHO) $(ALLOBJS) diff -r 460fdd304adf -r 174eb9eda7b1 level1/mc09/wwwroot/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/mc09/wwwroot/Makefile Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,1 @@ +include ../../wwwroot/Makefile diff -r 460fdd304adf -r 174eb9eda7b1 level1/modules/mc09clock.asm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/modules/mc09clock.asm Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,273 @@ +******************************************************************** +* Clock - NitrOS-9 System Clock +* +* $Id$ +* +* Edt/Rev YYYY/MM/DD Modified by +* Comment +* ------------------------------------------------------------------ +* 2015/09/09 Neal Crook +* Created from clock.asm version 9r8. This version for 50Hz timer on +* multicomp09. + + +* [NAC HACK 2015Sep09] Inherited behaviour: this just stomps into +* D.IRQ so I assume that nothing could have been there before (ie +* because it's the "owner" of this vector). If there is an interrupt +* that is NOT a timer interrupt we jump through D.SvcIRQ, which is +* the list of other devices that might want to claim the interrupt. +* At the end of the timer interrupt service routine (ISR) we don't +* jump through D.SvcIRQ. The assumption is that there is only one +* interruptor. If that assumption tests false, the interrupt will +* still be asserted and we'll come straight back into this ISR. +* The timer ISR checks something and considers dispatching through +* AltIRQ. What's that all about? + + + nam Clock + ttl NitrOS-9 System Clock + + use defsfile + +tylg set Systm+Objct +atrv set ReEnt+rev +rev set 8 +edition set 9 + +*------------------------------------------------------------ +* For a detailed hardware description of the Multicomp09 +* timer, refer to mc09.d +* + +*------------------------------------------------------------ +* +* Start of module +* + mod len,name,tylg,atrv,init,0 + +name fcs "Clock" + fcb edition + + +TkPerTS equ TkPerSec/10 ticks per time slice + +* +* Table to set up Service Calls +* +NewSvc fcb F$Time + fdb FTime-*-2 + fcb F$VIRQ + fdb FVIRQ-*-2 + fcb F$STime + fdb FSTime-*-2 + fcb $80 end of service call installation table + + +*------------------------------------------------------------ +* +* Handle F$STime system call +* +* First, copy time packet from user address space to system time +* variables, then fall through to code to update RTC. +* +FSTime equ * + ldx R$X,u + ldd ,x + std $FFFE level 1: jump to reset vector + +LinkOk + puls cc,dp ; Restore saved dp and cc + sty D.SvcIRQ] else service other possible IRQ +TimInt + dec D.Poll] poll ISRs + bcc L00AE keep polling until carry set +GoAltIRQ + jmp [>D.AltIRQ] jump into an alternate IRQ if available +DelEntry + bsr DelVIRQ delete the VIRQ entry + bra L0096 + +UsrPoll leay >up@,pcr point to routine to execute + jmp [>D.URtoSs] User to System +up@ jsr [>D.Poll] call polling routine + bcc up@ keep polling until carry set + ldx successful completion + rts + + +******************************************************************* +* Write +* Entry: +* B = MSB of LSN +* X = LSB of LSN +* Y = address of path descriptor +* U = address of device memory area +* +* Exit: +* CC = carry set on error +* B = error code +* +* [NAC HACK 2015Sep04] LdSDArs should take care of selecting the right offset +* based on the drive that's selected. +Write + bsr LdSDAdrs set up address in controller + ldx PD.BUF,y Get physical sector buffer ptr + +* wait for previous command (if any) to complete +WrBiz lda SDCTL + cmpa #$80 + bne WrBiz + +* issue the write command to the sdcard controller + lda #1 + sta SDCTL + +* transfer 512 bytes, waiting for each in turn. Only have 256 +* bytes so transfer them twice + pshs x preserve data source + clrb zero is like 256 +WrDBiz lda SDCTL + cmpa #$a0 + bne WrDBiz space not available + lda ,x+ get byte from buffer + sta SDDATA store to SD + decb + bne WrDBiz next + + puls x restore data source for 2nd copy +WrDBiz2 lda SDCTL b is zero (like 256) + cmpa #$a0 + bne WrDBiz2 space not available + lda ,x+ get byte from buffer + sta SDDATA store to SD + decb + bne WrDBiz2 next + + clra clear carry => successful completion + rts + + +******************************************************************* +* SET SDLBA2 SDLBA1 SDLBA0 FOR NEXT SD OPERATION +* 1. The 16-bit value stored at $2D,Y is the upper 16 bits of the +* base block address of the disk image on the SDcard +* 2. If this value is QQQQ, add QQQQ00 to {B,XH,XL} to form the +* value inot the hardware registers. +* 2. Load lsn0cp with the number of bytes to be copied into the +* LSN0 buffer - if {B,XH,XL} == 0, this DD.SIZ. Otherwise, +* it is 0. Loaded for every operation, only used for Read. +* +* Can destroy A, B, X, CC +* +* It is a constraint that the disk image is aligned so that the +* low 8-bits of its offset are 0 (ie, it is on a 256*512 byte +* boundary). Therefore, the incoming XL value needs no manipulation +* +* [NAC HACK 2015Sep04] hack! the hardware addresses should be +* offsets from the base address stored in the device's data structure. +LdSDAdrs clr lsn0cp,u default: copy nothing + pshs b + + pshs x copy of X to pull off byte by byte + addb ,s+ form b+xl + adcb ,s+ form b+xl+xh + bne notlsn0 it is not LSN0. We're done. + ldb #DD.SIZ + stb lsn0cp,u it is LSN0, need to copy this many bytes + +notlsn0 tfr x,d + stb SDLBA0 ls byte is done. + + ldb $2D,y bits 23:16 of drive base + + adda $2E,y add bits 15:8 of drive base + sta SDLBA1 middle byte is done + + adcb #$00 add carry from middle byte + addb ,s+ add and drop stacked b + stb SDLBA2 + rts + + emod +eom equ * + end + diff -r 460fdd304adf -r 174eb9eda7b1 level1/modules/mc09sdcdesc.asm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/modules/mc09sdcdesc.asm Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,92 @@ +******************************************************************** +* mc09sdcdesc - Multicomp09 SDCC Device Descriptor Template +* +* $Id$ +* +* Edt/Rev YYYY/MM/DD Modified by +* Comment +* ------------------------------------------------------------------ +* 2015/08/31 ncrook +* Created from 1773 descriptor template + + nam mc09sddesc + ttl Multicomp09 SDCC Device Descriptor Template + + use defsfile + +tylg set Devic+Objct +atrv set ReEnt+rev +rev set $00 + +* [NAC HACK 2015Sep04] this data structure is described in the TechRef so +* I assume it is Required. The DNum/Type are swapped in the TechRef (Type +* is first) Error here or there? + IFNDEF DNum +DNum set 0 + ENDC +* [NAC HACK 2015Sep02] not sure whether the fact I'm emulating a floppy means +* that I need all this stuff, eg for interacting with LSN0? Reconsider later +* and maybe strip it all out + IFNE D35 +Type set TYP.CCF+TYP.3 + ELSE +Type set TYP.CCF+TYP.5 + ENDC + IFNDEF Density +Density set DNS.MFM + ENDC +Step set STP.6ms + IFNDEF Cyls +Cyls set 35 + ENDC + IFNDEF Sides +Sides set 1 + ENDC +Verify set 1 + IFNDEF SectTrk +SectTrk set 18 + ENDC + IFNDEF SectTrk0 +SectTrk0 set 18 + ENDC + IFNDEF Interlv +Interlv set 3 + ENDC + IFNDEF SAS +SAS set 8 + ENDC + + mod eom,name,tylg,atrv,mgrnam,drvnam + + fcb DIR.!SHARE.!PEXEC.!PWRIT.!PREAD.!EXEC.!UPDAT. mode byte + fcb HW.Page extended controller address + fdb $FFD8 physical controller (base) address + fcb initsize-*-1 initialization table size + fcb DT.RBF device type:0=scf,1=rbf,2=pipe,3=scf + fcb DNum drive number + fcb Step step rate + fcb Type drive device type + fcb Density media density:0=single,1=double + fdb Cyls number of cylinders (tracks) + fcb Sides number of sides + fcb Verify verify disk writes:0=on + fdb SectTrk # of sectors per track + fdb SectTrk0 # of sectors per track (track 0) + fdb OFFSET high 16 bits of 24-bit block address on +* SDcard where this disk image starts. +**nac removed but (for now) keep the entry the same size +**nac fcb Interlv sector interleave factor +**nac fcb SAS minimum size of sector allocation +initsize equ * + + IFNE DD +name fcs /DD/ + ELSE +name fcb 'D,'0+DNum+$80 + ENDC +mgrnam fcs /RBF/ +drvnam fcs /mc09sd/ + + emod +eom equ * + end diff -r 460fdd304adf -r 174eb9eda7b1 lib/mc09.as --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/mc09.as Sat Oct 17 21:21:11 2015 +0100 @@ -0,0 +1,8 @@ + use sys6809l1.as + + section _constant + + use ../defs/mc09.d + use ../defs/mc09vtio.d + + endsect