Mercurial > hg > Members > kono > nitros9-code
diff level1/atari/modules/sysgo.asm @ 2618:e6507f116064
Atari port now boots
author | Boisy Pitre <boisy.pitre@nuance.com> |
---|---|
date | Wed, 22 Feb 2012 06:38:54 -0600 |
parents | |
children | d888412d8118 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/atari/modules/sysgo.asm Wed Feb 22 06:38:54 2012 -0600 @@ -0,0 +1,232 @@ +******************************************************************** +* SysGo - Kickstart program module +* +* $Id$ +* +* Edt/Rev YYYY/MM/DD Modified by +* Comment +* ------------------------------------------------------------------ +* 5 1998/10/12 Boisy G. Pitre +* Taken from OS-9 L2 Tandy distribution and modified banner for V3. +* +* 5r2 2003/01/08 Boisy G. Pitre +* Fixed fork behavior so that if 'shell startup' fails, system doesn't +* jmp to Crash, but tries AutoEx instead. Also changed /DD back to /H0 +* for certain boot floppy cases. +* +* 2003/09/04 Boisy G. Pitre +* Back-ported to OS-9 Level One. +* +* 5r3 2003/12/14 Boisy G. Pitre +* Added SHIFT key check to prevent startup/autoex from starting if +* held down. Gene Heskett, this Bud's for you. + + nam SysGo + ttl Kickstart program module + + IFP1 + use defsfile + use scfdefs + ENDC + +tylg set Prgrm+Objct +atrv set ReEnt+rev +rev set $03 +edition set $05 + + mod eom,name,tylg,atrv,start,size + + + org 0 +InitAddr rmb 2 + rmb 250 +size equ . + +name fcs /SysGo/ + fcb edition + +* Default process priority +DefPrior set 128 + +Banner equ * + fcc /(C) 2012 The NitrOS-9 Project/ +CrRtn fcb C$CR,C$LF + IFNE NOS9DBG + fcc "** DEVELOPMENT BUILD **" + fcb C$CR,C$LF + fcc "** NOT FOR DISTRIBUTION! **" + fcb C$CR,C$LF + ENDC + dts + fcb C$CR,C$LF + fcc !http://www.nitros9.org! + fcb C$CR,C$LF + fcb C$LF +BannLen equ *-Banner + + IFEQ ROM +DefDev equ * + IFNE DD + fcc "/DD" + ELSE + fcc "/H0" + ENDC + fcb C$CR +HDDev equ * + IFNE DD + fcc "/DD/" + ELSE + fcc "/H0/" + ENDC +ExecDir fcc "CMDS" + fcb C$CR + ENDC + +Shell fcc "Shell" + fcb C$CR +AutoEx fcc "mfree" + fcb C$CR + + IFEQ ROM +Startup fcc "startup -p" + fcb C$CR +StartupL equ *-Startup + ENDC + +ShellPrm equ * + IFGT Level-1 + fcc "i=/1" + ENDC +CRtn fcb C$CR +ShellPL equ *-ShellPrm + +* Default time packet +DefTime dtb + +Init fcs /Init/ + +* Entry: X = pointer to start of nul terminated string +* Exit: D = length of string +strlen pshs x + ldd #-1 +go@ addd #$0001 + tst ,x+ + bne go@ + puls x,pc + +WriteCR pshs y + leax CrRtn,pcr + ldy #$0001 + os9 I$WritLn + puls y,pc + +* SysGo Entry Point +start + leax >IcptRtn,pcr + os9 F$Icpt +* Set priority of this process + os9 F$ID + ldb #DefPrior + os9 F$SPrior + +* Write OS name and Machine name strings + leax Init,pcr + clra + pshs u + os9 F$Link + bcs SignOn + stx <InitAddr + ldd OSName,u point to OS name in INIT module + leax d,u point to install name in INIT module + bsr strlen + tfr d,y + lda #$01 + os9 I$Write + bsr WriteCR + ldd InstallName,u + leax d,u point to install name in INIT module + bsr strlen + tfr d,y + lda #$01 + os9 I$Write + bsr WriteCR + +* Show rest of banner +SignOn + puls u + leax >Banner,pcr + ldy #BannLen + lda #$01 standard output + os9 I$Write write out banner + +* Set default time + leax >DefTime,pcr + os9 F$STime set time to default + IFEQ ROM +* Change EXEC and DATA dirs + leax >ExecDir,pcr + lda #EXEC. + os9 I$ChgDir change exec. dir + leax >DefDev,pcr +* Made READ. so that no write occurs at boot (Boisy on Feb 5, 2012) +* lda #READ.+WRITE. + lda #READ. + os9 I$ChgDir change data dir. + bcs L0125 + leax >HDDev,pcr + lda #EXEC. + os9 I$ChgDir change exec. dir to HD + ENDC + +L0125 equ * + pshs u,y + IFEQ ROM +* Fork shell startup here +* Added 12/14/03: If SHIFT is held down, startup is not run + lda #$01 standard output + ldb #SS.KySns + os9 I$GetStt + bcs DoStartup + bita #SHIFTBIT SHIFT key down? + bne L0186 Yes, don't to startup or autoex +DoStartup leax >Shell,pcr + leau >Startup,pcr + ldd #256 + ldy #StartupL + os9 F$Fork + bcs DoAuto + os9 F$Wait + ENDC +* Fork AutoEx here +DoAuto leax >AutoEx,pcr + leau >CRtn,pcr + ldd #$0100 + ldy #$0001 + os9 F$Fork + bcs L0186 + os9 F$Wait + bra DoAuto +L0186 equ * + puls u,y +FrkShell leax >ShellPrm,pcr + leay ,u + ldb #ShellPL +L0190 lda ,x+ + sta ,y+ + decb + bne L0190 +* Fork final shell here + leax >Shell,pcr + lda #$01 D = 256 (B already 0 from above) + ldy #ShellPL + os9 F$Fork + bcs DeadEnd + os9 F$Wait + bcc FrkShell +DeadEnd bra DeadEnd + +IcptRtn rti + + emod +eom equ * + end