# HG changeset patch # User afra # Date 1130981770 0 # Node ID d141618d38df16761a50f45e3340fd0e2fd37a13 # Parent 311bb8001b959c360bc610229a5339f0755ce40d Can now be compiled to cobble CoCo or Dragon disks. diff -r 311bb8001b95 -r d141618d38df level1/cmds/cobbler.asm --- a/level1/cmds/cobbler.asm Sat Oct 29 17:41:54 2005 +0000 +++ b/level1/cmds/cobbler.asm Thu Nov 03 01:36:10 2005 +0000 @@ -11,6 +11,10 @@ * * 2002/07/20 Boisy G. Pitre * Modified source to allow for OS-9 Level One and Level Two assembly. +* +* 2005/11/03 P.Harvey-Smith. +* Added the ability to assemble for either CoCo or Dragon. +* nam Cobbler ttl Write OS9Boot to a disk @@ -30,30 +34,31 @@ mod eom,name,tylg,atrv,start,size - org 0 -lsn0buff rmb 26 -newbpath rmb 1 -devpath rmb 3 -u001E rmb 2 -fullbnam rmb 20 this buffer hodls the entire name (i.e. /D0/OS9Boot) -u0034 rmb 16 -u0044 rmb 7 -u004B rmb 2 -u004D rmb 1 -u004E rmb 16 -pathopts rmb 20 -u0072 rmb 2 -u0074 rmb 10 -bffdbuf rmb 16 -u008E rmb 1 -u008F rmb 7 -u0096 rmb 232 -bitmbuf rmb 1024 - IFGT Level-1 -u057E rmb 76 -u05CA rmb 8316 - ENDC -size equ . + org 0 +lsn0buff rmb 26 Buffer to hold data from LSN0 of traget device +newbpath rmb 1 +devpath rmb 3 +EndDevName rmb 2 pointer to last character of device name when moving to fullbnam +fullbnam rmb 20 this buffer hodls the entire name (i.e. /D0/OS9Boot) +u0034 rmb 16 +BootBuf rmb 7 Area to read part of current boot area into, to check for boot stuff +u004B rmb 2 +LSNBitmapByte rmb 1 Saved byte from bitmap, of current LSN +u004E rmb 16 +pathopts rmb 20 +u0072 rmb 2 +u0074 rmb 10 +bffdbuf rmb 16 +u008E rmb 1 +u008F rmb 7 +u0096 rmb 232 +bitmbuf rmb 1024 + + IFGT Level-1 +u057E rmb 76 +u05CA rmb 8316 + ENDC +size equ . name fcs /Cobbler/ fcb edition @@ -74,10 +79,21 @@ fcb C$LF fcc "Error - cannot gen to hard disk" fcb C$CR + + IFNE DRAGON +FileWarn fcb C$LF + fcc "Warning - not a Dragon " + fcb C$LF + fcc "disk." + + ELSE FileWarn fcb C$LF fcc "Warning - file(s) present" fcb C$LF fcc "on track 34 - this track" + + ENDC + fcb C$LF fcc "not rewritten." fcb C$CR @@ -94,64 +110,76 @@ RelNam fcc "Rel" fcb $FF -start clrb +DragonRootSec equ $12 Dragon root sector is always LSN 18 + +start clrb Check first char is a / lda #PDELIM cmpa ,x lbne ShowHelp - os9 F$PrsNam - lbcs ShowHelp - lda #PDELIM + + os9 F$PrsNam Parse the name + lbcs ShowHelp Error : show help + + lda #PDELIM Check that path has only one / e.g. '/d1' cmpa ,y - lbeq ShowHelp - leay BootName,pcr - lda #PDELIM -L0162 sta ,x+ + leax BootName,pcr Get pointer to boot file name + lda #PDELIM Append path delimiter e.g. '/d1/' +L0162 sta ,x+ Append boot name to dev name e.g. '/d1/OS9Boot' lda ,y+ bpl L0162 + pshs u clra clrb tfr d,x tfr d,u lda D.BTHI get bootfile size + ldd >D.BTHI get bootfile size subd >D.BTLO - tfr d,y in D, tfr to Y - std D.BTLO get pointer to boot in mem + tfr d,y in D, tfr to Y + std D.BTLO get pointer to boot in mem lda bffdbuf+(FD.SEG+FDSL.S+FDSL.B),u - lbne IsFragd branch if fragmented -* Get and save bootfile's LSN + os9 I$Read read in filedes sector + lbcs Bye Error: exit + ldd >bffdbuf+(FD.SEG+FDSL.S+FDSL.B),u Test if fragmented + lbne IsFragd branch if fragmented + +* Get and save bootfile's LSN ldb >bffdbuf+(FD.SEG),u stb bffdbuf+(FD.SEG+1),u std bitmbuf,u Point to bitmap buffer + ldy bitmbuf,u ldy bitmbuf,u - ldy RelNam,pcr os9 F$Link lbcs NoRel - tfr u,d tfr module header to D - puls u get statics ptr + tfr u,d tfr module header to D + puls u get statics ptr subd #$0006 - std bitmbuf,u point X to our bitmap buffer - bsr L038C - sta ,-s save off + bsr GetBitmapBit + + sta ,-s save off bmi L03CB - lda ,x - sta bitmbuf,u - bsr L038C - sta ,-s + leax >bitmbuf,u Point to bitmap buffer + bsr GetBitmapBit Get bit corisponding to LSN + + sta ,-s Save it bmi L041C + lda ,x L040E ora ,s leay -$01,y beq L043A + lsr ,s bcc L040E + sta ,x leax $01,x L041C lda #$FF bra L0426 + L0420 sta ,x leax $01,x leay -$08,y L0426 cmpy #$0008 bhi L0420 beq L043A + L042E lsra leay -$01,y bne L042E + coma sta ,s lda ,x @@ -457,6 +549,10 @@ leas $01,s puls pc,y,x,b,a +* +* Seek To LSN, A=track, B=sector +* + Seek2LSN pshs u,y,x,b,a lbsr AbsLSN pshs a @@ -479,7 +575,8 @@ tfr d,u lda BootFrag,pcr clrb - bra L0477 + bra DisplayErrorAndExit WriteBad leax >WritErr,pcr clrb - bra L0477 + bra DisplayErrorAndExit TrkAlloc leax >FileWarn,pcr clrb - bra L0477 + bra DisplayErrorAndExit IFGT Level-1 NoRel leax >RelMsg,pcr - bra L0477 + bra DisplayErrorAndExit ENDC emod