The GitLab server is undergoing maintenance from 1.30pm BST today and will be unavailable at times

Commit 9e72fbb5 authored by Kevin Bracey's avatar Kevin Bracey
Browse files

Spinner and Ursula branches merged.

Ursula branch had lost some previous Spinner changes. These have been
restored.
Changed to use srccommit.

Version 0.36. Tagged as 'Obey-0_36'
parent ae5abced
......@@ -60,11 +60,21 @@ clean:
$(RM) $(TARGET)
@echo ${COMPONENT}: cleaned
resources:
${MKDIR} ${RESDIR}.${COMPONENT}
${CP} Resources.${LOCALE}.Messages ${RESDIR}.${COMPONENT}.Messages ${CPFLAGS}
resources: resources-${CMDHELP}
@echo ${COMPONENT}: resource files copied
resources_common:
${MKDIR} ${RESDIR}.${COMPONENT}
TokenCheck LocalRes:Messages
${CP} LocalRes:Messages ${RESDIR}.${COMPONENT}.Messages ${CPFLAGS}
resources-None: resources_common
@
resources-: resources_common
TokenCheck LocalRes:CmdHelp
print LocalRes:CmdHelp { >> ${RESDIR}.${COMPONENT}.Messages }
$(TARGET): $(SOURCE)
$(AS) $(ASFLAGS) $(SOURCE)
......
No preview for this file type
; > Version
GBLA Version
GBLS VString
GBLS Date
Version SETA 034 ; 007
VString SETS "0.34" ; "0.07"
Date SETS "24 Jan 1995" ; "08 Aug 1988"
END
......@@ -6,9 +6,9 @@
GBLS Module_MinorVersion
GBLS Module_Date
GBLS Module_FullVersion
Module_MajorVersion SETS "0.35"
Module_Version SETA 35
Module_MajorVersion SETS "0.36"
Module_Version SETA 36
Module_MinorVersion SETS ""
Module_Date SETS "05 Aug 1999"
Module_FullVersion SETS "0.35"
Module_FullVersion SETS "0.36"
END
/* (0.35)
/* (0.36)
*
* This file is automatically maintained by srccommit, do not edit manually.
*
*/
#define Module_MajorVersion_CMHG 0.35
#define Module_MajorVersion_CMHG 0.36
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 05 Aug 1999
#define Module_MajorVersion "0.35"
#define Module_Version 35
#define Module_MajorVersion "0.36"
#define Module_Version 36
#define Module_MinorVersion ""
#define Module_Date "05 Aug 1999"
#define Module_FullVersion "0.35"
#define Module_FullVersion "0.36"
......@@ -48,6 +48,7 @@
;; Fix BuffOflow tag to BufOFlo
;; 24-Jan-95 0.34 OM SPECIAL VERSION: -m flag allows caching from a block of memory
;; instead of a file.
;; 05-Aug-99 0.36 Ursula long command and service call tables merged.
;;----------------------------------------------------------------------------
Module_BaseAddr
......@@ -66,7 +67,7 @@ Module_BaseAddr
GET hdr:NdrDebug
GET hdr:MsgTrans
GET Version
GET VersionASM
GBLL debugxx
GBLL debugcommand
......@@ -85,7 +86,15 @@ debugmode SETL false ; checking for SVC mode on EXIT handler
debugexit SETL false ; checking exit handler
hostvdu SETL true
internat SETL true :LAND: Version >=20 ; should we internationalise
internat SETL true :LAND: Module_Version >=20 ; should we internationalise
GBLL LongCommandLines
LongCommandLines SETL {TRUE} ;introduced for Ursula
[ LongCommandLines
LongCLISize * 1024 ;long command line length
LongPNameSize * 512 ;long pathname length (for obey$dir)
]
;;----------------------------------------------------------------------------
;; Module header
......@@ -111,7 +120,10 @@ internat SETL true :LAND: Version >=20 ; should we internationa
]
Title DCB "Obey",0
Helpstr DCB "Obey",9,9,"$VString ($Date)"
Helpstr DCB "Obey",9,9,"$Module_MajorVersion ($Module_Date)"
[ Module_MinorVersion <> ""
DCB " $Module_MinorVersion"
]
[ debug
DCB " Development version"
]
......@@ -146,7 +158,11 @@ Obey_Syntax DCB "SOBYOBY", 0
;; Workspace
;;----------------------------------------------------------------------------
[ LongCommandLines
wk_buflen * LongCLISize
|
wk_buflen * 256
]
^ 0
wk_link # 4
......@@ -208,11 +224,23 @@ svc_reset
;.............................................................................
ASSERT Service_Reset < Service_NewApplication
ServiceTable
DCD 0 ;flags word
DCD UrsulaService - Module_BaseAddr ;offset to handler (skip pre-rejection)
DCD Service_Reset ;service 1
DCD Service_NewApplication ;service 2
DCD 0 ;terminator
DCD ServiceTable - Module_BaseAddr ;anchor (offset to table)
Service
MOV R0,R0 ;magic instruction for Ursula format
TEQ R1,#Service_Reset
TEQNE R1,#Service_NewApplication
MOVNES PC,LR
UrsulaService
TEQ R1,#Service_Reset
BEQ svc_reset
TEQ R1,#Service_NewApplication
MOVNE PC,LR
;
; Here we see if we can find a block for this application
; (identified by quit handler), with its file closed
......@@ -663,8 +691,17 @@ MyExitHandler ROUT
; Entry: R0 --> parameters
; R1 = number of parameters
[ LongCommandLines
;avoid the exceedingly naff method of XOS_CLI to *Set Obey$Dir, since it
;is needlessly slow (use XOS_SetVarVal instead)
;
obeydir_name DCB "Obey$Dir",0
ALIGN
|
obeydir DCB "Set Obey$Dir "
ASSERT (.-obeydir)=16
]
csdname DCB "@",0
ALIGN
......@@ -713,13 +750,20 @@ Obey_Code ROUT
BGT %BT02
ADR R2,csdname ; can't allow null directory name!
ADD R1,R2,#1
03
[ LongCommandLines
SUB sp, sp, #LongPNameSize ; create local workspace
MOV R4, sp
MOV R5, #LongPNameSize
|
SUB sp,sp,#256 ; create local workspace
ADR R14,obeydir
LDMIA R14,{R4-R7} ; 16 bytes
STMIA sp,{R4-R7}
ADD R4,sp,#16
MOV R5,#256-16
]
04
SUBS R5,R5,#1 ; ensure stack isn't corrupted!
[ internat
......@@ -730,16 +774,30 @@ Obey_Code ROUT
]
BVS %FT44
CMP R2,R1
LDRCCB R14,[R2],#1
LDRCCB R14,[R2],#1 ; copy pathname (filename exluding leaf)
STRCCB R14,[R4],#1
BCC %BT04
MOV R14,#0
STRB R14,[R4]
;
[ LongCommandLines
Push "R1-R4"
ADR R0, obeydir_name ; -> var name
ADD R1, sp, #4*4 ; -> value (allowing for Push of 4 regs)
MOV R2, #0 ; length irrelevant for R4=0
MOV R3, #0 ; context
MOV R4, #0 ; value is string, to be GSTrans'd
SWI XOS_SetVarVal
Pull "R1-R4"
44
ADD sp, sp, #LongPNameSize
|
MOV R0,sp ; *Set Obey$Dir <parent dir>
SWI XOS_CLI
44
ADD sp,sp,#256
]
BLVS exit ; free block etc.
Pull "R7-R11,PC",VS
;
......@@ -797,7 +855,12 @@ noesc
; of the fact that that a quit may have occurred, in which case
; the stack etc. is invalid and there is no return address.
;
[ LongCommandLines
LDR R2,=wk_inputcom
ADD R2,R11,R2
|
ADD R2,R11,#wk_inputcom
]
MOV R3,#wk_buflen
LDR r1, [r11, #wk_handle]
CMP r1, #0
......@@ -833,10 +896,20 @@ getline2
getline3
;
;
[ LongCommandLines
LDR R3,=wk_inputcom
ADD R3,R11,R3 ; R3 --> template string
|
ADD R3,R11,#wk_inputcom ; R3 --> template string
]
SUB R4,R2,R3 ; R4 = length (no terminator)
;
[ LongCommandLines
LDR R1,=wk_outputcom
ADD R1,R11,R1 ; R1 --> result buffer
|
ADD R1,R11,#wk_outputcom ; R1 --> result buffer
]
MOV R2,#wk_buflen ; R2 = length
ADD R0,R11,#wk_parameters ; argument list
ORR r0, r0, #&80000000 ; "don't append unsubstituted args" flag
......@@ -884,11 +957,21 @@ getline3
SWI OS_WriteS ; print Obey: <foo>\n
= "Obey: ", 0
ALIGN
[ LongCommandLines
LDRVC R0,=wk_outputcom
ADDVC R0,R11,R0
|
ADDVC R0,R11,#wk_outputcom
]
SWIVC XOS_Write0
SWIVC XOS_NewLine
96
[ LongCommandLines
LDRVC R0,=wk_outputcom
ADDVC R0,R11,R0
|
ADDVC R0,R11,#wk_outputcom
]
SWIVC XOS_CLI ; stack must be at the same level!!
;
[ debugxx
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment