text:
ZCPR v 3.3, Advanced Z-COM Custumization
Hauptkategorie: Magazines
Kategorie: The Computer Journal
The Computer Journal, Issue 29
Z-System Corner
© Jay Sage
Reproduced with permission of author and publisher.
One of the problems with writing a column for a magazine that only appears every two months or so is that so many things can happen between when one column is written and the next one is published. (Of course, there would be other, insurmountable problems if I had to turn out these columns every month, so I am not complaining.) At the end of the last article, I mentioned that ZCPR33 would probably be out by the time that issue appeared. Indeed, that was true. What I did not write, because no public announcement had been made yet, was that I had joined the Echelon team and would be the author of that version. So I am now wearing two hats, one as ZSIG software librarian and one as the Echelon team member in charge of command processor development. Richard Conn has gone off to do more esoteric things. In recognition of this change, I have broadened the title of this column.
ZCPR Version 3.3
Since ZCPR33, or Z33 as I will call it for short, is too exciting a subject to pass up, I will say a few words about it before continuing the discussion we began last time of techniques for customizing Z-COM. I will not say too much, however, since a lot of effort already went into preparing the 60-page "ZCPR33 User Guide". It has all the details and is available from either Echelon or Sage Microsystems East for $15 plus shipping ($3 from SME). Since the code, as in the past, is still available free of charge for personal, noncommercial use, sale of the manual is the only way other than OEM sales that we get any compensation for the enormous amount of effort that went into Z33. I will talk this time only about the design goals for Z33, and perhaps in future columns I will talk about some of the new features and capabilities.
Design Goals
In developing Z33, I tried to achieve five things (the number keeps growing every time it think about it). (1) I have tried to maintain a very high level of compatibility; (2) I have tried to increase flexibility, control, and speed; (3) I have tried to make the code rigorous and reliable; (4) I have tried to make more information about the internal state of the command processor accessible to user programs; and (5) I have tried to make the code readable and educational.
To the greatest extent reasonable, I have maintained compatibility between Z30 and Z33. No change need be made to any part of the operating system other than the command processor; the Z33 command processor, as I hinted at in the last column, can simply be dropped in wherever the old command processor was, either on the system tracks of the boot disk or in the appropriate places in a Z-COM system. No changes need be made in the memory allocations, and the officially released system modules that worked with Z30 will work with Z33 as well, though new, more powerful RCP and FCP modules were released with Z33 (the 'H' command in the unofficial experimental RCP145, because it made direct references to internal addresses in the CPR, will not work). All application programs and almost all utility programs will work unchanged with Z33. New utility programs have been written to take advantage of some of the new features in Z33.
Many features of ZCPR3 - such as automatic path searching for COM files, extended command processing, and error handling - are very convenient but can significantly slow system response. With Z33, the user is given greater control over these features from the command line so that unnecessary operations can be bypassed to save disk activity and time. No longer does the path automatically include the current directory first. The user can now, at his option, omit the current directory or include it in any position in the path. This has a dramatic effect on system speed. A command entered with a leading slash ("/") is handled directly by the extended command processor without wasting time searching the path for a COM file. For systems that take increasing advantage of ARUNZ or other extended command processing, speed is, again, greatly improved. Programs with what is called a type-3 environment are automatically loaded and executed at addresses other than 100H. By loading error handlers, shells, and extended command processors high in memory, user programs at 100H are left intact and can be reinvoked using the GO command.
The code in Z33 was almost totally rewritten, taking only the basic functions from Z30. Quite a few bugs, some very serious, were corrected, and new algorithms were used for many of the functions. A great deal of effort was devoted to making the code rigorous. No longer can a command tail longer than 128 bytes overwrite the program code and crash the system. No longer can command lines in SUBMIT files write beyond the end of the command line buffer. The root path and minimum path features now work correctly, so that duplicated elements in the search path do not have to be searched more than once. Extended command processing functions reliably and in combination with error handling.
The Z33 command processor makes much more information available about its operation. In Z30, only COM files that could not be found would invoke error handling. Z33 traps many different kinds of errors, and it can report the nature of the error to the user. Some examples are TPA overflow, disk full, bad numerical expression, incorrect password, bad directory specification, or ambiguous file specification. Z33 even makes it possible for user programs and routines in the resident command package to invoke error handling and to report the type of error. When Z30 parsed a file expression that specified an invalid directory, it simply substituted the current directory, but the program had no way to tell that this had been done. Z33 sets a flag to indicate the error. With Z33, a program can tell where on the search path it was actually found. This can be valuable for shells and error handlers that install themselves into the system. They can operate faster if they know where they are located.
Finally, the source code has been completely reorganized and very extensively commented. I did this not only to make it easier for me to maintain it but also so that others could read it to learn how the command processor works. One of the main reasons why many of us hobbyists remain involved in the 8-bit world is that a Z80 can be comprehended fairly easily and can thus be used to learn deeply about the operation of a computer. Z33 is designed to contribute to this.
Advanced Z-COM Customization
In our discussion last time we described what Z-COM is and how it works, and we presented a number of techniques for carrying out simple modifications that did not alter the basic structure of the Z-COM system. This time we will examine some much more far-reaching modifications, including those that involve changing the way Z-COM operates. The goal is to develop techniques that will permit us to use the basic principles behind Z-COM to build arbitrary systems of our choice. I do want to warn you: a good part of this discussion will be at an advanced technical level. Even I feel rather mentally exhausted after going through the process of developing it and writing it down. If any one section is getting too technical for you, please do not give up completely. Skip ahead to each new section and read the introductory philosophical comments. There is material there that I would really like everyone to see.
When Z-COM Will Not Work
Before launching into the heavy code patching, I would like to cover a topic that probably should have been included last time: why Z-COM will not work in all systems or will not work fully.
There are two circumstances that I have experienced in which Z-COM interferes with the proper operation of a system. One class of difficulties arises when the system uses utilities that make modifications to the operating system image in memory. Such utilities always invite disaster, but they are nevertheless quite common (partly because they are so useful). If the utilities calculate the addresses to change from the BIOS warmboot address at location 0001, then there will be trouble, because that address points to the virtual BIOS set up by Z-COM and not to the real BIOS.
The Ampro BIOS, for example, has a number of special structures in defined locations with respect to the beginning of the BIOS. Some of these, for example, support the various configuration options. Since these options are rarely changed except when the system is first assembled or when new hardware is added, one can overcome any problem by running the utilities when Z-COM is not in operation. Other BIOS structures are used to define the alternative disk formats. These one might want to change during a session at the computer. Although it is inconvenient, one could again exit from Z-COM using ZCX, change the disk format, and then reenter Z-COM. Of course, a conventionally installed ZCPR system is available for the Ampro so that Z-COM is not necessary. However, a number of other computers running standard CP/M 2.2 use similar techniques and have similar utilities.
The second class of difficulties arises when the BIOS warmboot code performs some indispensable function. Remember that when Z-COM is running, the warm boot is intercepted, and the warmboot code in the original BIOS does not run. My BigBoard I with the double-density upgrade automatically selects from a large number of disk formats. One simply puts the diskette with the new format into the drive and presses control-c. The warmboot code in the BIOS includes code for determining the format of the diskette. When Z-COM is running, I often experience problems when I try to log in a new drive for the first time or when I try changing disk formats. The trouble seems to have to do with the way the BIOS keeps track of what drives are logged in, and by using disk resets or control-c's from Z-COM, I can often get the system to work. But clearly there can be problems when the BIOS warmboot code is completely by-passed.
More Named Directories
To get our feet wet again with Z-COM patching, let's start with a relatively simple but very practical example. The most frequent request I get from users of Z-COM, especially those using it to make a remote access system, is for a way to increase the number of named directories.
To refresh our memories, I have reproduced in Fig. 1 the memory map of our unmodified Z-COM system. Those of you who are really sharp (or have photographic memories or are cheating by actually looking at the last issue) will notice that this is not exactly the same as the map presented last time as Fig. 2. The reason for this is that I recently was offered a deal that I simply could not refuse on a hard-disk Televideo 803H system (every household needs four complete computer systems, no?). Since I cannot bear to operate a computer without Z-System, I immediately implemented Z-COM on it and have been using it as the testbed for the techniques described here. It's BIOS is obviously even less compact than the one on my BigBoard and starts 200H lower in memory. I hope this address switch does not confuse you too much, but since your system probably does not match mine anyway, you have to get used to translating addresses. The addresses in the ZC.COM image, of course, do not change.
System Component ZC.COM Address System Address
CPR 0200 - 09FF BA00 - C1FF
ZRDOS 0A00 - 17FF C200 - EFFF
Virtual BIOS 1800 - 19FF D000 - D1FF
Named Directory Register 1A00 - 1AFF D200 - D2FF
Shell Stack 1B00 - 1B7F D300 - D47F
Z3 Message Buffer 1B80 - 1BCF D380 - D4CF
External FCB 1BD0 - 1BF3 D3D0 - D4F3
PATH 1BF4 - 1BFE D3F4 - D4FE
Wheel Byte 1BFF - 1BFF D3FF - D4FF
Environment Descriptor 1C00 - 1C7F D400 - D47F
TCAP 1C80 - 1CFF D480 - D4FF
Multiple Command Line 1D00 - 1DCF D500 - D5CF
External Stack 1DD0 - 1DFF D5D0 - D5FF
Resident Command Package 1E00 - 25FF D600 - DDFF
Flow Control Package 2600 - 27FF DE00 - DFFF
I/O Package 2800 - 2DFF E000 - E5FF
Addresses of system components in the ZC.COM file and in the example system for which it was generated (Televideo 803H).
Now, if we want to have room for more directory names, we have to find a way to allocate more memory to the NDR module. Where can we steal some memory? Unfortunately, the memory cannot be taken from either of the neighbours of the NDR. The virtual BIOS and shell stack are indispensable. That means that we will have to move the NDR or something else from its present position. The best target for our memory raid is that hulking 6-page, 1.5K IOP that often goes unused, especially on remote access systems. We will cut it down to 3 pages and use the top 3 pages for our new NDR, which will have a capacity for 42 names [ (3 * 256 - 1 ) div 18 = 42 ]. The resulting memory map is shown in Fig. 2.
( unused space ) 1A00 - 1AFF D200 - D2FF
I/O Package 2800 - 2AFF E000 - E2FF
Named Directory Register 2B00 - 2DFF E300 - E5FF
Addresses of system components in the ZC.COM file and in the target system as modified to support 42 named directories.
To implement this change in our Z-COM file we have to change only the ENV and CPR modules. The ENV has to know about the new memory map, and the CPR code has to know where the NDR module is located. Although the NDR module will be placed in a new location in the ZC.COM file, the NDR data are position-independent, so the module itself need not be changed (though we will presumably be adding many new names). The FCP and RCP are still in the same place doing the same thing.
One of the new features of Z33, by the way, is the ability to determine the locations of the NDR, FCP, and RCP from the environment descriptor. Thus if we are using ZCPR33 with this feature enabled, no change in the CPR code is required.
Only three changes in the Z3BASE.LIB file are required to reflect the new memory map. These are the definitions for the symbols IOPS (the number of 128-byte records allocated to the IOP), Z3NDIR (the address of the NDR), and Z3NDIRS (the number of names in the NDR). These changes are as follows:
symbol old expression new expression
IOPS 12 (0CH) 6 (06H)
Z3NDIR z3env - 200H z3env + 0E00H or
iop + 300H
Z3NDIRS 18 (12H) 42 (2AH)
The new SYS.ENV file can be made either by assembling SYSENV.ASM with the modified Z3BASE.LIB, or it can be done by patching (either to the image imbedded in ZC.COM or to the standalone ENV file). I didn't have a copy of SYSENV handy, so I have been using ZPATCH (which is much more fun anyway). I find that I am constantly in need of the addresses of various items in the environment descriptor, so to make them easier to find, I took my copies of Richard Conn's "ZCPR3, The Manual" and put a 3M Post-It (one of those wonderful little yellow semi-stick note sheets) on page 300 where the SYSENV module is described. Then I wrote the offsets shown in Fig. 3 into the margin next to the symbols. It was thus very easy to determine that the addresses to patch in the ZC.COM image are 1C11H (IOPS), 1C15H (Z3NDIR), and 1C17H (Z3NDIRS).
offset   SYSENV code line
09       dw expath
0B       db expaths
0C       dw rcp
0E       db rcps
0F       dw iop
11       db iops
12       dw fcp
14       db fcps
15       dw z3ndir
17       db z3ndirs
18       dw z3cl
1A       db z3cls
1B       dw z3env
1D       db z3envs
1E       dw shstk
20       db shstks
21       db shsize
22       dw z3msg
24       dw extfcb
26       dw extstk
28       db [quiet flag -- no symbol]
29       dw z3whl
2B       db [cpu speed -- no symbol]
2C       db [max drive (A=1) -- no symbol]
2D       db [max user]
Offsets to various symbols and information in SYSENV.ASM, the environment descriptor module (see "ZCPR3, The Manual" p. 300ff).
The next steps were to assemble up a new version of the command processor, create the desired NDR file, and then put all the pieces into the ZC.COM file as described last time. While I was at it, I decided that it would be nice if this new version could co-exist on the system with the previous version, in case I ever wanted the full IOP space back temporarily. To achieve this, I made two additional changes in the image and saved it to a file called ZC1.COM instead of ZC.COM. These two changes were to the name of the startup alias and the name of the CPR file to be loaded from A15 by the warmboot code.
The startup command is stored in the multiple command line buffer, whose image begins at 1D00H. The standard ZC.COM has the following data there for my Televideo 803H with its real MCL at D500H:
<04> <D5> <CC> <04> S T R T <00>
The first two bytes are a pointer to the address D504, where the next command (in this case the only command) to be executed is stored. They do not have to be changed. The third byte, CCH, is the maximum number of characters that the command line can contain. It should not have to be changed, but in fact the value is wrong. Fortunately, this mistake can only cause trouble in highly exceptional circumstances, but while we are at it we can put in the correct value of CBH = 203. The value of the symbol Z3CLS in Z3BASE.LIB should also be changed. The correct value is the maximum number of actual characters in the command line. As can be seen above, there are four bytes before the command string and one byte (the terminating null) after it. Hence the proper value for Z3CLS is five less than the total amount of memory allocated to the multiple command line buffer module.
The fourth byte is the number of text characters in the command line. This value is never used by the operating system, but the DOS line input function writes the count to that position, so we have to provide space for it. If you put a wrong value there, it will not make any difference, at least not for the operations performed here. I have heard that there was at least one utility program that used this value for some purpose. I do not recommend this practice, since some command-line-generator programs, I believe, and do not update the value after they produce their command lines. I am also not sure whether or not the Z3LIB routines APPCL and PUTCL update the character count.
To make ZC1.COM use a startup alias called START1 (6 characters), we would change the MCL buffer to
<04> <D5> <CB> <06> S T A R T 1 <00>
This can be done either with ZPATCH or a debugger. If there is a lot of garbage in the rest of the command line buffer, you can fill it with zeros out through address 1DCFh to make things look neater.
The file control block for the ZC.CP command processor image that is loaded from directory A15 starts at address 1944H. By changing the space character at address 1947H from 20H to 31H ('1' ASCII), the CPR image ZC1.CP will be loaded instead. You can also change the message at address 1901H to reflect the name of the CPR image file. There is room to squeeze two extra characters into that message, one by eliminating the leading space and one by omitting the ending period. After you're done with these changes, don't forget to put the CPR image file ZC1.CP in A15.
It seems wasteful with this configuration to leave unused the block of memory where the NDR used to be. When I implemented this version, I moved the multiple command line buffer there so that I could increase its size from 208 to a full 256. One might not enter such long commands by hand, but aliases and other command line generators occasionally overflow the 203 character limit in the usual configuration. For ZCPR34 I am considering some techniques for extending the length to a two-byte value so that the command line can be as large as one would like. I will not describe the extra changes required to move the command line buffer, since the next example will cover that and more.
Completely Revamping the Memory Model
We will now consider how we go about completely revamping the memory model, including moving the IOP. Moving any module except for the IOP can be accomplished using a straightforward extension of what we have already described. The IOP poses some special problems that we will now deal with.
Before turning to that subject, I would like to make some general comments about the memory allocation in a ZCPR3 system. With a fixed system - that is, any particular system that one will use at all times - it does not really matter how the modules are distributed in memory, just so long as they all fit somewhere.
As soon as one wants to be able to change from one system configuration to another, not all memory models are as good as others. I first noticed this when I wanted to run both Z3-DOT-COM and Z-COM on my system. I usually used Z3-DOT-COM because it left a larger TPA, but occasionally I wanted to make use of the IOP for redirecting console output to a disk file. At that point I discovered that Joe Wright's choice of memory models was a poor one. By adding the IOP at the top in Z-COM rather than at the bottom, the environment descriptor moved down to a lower address, and that meant that I either had to have two sets of utility programs or had to reinstall all the utilities every time I changed from one system to the other. This provided a powerful incentive to discover methods for modifying the memory maps. Of course, with ZCPR33 and its automatic installation of utilities, this is no longer a concern.
Even with ZCPR33 there are compelling reasons to choose some memory configurations over others. The addresses of most system components are hard-coded into even the ZCPR33 command processor. However, as we mentioned earlier, the addresses of the largest memory buffers - the NDR, FCP, and RCP - can determined dynamically from the environment descriptor in memory. As a result, if these buffers are placed adjacent to one another, the single block of memory allocated to the set of them can be reconfigured simply by loading a new environment descriptor. Since the command processor does not directly refer to the IOP, the IOP can also be included at the bottom of this single buffer space. The tradeoffs that become possible are illustrated in Fig. 4, where a single memory block of 4.25K (the standard amount in Z-COM for these modules) is allocated in two different ways.
total space standard configuration alternate configuration
---                   ---                       ---
|                     |   NDR (2)               |
|                    ---                        |   NDR (6)
|                     |   FCP (4)               |
|                     |                        ---
|    all             ---                        |
|  buffers            |                         |   FCP (7)
|   4.25K             |                         |
| 34 records          |                        ---
|                     |   RCP (16)              |
|                     |                         |   RCP (20)
|                    ---                        |
|                     |   IOP (12)              |
|                     |                         |   IOP (1)
One illustration of how a single block of memory can be dynamically allocated among the IOP, RCP, FCP, and NDR buffers in a ZCPR33 system.
In the alternative memory map in Fig. 4 the IOP buffer has been shrunk to a single record, a space just large enough to hold the dummy IOP that Z-COM comes with (we can't shrink it to zero without changing the VBIOS). The extra 11 records of memory are then distributed to the other modules. The NDR increases to 6 records, enough for 42 named directories. The FCP picks up 3 more records. At 7 records, it has enough space to implement a very large number of resident test options. The remaining 4 records go to the RCP, which can probably now include all options in Z33RCP.
Suppose the standard configuration is described by SYS.ENV and uses the modules SYS.NDR, SYS.FCP, and SYS.RCP, and that the alternative configuration is described by ALT.ENV with modules ALT.NDR, ALT.FCP, and ALT.RCP. Then we would change from the standard to the alternate configuration by entering the command
LDR ALT.ENV,ALT.NDR,ALT.FCP,ALT.RCP
Note that it is essential that the ENV module be listed, and therefore loaded, first. If it is not, LDR will not know the correct addresses for the other modules. Similarly, to change back to the standard configuration, one would use the command
LDR SYS.ENV,SYS.NDR,SYS.FCP,SYS.RCP
If one were switching back, for example, to use the NuKey IOP to provide keyboard macro capability, the line could read
LDR SYS.ENV,SYS.NDR,SYS.FCP,SYS.RCP,NUKEY.IOP
In this way one can make much more flexible use of system resources. One might choose to reduce the size of the overall buffer space to only 35 records, keeping only the IOP stub in the standard configuration. Then when an IOP like IOR (I/O recorder) or BPRINT (print spooler) is needed, the RCP and/or FCP would be contracted temporarily. Either one or both could even be eliminated (reduced to zero size). Aliases can be used to automate the process of switching configurations.
Moving the IOP
We will now build a Z-COM system of the form described above. The memory map for the new configuration is shown in Fig. 5. Since the ENV (including TCAP) is a fixture in any system, I would have preferred to put it in the invariant position at the very top of memory. However, ZRDOS has to know where the ENV is in order to support wheel-locking of files. If you have purchased ZRDOS separately, you can generate a version to run at any address and to reference an ENV at any address. If you only have Z-COM, however, you do not have this freedom. Therefore, I have left the environment where it was.
operating system modules
large, variable buffers
I/O Package 1A00 - 1FFF D200 - D7FF
Resident Command Package 2000 - 25FF D800 - DFFF
Flow Control Package 2800 - 27FF E000 - E1FF
Named Directory Register 2A00 - 1AFF E200 - E2FF
third page of buffers
Shell Stack 2B00 - 1B7F E300 - E47F
Z3 Message Buffer 2B80 - 1BCF E380 - E4CF
External FCB 2BD0 - 1BF3 E3D0 - E4F3
PATH 2BF4 - 1BFE E3F4 - E4FE
Wheel Byte 2BFF - 1BFF E3FF - E3FF
second page of buffers
Environment Descriptor 2C00 - 1C7F E400 - E47F
TCAP 2C80 - 2DFF E480 - E4FF
top page of buffers
Multiple Command Line 2D00 - 1DCF E500 - E5CF
External Stack 2DD0 - 1DFF E5D0 - E5FF
Memory map for a system designed for dynamic buffer reallocation under ZCPR33.
The first step, as usual, in making a new configuration is to prepare a new Z3BASE.LIB file. The important addresses in that file are shown in Fig. 6. I have considered each page of memory to be a unit. The bottom of the page is referenced to the real BIOS address, and the other modules in the page are referenced to the base module for that page. Of course, you can express these addresses in many other equivalent ways, and you may well prefer to do it differently. In any case, with Z3BASE.LIB in hand, you can assemble up the CPR, RCP, FCP, and ENV modules (or you can make the latter by patching).
; Z3BASE.LIB
rbios   equ     0e600h
; First page under BIOS
z3cl    equ     rbios - 100h
z3cls   equ     203
extstk  equ     z3cl + 0d0h
; Second page under BIOS
z3env   equ     rbios - 200h
z3envs  equ     2
; Third page under BIOS
shstk   equ     rbios - 300h
shstks  equ     4
shsize  equ     32
z3msg   equ     shstk + 080h
extfcb  equ     shstk + 0d0h
expath  equ     shstk + 0f4h
expaths equ     5
z3whl   equ     shstk + 0ffh
; Variable modules
z3ndirs equ     14
z3ndir  equ     rbios - 0400h
fcps    equ     4
fcp     equ     z3ndir - fcps*80h
rcps    equ     16
rcp     equ     fcp - rcps*80h
iops    equ     12
iop     equ     rcp - iops*80h
; Operating system components
vbios   equ     iop - 0200h
dos     equ     vbios - 0e00h
ccp     equ     dos - 0800h
Address equates for the Z3BASE.LIB file corresponding to the memory configuration shown in Fig. 5.
We would be able to implement this configuration without any problem using the techniques we have already seen were it not for the IOP module. The IOP is really an extension of the BIOS, and the problem is that the virtual BIOS has vectors (jump instructions) going to the IOP. When the Z-COM system is built by the loader program ZCLD.COM, the addresses are calculated based on the assumed relative positions of the VBIOS and IOP. Since we are now going to change the spacing between them, we will have to perform some patching on the VBIOS module.
The table of jump vectors in the virtual BIOS is shown in Fig. 7. There are two jumps (warm and cold boot) that are internal to the VBIOS, 7 jumps to addresses in the IOP (6 in one group and one extra), and 10 jumps to the real BIOS. Only the jumps to the IOP have to be changed.
(00)    VBIOS:  JP      VBIOS + 67H     ; coldboot
(03)            JP      VBIOS + 67H     ; warmboot
(06)            JP      IOP + 0CH       ; console status
(09)            JP      IOP + 0FH       ; console input
(0C)            JP      IOP + 12H       ; console out
(0F)            JP      IOP + 15H       ; list out
(12)            JP      IOP + 18H       ; punch out
(15)            JP      IOP + 1BH       ; reader in
(18)            JP      BIOS + 18H      ; home disk
(1B)            JP      BIOS + 1BH      ; select disk
(1E)            JP      BIOS + 1EH      ; set track
(21)            JP      BIOS + 21H      ; set sector
(24)            JP      BIOS + 24H      ; set DMA
(27)            JP      BIOS + 27H      ; read sector
(2A)            JP      BIOS + 2AH      ; write sector
(2D)            JP      IOP + 1EH       ; list status
(30)            JP      BIOS + 30H      ; sector translation
Structure of the jump table in the virtual BIOS.
You should begin by making a copy of ZC1.COM, which we generated earlier, giving it the name ZC2.COM. Then determine the absolute address of the IOP in your system. Next, go into ZC2.COM with ZPATCH or with a debugger and change the addresses. For my Televideo 803H system the IOP had been at E000H and is now at D200H. I would look for the seven jumps of the form "C3 ?? E0" and change them to "C3 ?? D2".
We also have to make some changes to the code in the dummy IOP. It has a total of 16 jump instructions, 7 of which refer to the real BIOS and 9 of which refer to internal addresses. The former need not be changed, but, since we are changing the address at which the IOP will execute, we have to change the latter addresses. The source code for the dummy IOP is shown in Fig. 8.
(00)    IOP:    JP      IOP + 3DH       ; status
(03)            JP      IOP + 3DH       ; device select
(06)            JP      IOP + 3DH       ; device name
(09)            JP      IOP + 3DH       ; initialization
(0C)            JP      BIOS + 06H      ; console status
(0F)            JP      BIOS + 09H      ; console input
(12)            JP      BIOS + 0CH      ; console output
(15)            JP      BIOS + 0FH      ; list output
(18)            JP      BIOS + 12H      ; punch output
(15)            JP      BIOS + 15H      ; reader input
(18)            JP      BIOS + 2DH      ; list status
(1B)            JP      IOP + 3DG       ; new I/O routine
(1E)            JP      IOP + 3DH
(21)            JP      IOP + 3DH
(30)            DB      'Z3IOPDUMMY   ' ; ID string
(3D)            XOR     A               ; set zero value and flag
(3E)            RET                     ; return
Source code for the dummy IOP in Z-COM. All the internal routines simply return with the zero flag set, while the substantive functions are vectored off to the real BIOS.
The garbage that appears from address IOP+3FH to the end of the IOP at IOP+5FFH can be filled with zeros to make things look neater. Then the 9 internal vectors have to be modified in the same way those in the BIOS were to point to the new address of the IOP. Finally, the reconfigured IOP has to be moved from its present position at 2800H to its new place in ZC2.COM at 1A00H.
While we are in the debugger doing that, we can also change (1) the file control block to load the command processor image ZC2.CP (and also the 'not found' message) and (2) the multiple command line buffer to run START2. This initial multiple command line must also be moved from its old address at 1D00H to its new position at 2D00H. Make sure that the second byte in the command line buffer points to the page where the real multiple command line buffer will be.
You should then fill all the other buffers with zeros. The CPR, RCP, FCP, and ENV modules can be loaded into the image. Then the initial path should be set up at address 2BF4H, and the wheel byte at address 2BFFH should be set to FFH if you want it on. Finally, if you want an error handler to be loaded when Z-COM is booted, then patch in the error command line (for example, "A0:Z33VERR<0>") at Z3MSG+10H (2B90H in ZC2.COM).
If everything has gone right, and I have not left something out or written something wrong, you should be ready to test it out. Don't forget to put the command processor image files in A15. I know I keep harping on this, but while working on this article, I forgot to do that on one occasion, and there are now a few dents in the table from my fist!
A Minimum System
If you ever meet me and feel like having a little fun at my expense, just casually make some comment like, "Oh, yeah, I hear ZCPR3 has some nice features but that it uses up much too much memory." It is a subject that has become a sore point for me lately and one that is almost guaranteed to provoke me. To be honest, however, the persistance of this false impression is to a large degree the result of poor education on our part. No one ever talks about minimum ZCPR3 systems; we only describe full-blown ones.
It is true that a full-blown ZCPR3 system uses quite a bit of memory. Z-COM takes 1600H = 5.5K bytes of memory out of your TPA, a pretty hefty chunk. I like the features that this big Z-System gives me, and for the kind of work I do, the smaller TPA almost never causes any problem. For me, the benefits far outweigh the cost.
For some people, however, especially those working with voracious memory hogs like database managers and C compilers, this is not the case. (It seems to me that someone like Steve Russell of SLR should write a good, virtual-memory C compiler like his virtual-memory assemblers to prevent this problem.) But the real answer is that a ZCPR3 system does not have to have every feature implemented. As with most things in this world, the 20/80 rule applies: for less than 20% of the cost, you can buy more than 80% of the features. If we eliminate all the variable buffers in the last example, we end up with a system that uses only 5 pages (1.25K) of memory, a very modest amount. The same system installed in the conventional way, with no space required for the virtual BIOS of Z-COM, would take only 0.75K away from the TPA, yet all of the following features would still be there:
automatic command search path
flexible access to user areas
multiple commands on a line
shells (including history shell and filer shells)
extended command processing (including ARUNZ command generator)
powerful error handlers (with command editing)
terminal-independent operation (TCAP)
flexible program loading (type-3 environment)
interprogram communication
The only things missing are named directories and flow control. Some simple flow-control-like features could be implemented even without the FCP. With all the security features and named-directory support removed from the command processor, there is room for many more CPR-resident commands, and the ones that won't fit can be implemented as virtual residents using the new type-3 environment. In summary, a very powerful system can be built with a very small cost in TPA.
To prove this point (and because it will be useful on those rare occasions when I run my database manager), I decided to develop a version of Z-COM that would have only the three pages of core modules. The memory map is shown in Fig. 9. It differs in two fundamental ways from all the other maps we have seen: (1) it is shorter and (2) the real VBIOS and ZRDOS run at different addresses than usual. These differences will require some new techniques, and we will cover them shortly.
CPR 0200 - 09FF CB00 - D1FF
ZRDOS 0A00 - 17FF D300 - E0FF
Virtual BIOS 1800 - 19FF E100 - E2FF
Shell Stack 1A00 - 1A7F E300 - E47F
Z3 Message Buffer 1A80 - 1ACF E380 - E4CF
External FCB 1AD0 - 1AF3 E3D0 - E4F3
PATH 1AF4 - 1AFE E3F4 - E4FE
Wheel Byte 1AFF - 1AFF E3FF - E4FF
Environment Descriptor 1B00 - 1B7F E400 - E47F
TCAP 1B80 - 1BFF E480 - E4FF
Multiple Command Line 1C00 - 1CCF E500 - E5CF
External Stack 1CD0 - 1CFF E5D0 - E5FF
Addresses of system components in the ZC3.COM file and in the target system for a minimum configuration with no IOP, RCP, FCP, or NDR. The file is 2E00H - 1D00H = 1100H = 4.25K shorter than the other versions.
First we have to make Z3BASE.LIB, the equates for which are shown in Fig. 10. The only subtle change is in the way the VBIOS address is defined. Make sure you do not define it in terms of any of the modules whose addresses have been set to zero to disable them or you will get extremely strange results.
; Variable modules -- all disabled
z3ndirs equ     0
z3ndir  equ     0
fcp     equ     0
rcps    equ     0
rcp     equ     0
iops    equ     0
iop     equ     0
vbios   equ     shstk - 0200h
The Z3BASE.LIB equates for a minimum system that takes only 0.75K for the ZCPR3 buffers and 0.5K for the virtual BIOS required for automatic installation.
The basic procedure for creating this system is very much like what we have done before. We edit the Z3BASE.LIB file and assemble up the CPR and ENV modules (or make the latter by patching). There are no FCP, NDR, or IOP modules to worry about. We set up the path, the wheel, and the error handler; we change the VBIOS file control block to load ZC3.CP for the CPR image file and change the 'not found' message to match; and we put in the ENV and CPR modules.
Now we have to face the new complications that arise because of the change in size of the file. First we will take up the simpler problem - changing the loader code in the first page of the file. It normally copies 2C00H bytes (from 200H to 2E00H) up to the run-time location in memory. Now the image part of the file is only 1B00H bytes long. If you follow through the loader code in a debugger, you should not have too much difficultly figuring out what is going on. The hardest parts to trace through are the places where the code prints out in-line strings. You will typically see a call instruction followed by very strange code. That strange code is the text to be printed. That coding technique is very convenient for the programmer (and I use it all the time), but it makes disassembly and single-stepping in a debugger much more difficult. When you encounter code like this, you have to use the dump ('D') display to locate the null (binary 0) that marks the end of the string. Then you can continue running using the command "G,addr", where 'addr' is the address just after the null.
Anyway, at address 181H you will find the key instruction: LD B.C.,2C00H. This must simply be changed to LD B.C.,1B00H. That's all there is to it - as far as the loader code is concerned. You might wonder why we don't have to change the starting address for the load, since it is not the same as before. The answer is that Z-COM derives it from the initial jump instruction in the CPR image. My first versions of Z33 used a relative jump, and I had to put the absolute jump back after one of my beta-testers pointed out that it would not work with Z-COM.
Now we have to face two much more difficult problems: both the VBIOS and the ZRDOS modules have to be relocated to a new address. How can we possibly do this without source code? Well, if you purchased a separate copy of ZRDOS, you have a file with a name like ZRDINS.COM with which you can create a binary image of ZRDOS that will run at any address and with any ENV address. But what if you don't have it? And what about the VBIOS part? The latter could conceivably be disassembled, since the code is not very long or very complex, but there is a better way, one that makes use of the built-in capabilities of the auto-install package.
If you had two computers with different BIOS entry addresses, you could perform a standard installation of Z-COM on each system. By taking the two ZC.COM files and subtracting them in a debugger, you could derive the relocation map. Now the question is how we can make two ZC.COMs using a single computer.
If you examine the beginning of the code in ZCLD.COM, you will see that ZCLD keys its system generation to the address of the BIOS warmboot vector at address 0001, and that is what we will base our strategy on. We will fool ZCLD into making us two versions of ZC.COM one page apart that we can subtract.
With my standard Z-COM system running on the Televideo 803H, the CPR is at BA00H and the virtual BIOS at D000H. Thus the vector at address 0001 points to D003H. By entering the following commands, we can make the BIOS look as though it were at B900:
POKE B903 C3 03 D0 ; Set up JP D003H at address B903H
POKE 2 B9 ; Change bios vector from D003 to B903
Of course, you must use addresses appropriate to your system. Any address below the CPR but above the memory used by ZCLD should work.
With this patch in place, everything will be fine so long as we do not try to run a program that does direct BIOS calls based on the address at 0001. (If we do? - the system will simply go up in flames!) In case you're worried, the next warmboot will delete our patch and restore things to normal.
Fortunately, ZCLD does not mind being fooled this way. All in all, the following sequence of commands will result in two files, ZCB8.COM and ZCB9.COM.
POKE B903 CE 03 D0;POKE 2 B9;ZCLD;REN ZCB9.COM=ZC.COM
We can then load both files into a debugger using the commands
IZCB8.COM ; set file to ZCB8.COM
R ; read in at 100H (100H-2DFFH)
R3000 ; read in at 3100H (3100H-5DFFH)
Now from right in the debugger we can assemble a little program at 3000H to subtract the ZRDOS and VBIOS images in memory block 0A00H-19FFH from the images in memory block 3A00H-49ffH to give us the relocation map we need. Here is how the entry of the assembly code proceeds:
-A3000
3000  LD DE,3A00        ; set up pointers to two files
3003  LD HL,A00
3006  LD B.C.,1000      ; number of bytes to subtract
3009  LD A,(DE)         ; get byte from higher image
300A  SUB (HL)          ; subtract byte from lower image
300B  LD (DE),A         ; put result (0 or 1) back
300C  INC HL            ; increment the pointers
300D  INC DE
300E  DEC B.C.          ; check count
300F  LD A,B
3010  OR C
3011  JR NZ,3009        ; loop through 1000H bytes
Enter the command "G3000,3013" to run this routine with a breakpoint at 3013. If you look at memory from 3A00H TO 49FFH you will see a pattern of 1s and 0s. This is the relocation map. It indicates which bytes must be changed to shift the execution address of the code.
Now we have to relocate the ZRDOS to run at D300H and the VBIOS to run at E100H instead of the values 9400H and A200H as they are in the image in ZCB8.COM (determined by inspection with a debugger). Thus we have to add an offset of 3FH (E1-A2) to all bytes where the relocation map has a one in it. So we assemble up another little program at 3000H as follows:
3000  LD HL,3A00        ; point to relocation byte
3003  LD DE,1A00        ; point to ZRDOS/VBIOS we are creating
3006  LD B.C.,1000      ; number of bytes to cover
3009  LD A,(DE)         ; get current value of byte
300A  BIT 0,(HL)        ; see if relocation map has a 1 in it
300C  JR Z,3011         ; if not, skip the offset addition
300E  ADD A,3F          ; add the offset
3010  LD (DE),A         ; put back the corrected byte
3011  INC HL            ; increment the pointers
3012  INC DE
3013  DEC B.C.          ; check the count
3014  LD A,B
Run this program with "G3000,3018" and you will have a ZRDOS and VBIOS that will run at the required address. Put them in a safe place temporarily while you load in ZC3.COM and then move them into the proper place in the image. This completes the generation of the minimum system except for one step described a little later.
Although all that work with the debugger took quite a lot of space to describe, it is really not that difficult to do. I particularly wanted to show it to you because it is a technique that is useful in many other circumstances as well (like using MOVCPM to relocate your system in one-page rather than 1K increments). Now, however, I will show you a much easier way to accomplish the same thing in the case of Z-COM.
If you load ZCLD.COM into the debugger and trace through the code with the 'L' command, you will see how it works. Before one gets to the main code, there are two places where checks are made. One is to see if the command was invoked as "ZCLD //" to request the built-in help screen. The second test is to make sure that you are not trying to run ZCLD from inside a running Z-COM system. We could drop out of Z-COM after making the changes I am about to describe, but why put up with that trouble. The code is testing for the presence of the letter 'Z' in the copyright notice inside the VBIOS at offset 42H. At address 249H there is a "JP NZ,29D" instruction that takes one to the system-building code if no 'Z' is detected. If we change this to an unconditional jump, we will effectively disable the test.
At 29DH, the code loads the address of the BIOS with the instruction "LD HL,(1)". We know that we want the system to be generated at an address 1100H higher than it would be normally because of all the modules we removed. Since the normal BIOS address was E600H, we want ZCLD to see a value of F700H. To accomplish this, we assemble in the instruction "LD HL,F700", a direct load instead of an indirect load to HL. We can then save away this modified version as ZCLD1.COM. When we run it, it very nicely produces a system with a ZRDOS and VBIOS at just the addresses we wanted.
There is one other change I have forgotten to mention. The jumps in the VBIOS that go to the IOP have to be replaced by jumps to the real BIOS at the very same offset as in the VBIOS. Thus the jump at offset 06, which was "JP IOP+0CH", would become "JP BIOS+06H".
Switching from One Version to Another
What if we are running one of our versions of Z-COM and want to change to another one. We can always run the ZCX command to get back to CP/M and then load the new Z-COM system. This seems unnecessarily tedious. Why can't we just run ZC2.COM from the ZC1 system? The answer is that Joe Wright did not want us to do this. Of course, he was thinking in terms of only single configurations, and then there would be no reason to run ZC.COM when Z-COM was already running. So, he put in some code to protect us from this mistake.
Now we want to do that very thing! How can we disable the safety code? Very simply. It is based on the same check we described with the ZCLD program. It looks for a 'Z' at byte 42H of the BIOS or VBIOS. If it is a VBIOS, the 'Z' will be there; if it is a real BIOS, it would be very unlikely that a 'Z' would be there. We could go into the code itself as I described with ZCLD and disable the test. Alternatively, we could do something much simpler (and reversible): go into the VBIOS and remove the 'Z' by changing it to something else. A third possibility, one I implemented for the fun of it, is to write a little utility program that finds that byte of the BIOS. If it is not a 'Z', it simply returns; if it is a 'Z', it sets it to zero. Then the next ZCx can load over it. If the utility is not run, then the system cannot be overlaid.
I will suggest one last modification to Z-COM to enhance it even further. That is a change to allow alternative versions of Z-COM to be loaded without interrupting the flow of commands. Thus your memory-hungry C compiler would be invoked with an alias the reads something like:
RUNC zc3;c $*;zc2
This alias would load the minimum Z-COM system to give the C compiler the most room to work, and then once the compilation was finished it would reload the full Z-COM configuration. I did this with my Z3-DOT-COM/Z-COM combination. The I/O Recorder IOP was invoked using an alias. The alias would first check to see which Z-System was running (that is what I put the $M parameter into ARUNZ for). If it was Z3-DOT-COM, then alias would load Z-COM before proceeding to load the IOP. I will not go through the method for accomplishing this, but I will give you a hint. You have to change the loader code in the first page of ZCx.COM so that the multiple command line buffer and some other system information is not overwritten by the load.
Plans for Next Time
Whew! That was quite a session of heavy technical material. I don't know yet exactly what I will do next time, but I certainly I will find a less technical subject. You need a rest, and I need a rest. If you have any questions or suggestions, please write or call. See the ad for Sage Microsystems East for the address and phone numbers.
[This article was originally published in issue 29 of The Computer Journal, P.O. Box 12, South Plainfield, NJ 07080-0012 and is reproduced with the permission of the author and the publisher. Further reproduction for non-commercial purposes is authorized. This copyright notice must be retained. (c) Copyright 1987, 1991 Socrates Press and respective authors]


For 2 1/2 weeks, I had the distinct honor of joining legendary Hip Hop Producer Diamond D, Pop and Lockin' Specialist Pop Master Fabel, and Denver's finest DJ B*Money as the lyricist/MC instructor for the Serbian contingent of The Next Level Program.
Next Level is "an initiative of the US State Dept & UNC Music Dept to send artists around the world to use hip-hop as a tool for cultural diplomacy & conflict resolution." Over 2 weeks, we worked with a vibrant community of Serbian Hip Hoppers in Belgrade and Novi Sad. The Belgrade experience concluded with an outdoor performance at Dom Omladine after 10 days of skill-building. Novi Sad's two and a half day residency concluded with a performance of its own, which we shuffled indoors at the promise of rain.
I was inspired by the hope that exists beneath the justifiable layer of pessimism exhibited by many of the students with whom I taught, learned, and chilled. It was only 15 years ago that NATO bombed former Yugoslavia. On one outing, we drove past the Yugoslav Army Headquarters that were damaged by NATO cruise missiles in 1999. Trying to build a cultural identity while physical and psychological remnants of war are so palpable is it's very own struggle. In some essences, it seems that such a truth motivates the art and expressions of the people.
We also experienced Serbian nightlife, partying along the Danube and Sava Rivers with a all-night, energetic crew. Everyone–the hotel staff, the workshop participants, the tech and soundpeople, our Embassy hosts–generously extended their time and energy to ensure an expansive, creative experience and an overall good time. I'm so very grateful to everyone involved.


What the Stellies Rage posts will look like this year.
With a new year comes new challenges and conversations happening on campus.
There are a few prominent issues that will be sure to create a debate amongst students. Of course, fees and the debate around it won't die down just because Zuma made a surprise announcement over the holidays. The sustainabilty of the model that is currently being followed, as well as the debate surrounding who should be studying for free will surely be a contentious issue on campus.
The education for all versus education for the poor debate will continue to be a sore point for many.
KuKo (Kultuur Komitee), the culture committee of the SRC, has also cut ties with the ATKV (Afrikaanse Taal- en Kultuurverening). They did this without consulting the rest of campus first, merely sending a WhatsApp to culture HK's of the different residences. Whether campus will have an issue with this or if they will let it slide is still yet to be seen.
The language debate seems to have settled down for now, with SU's new language policy being finally approved late last year. Throughout the year it will become apparent whether SU is completely binded to their new policy, or if it is merely a stand-in for any new policies that might be simmering at the back of the RMT's minds.
Residences will also undergo scrutiny this year. It has become clear that without legitimate justifications for events and practises in residences, "residence culture" will soon undergo radical changes.
All of this will of course be overshadowed if Stellenbosch finally hits Day Zero. It seems like to university has no concrete contingency plans in place for if this day arrives. Whenever asked what their plans are, the university merely refers to the water crisis division of their website. Yet, on this website, there are no clear plans.
Even though it is, of course, important to save water and to raise awareness, people want to know what will happen when the water is gone. Saying that the university has a task team working on the matter also isn't very reassuring, since this task team has presented no plans since they were originally formed.
At the end of the day, among all the controversy and issues on campus, it is important to remember to be a student and have a life. Yes, it is important to stay informed, make your voice known and stand up for what you believe in, but make sure to not do this at the cost of the people around you.
Most importantly, don't let the things that you are unhappy about take over your life. There are new things to worry and talk about every day, but most people only get one shot at a university life and a degree, do not let it go to waste.
En onthou, as jy wonder daaroor, moet jy dit tien teen een nie doen nie.


Black tailored trousers only. Please note skirts are not permitted.
A Hanson black blazer (no coats/jackets to be worn inside the school buildings).
White plain school shirt which fastens to the neck to wear with a tie.
Black shalwar and black hijab worn with a black pinafore, shirt and tie.
Black shoes, boots or plain black pumps only (flat or low heeled no higher than 6cm). Trainers are not school uniform (PE footwear only).
The Hanson lanyard and ID badge.
It is very important that students keep to the colours and styles we suggest. For example, denim or jean style trousers, ski pants, track suit bottoms, skirts are not allowed. Neither are casual or embroidered shirts. All students must always wear the correct tie and lanyard.
For safety and security reasons, students may wear one small plain stud or small plain sleeper in each ear lobe, no other jewellery. Multiple ear piercing and/or other piercings are not permitted.
Badges are not permitted unless awarded by the School.


text:
Uncategorized | January 11, 2016
Mandanda rejects offers after talks with Michel
F1 British Grand Prix – Valtteri Bottas pole position lap
Marseille goalkeeper Steve Mandanda says he has rejected offers from several clubs but refused to rule out a potential move at the end of the season.
Mandanda's contract expires at the end of current campaign and his future at the club looks increasingly uncertain with every month that passes in which he doesn't sign a new deal.
With less than six months remaining on his current deal, the shot-stopper is free to sign a contract for next season under the Bosman ruling, and he reveals he was in advanced talks with several clubs, but was convinced to not to sign anything after talks with the club's head coach Michel and president Vincent Labrune.
"I had very advanced contacts. But I needed reflection and came to the conclusion that the best thing for me was to continue the Marseille adventure," the France international told L'Equipe.
"We cannot make decisions without meeting people. I saw the coach [Michel], and president. We had a man-to-man talk this week.
"It means people are interested. I do not know what will happen in six months, if I will always have the same proposals, if I will stay in Marseille. But I have learned to live with this uncertainty," he concluded.
Every court can dream: KOTC | STR8,...
Home Uncategorized Mandanda rejects offers after talks with Michel

redpajama_set_name: RedPajamaCommonCrawl


A fuller head of hair can be yours – surgery-free. Aside from being one of the most effective skin rejuvenation techniques available, Platelet Rich Plasma (PRP) is also being successfully uses as an alternative to surgery when it comes to hair restoration options. The PRP brings dormant hair follicles to life and encourages new growth for a thicker head of hair for both men and women.
Hair loss among women can be the result of many natural factors. And, while it is a very sensitive topic, there has traditionally been a lack of viable options for reversing the effects of thinning hair among women. PRP gives women renewed hope by helping them regain their confidence and self-esteem without the need for surgery.
For men, PRP treatments can mean a full head of hair without the need for surgery and the painful recovery that often accompanies the procedure. Using Platelet Rich Plasma to re-grow hair means no more obvious rows of hair plugs, no more scars, and no more need for surgery and the pain that's often associated with it. While it may sound too good to be true, the success stories of PRP hair rejuvenation prove that it's an effect hair restoration treatment option.
If you're ready for a surgery-free way to re-grow a thinning or lost head of hair, our PRP hair rejuvenation treatment could be an option. Dr. James Maytham performs this amazing treatment and all consultations are free!
Please call 519-542-0079 for a free consultation. Our doctor is in on March 7th and would be happy to speak with you.


text:
Acupuncuture Points » ST 10
ST 10 Shui Tu 水突
"Water Splash";
SHUI water
TU splash, sudden, abrupt
Location and Needling:
Midway between ST-9 and ST-11 on anterior border of the sternocleidomastoid.
0.3-0.5 cun perpendicular
Sea of Nourishment point (ST-10, ST-36).
Makes Qi go in the right downward direction.
Cheng, Xinnong, ed. Chinese Acupuncture and Moxibustion. 2nd ed. Beijing: Foreign Languages Press, 2005.
Deadman, Peter, Mazin Al-Khafaji, Kevin Baker. A Manual of Acupuncture. East Sussex, England: Journal of Chinese Medicine Publications, 2001. A Manual of Acupuncture. 2nd ed. East Sussex, England: Journal of Chinese Medicine Publications, 2007.
National Acupuncture Foundation. Clean Needle Technique Manual for Acupuncturists. Guidelines and Standards for a Clean and Safe Clinical Practice of Acupuncture. 6th ed. Chaplin, CT: National Acupuncture Foundation, 2009.
o'conner
O'Connor, John, and Dan Bensky, trns. and ed. Acupuncture: A Comprehensive Text. Shanghai College of Traditional Medicine. Seattle, WA: Eastland Press, 1996.
Connelly, Dianne M. Traditional Acupuncture: The Law of the Five Elements. 2nd ed. Traditional Acupuncture Institute, 1994.
kaptchuk
Kaptchuk, Ted J. The Web That Has No Weaver: Understanding Chinese Medicine. 2nd ed. New York: McGraw-Hill, 2000.
maciocia
Maciocia, Giovanni. The Foundations of Chinese Medicine: A Comprehensive Text for Acupuncturists and Herbalists. 2nd ed. New York: Churchill Livingstone, 2005. The Practice of Chinese Medicine: The Treatment of Disease with Acupuncture and Chinese Herbs. 2nd ed. New York: Churchill Livingstone, 2007.
Wiseman, Nigel, and Andy Ellis. Fundamentals of Chinese Medicine. Revised Edition. Brookline, MA: Paradigm Publications, 1995.
Worsley, J. R. Traditional Chinese Acupuncture: Meridians and Points. 2nd ed. Element Books, 1991.
Zhang, Ting Liang, and Bob Flaws. trns. A Handbook of Traditional Chinese Gynecology. 3rd ed. Boulder, CO: Blue Poppy Press, 1987.
tsangk
Post preview:
or Sign in as Wikidot user
Help: wiki text quick reference


text:
House Resolutions and Matt Gaetz
You might be forgiven in reading this resolution, H.Con.Res.83, as some sort of binding requirement by Congress. After all, it says right in the title:
Directing the President pursuant to section 5(c) of the War Powers Resolution to terminate the use of United States Armed Forces to engage in hostilities in or against Iran.
Except..... it isn't binding.
It's not a bill. Congress passes bills which become laws when either (1) the President signs them or (2) the President takes no action, in which case the bill becomes law without his signature, or (3) the President vetos them and the House and Senate override the veto.
Laws are binding. Suggestions and senses of Congress are not.
The War Powers Resolution is law, ensconced in 50 USC 1541. Said law contains a provision for Congress, by joint Concurrent Resolution, to terminate hostilities, and requires that unless there is some other justification for continuing same (e.g. the existing AUMFs from 2001 and 2002, which still stand as Congress has refused to remove them) that the President cease such action sixty days after same commences.
The House, standing alone, cannot force the President to terminate hostilities. The House and Senate together can, and in addition after 60 days the authority expires anyway.
So why are we involved in said hostilities over in the Middle East in the first place?
Because the President is operating under other authorities granted by that very same Congress, and until and unless they revoke same, or until the Senate also passes an identical resolution, what the House did is non-binding.
Matt Gaetz has taken a lot of crap for voting in the affirmative on this resolution.
Here's the thing: He's right, no matter whether or not you happen to agree with Trump hitting Iran.
The simple fact of the matter is that Congress has repeatedly refused to put on the table a strong war resolution when we have engaged in actual hostilities. They refused to do it in Iraq the second time, they've refused with Afghanistan, they've refused in our involvement in multiple other "skirmishes" and they've refused to do so in the context of our current operations both in the Middle East and elsewhere. While you can argue that we're not at "war" in those places and weren't in many cases you're kidding yourself -- there have been hundreds of Americans that have come home in bags and thousands who have rotated back home missing an arm, leg or otherwise seriously injured. The last time I checked if you're in the military and get shot at or blown up you probably would consider that "war." I know I would.
So putting Congress on the seat and telling them to do their ****ing job under the Constitution is a good thing, not a bad one. Further, AP is reporting that Iraq has formally requested the withdrawal of US forces from Iraq, even though their PM is a "caretaker" in that he has "resigned." Nonetheless the formal request to Pompeo to send delegates to Iraq to execute on Parliament's passed resolution is formal notice and if we honor sovereignty we have a duty to act in accordance with same, irrespective of the fact that the vote was held with a bare minimum quorum and parties boycotting the session. That doesn't matter; under the Iraq Constitution the session was validly constituted, had a quorum and took a valid vote.
We MUST honor it or we are an invading force and that does implicate 50 USC 1541 -- and as a result is a binding requirement on President Trump and our military.
I have no illusions about what our departure will mean. It has a high probability of leading to Iran invading Iraq. But the Iraqi government has the right to stand down from a joint defensive posture with the United States even if by doing so they are taking a severe risk of losing their national identity. It is not our place to insist otherwise; we have no right to do so and any claim that we honor the sovereignty of nations requires that we honor a validly-passed resolution telling us to get out.
I like what has happened here thus far -- a lot. Let's recap:
1. We killed a notorious international terrorist who intentionally violated UN sanction by traveling outside of Iran and further, had just attempted to sack our Embassy compound in Baghdad. That ******* had a hand in the death of more than 600 American soldiers, and as far as I'm concerned we should have whacked him a long time ago. He was a legitimate military target -- period.
2. In response Iran did what Iran usually does, but at the same time they knew damn well that in fact they had to both save face and stand down, which they did. America could, in an hour, destroy their missile targeting and launching capacity, all their oil refineries and half their electrical grid. The result would be the literal death of their nation. This would be a legitimate response to any sort of meaningful attack by Iran on US soil or property, including but not limited to any of our embassy installations, any of our military assets in the region or any civilian ship or aircraft operating under a US flag. Under International Law it is perfectly legitimate to meet an Act of War with a responding Act of War and crippling or destroying the infrastructure required to wage war is legitimate. Iran knows this and that Trump will do it, unlike Obama who himself was a documented Muslim sympathizer and willing to give the Iranian mullahs blowjobs and over a hundred billion dollars, with which they could buy even more missiles and other weaponry instead.
3. There are members of the State Department who seem to think they have a right to override this declaration by Iraq's Parliament. Not only are they wrong they're criminally wrong. We have the right to try to convince Iraq that what they're demanding is to their own detriment but sovereignty means respecting their right to choose whether we agree or not. Of course public commentary is a different thing than someone's actual position a good part of the time, as negotiation necessarily includes speech and debate, some of which is put forward for public opinion purposes.
4. ISIS is a serious problem, still, even though they no longer hold territory. The precept that many have -- that radical Islamic political groups do not actually seek to capture and hold territory, imposing their political system on that land and the people upon it, and that they only do these things because we are there and "force" them to, is flat-out bull****. It has been bull**** for a thousand years and may well be bull**** for another thousand. Very significant parts of the Muslim faith are in fact a political system carrying a religious system on its back and always have been back to the beginning of Islam. Nonetheless until and unless said groups attempt to attack and hold US territory, or commit terrorism on our soil, including but not limited to embassies, flagged conveyances under a US flag (e.g. ships and aircraft), it's not our problem. I'm aware this puts me at odds with all the warmongers and chickenhawks but facts are facts, especially when we refuse to apply the same sanctions (including troops, bombs, missiles and similar) to nations like China who are engaging in the same sort of repressive tactics as ISIS is!
5. The long-ago asserted claim that we had to get involved in this crap because of the energy situation has changed. Credit whoever you'd like but the facts are that we no longer have any need for Middle Eastern oil. That Europe does is their problem, not ours. The United States spends nearly $700 billion a year and at least half of it is being spent protecting other people's **** instead of our own. If we're going to be responsible for the security of another nation's political system and people then they must voluntarily cede not only sovereignty but indeed the entirety of political power to us and become a US territory. Until and unless they do all those who claim we should be doing that can shut the **** up as we not only have no obligation to give without receiving to do so is to effectively claim a vassal state status of such nations by force, which we have no right to do and never did. Voluntarily alliances are fine but everyone must pull their full weight. Period.
These are all facts folks and departing from Iraq, which would be a very nice set of actions over the next few months, would not only reduce our military spend materially it will reduce our lives spent as well.
I'm for it.
User Info House Resolutions and Matt Gaetz in forum [Market-Ticker]
Peterm99
Can't disagree with what you write, but, IMO, the exact same logic also applies to Syria - a sovereign nation whose leadership holds power as a result of a fair election (as certified by international observers) has repeatedly declared (to us and to the UN) that they never invited us in and that they do not want us or our "allies" there.
Why in Hades are we still there with apparently no intention to leave, especially from their major oil-producing regions?
ETA: That's a rhetorical question. The obvious answer, IMO, starts with "I" and ends in "L".
". . . the Constitution has died, the economy welters in irreversible decline, we have perpetual war, all power lies in the hands of the executive, the police are supreme, and a surveillance beyond Orwells imaginings falls into place." - Fred Reed
Last modified: 2020-01-10 11:54:51 by peterm99
@Peterm99 - No argument. But one right is still one right, irrespective of other wrongs.
Ktrosper
ft collins co
Indeed. I agree. Great ticker.
Thanks for posted the link to the resolution. I couldn't find it last night.
The unexamined life is not worth living.-Socrates
The only stable state is the one in which all men are equal before the law.-Aristotle
Liberty exists now in the spaces government has not yet chosen to occupy.-Doc Zero
I anticipate that 10 Dallas Cowboys Cheerleaders will blow me this evening.-K.D
Hot-dog-guy
"a political system carrying a religious system on its back"
There's a lick that repeats often enough in history to be the chorus. Buddhism, Hinduism, Catholicism, Protestantism all morphed into state religions. In the process acquiring all of the powers of state (and becoming pretty totally authoritarian).
Judaism kinda came out of the gate with such powers. The 10 commandments came ready made courtesy of God who at that moment was incarnated as fire. By the time of king David they developed this into a complete system of governance. An expansionist empire in fact!
But this version of God wasn't just interested in everybody. He was there to essentially re-invigorate an old promise with a specific bloodline. That of Abraham.
Jesus comes, goes, goes viral. Peter and the apostles head North into Europe. Judaism to various degrees accepts or rejects aspects of his teaching (which sounds remarkably like mystic transcendentalism carrying some form of proto-communism on it's back) and then...prophet Mohamed shows up and establishes leadership based on claims to the very same Abrahamic tradition and lineage.
By this time Mohamed and his family seem to have the religion->empire thing down. They waste no time becoming mega authoritarian, they assume all powers of state and become an expansionist empire AGAIN. Caliphate 1.0. And totally loving it.
Meanwhile Christianity becomes the state religion of Greece. Then Rome. Then Europe. Same evolutionary curve. The Caliphate invades Europe. Christianity beats them back to the Mideast (now sporting blue eyes and freckles). Carrying all the crap they could pack on a camel's back.
From this perspective, WW1, WW2 and subsequent colonization of the mideast might seem to take a secular twist but I posit this is a one sided view. We were calling our more recent invasions a new crusade until somebody noticed how HORRIBLY that played among "the coalition of the willing".
It played worse with the unwilling. Caliphate 2.0 sounded way better.
Now does anybody really believe the crusades were about finding a phreaking GRAIL? The Holy Snifter? The Divine Dixie Cup? Actually possible on an individual level I guess but geoeconomics is a more rational explanation. Used to be that in order to really control a nation you had to go there and beat the **** out of them.
The geoeconomics now dictate that control of energy is analogous to controlling economics and thence nations. This applies globally. To the present day, control of energy is the proxy for war. Not the sole one but the big one. Control oil and you control the world. Starvation and disease kills people just as dead as kinetic war.
Finally, as the USA casts off it's historic religion in favor of social marxism, churches everywhere closing doors and shutting down, has this reduced our ambitions or curbed our actions? It's hard to have a religious war when one side could give a rat's ass about God or eternal paradise. And we sure as HELL have given up on saving anyone's soul. Can't save our own no mo.
Twainfan2
The problem I have with Gaetz (and the Dems) is he didnt do anything about this under Obama and this resolution is a big nothing burger. If he really believes what hes saying on teevee then hed introduce an actual bill to repeal the AUMF and reign in Presidential war powers. But he hasnt and wont because hes a blowhard just getting some teevee face time.
He deserves the same treatment as Piglosi and the rest
I would like to see them repeal all the war powers, at which we could get rid of 80% of the bureaucrats in DC.
Well @Mannfm11 -- Not really. It is long recognized that as CiC (an explicitly delegated power) that the President has the power to commit forces in any exigent situation. The War Powers resolution was a constraint on that. Note that Congress had, and always has the ability to cut off any EXISTING military activity by voting to de-fund it, which it can do at any point in time since it has the power of the purse. Assuming they can override a veto there's not jack and **** the President can do about that.
But congress couldn't revoke the President's ability to act ENTIRELY without a Constitutional Amendment as it's an inseparable part of being CiC but it can and did draw a box around it and say "here's where the line is"; that passes Constitutional muster provided the line is in a reasonable place. The 60 day location is certainly reasonable in that one can convene Congress (if out of session) and get a vote in that amount of time. As you move inward there's a point where it's not reasonable, but I don't know precisely where that is. Today is 30 days likely within constraints? Yes. Is a week? Maybe not. Is a day or an hour? Definitely not; that would be ruled unconstitutional for certain.
Something's up. Navy personnel just got sudden orders to deploy a few hours ago Hmmm....
Is Congress ever out of session 60 days? or are they ever in session, when they aren't plotting more theft?


text:
Q: C# Checking if remote desktop is enabled on a windows client Is there any way I can detect if remote desktop is enabled on windows xp/vista/7. I know that you can access the session information using performance counters but what I really need is a enabled/disabled flag?
PerformanceCounter performanceCounter = new PerformanceCounter("Terminal Services", "Active Sessions");

Thanks

A: If you're trying to see if you're running under a Terminal server session, the easiest way is to check SystemInformation.TerminalServerSession.  This returns true if you're application is associated with a terminal server session.
To see if remote desktop is enabled at all, just check for whether the Terminal Services service is running, using a ServiceController.

redpajama_set_name: RedPajamaStackExchange


Ferengi are a species from StarTrek that was particularly highlighted in Deep Space 9. Their religion is commerce and their society is determined by profit.
The Ferengi believe that the universe is held together by the Great Material Continuum, also known as the Great River. The Ferengi believe that each part of the universe has too much of one thing, but not enough of another, and it is through the continual flow of the Great River that wants and needs can be fulfilled, if one navigates the River with sufficient entrepreneurial skill. By request, here are the complete Ferengi rules of acquisition.
* Check out the brand new StarTrek Game - Especially for StarTrek Fans!
176. Ferengi's don't give promotional gifts!
Note: Ed.: As an immensely feeble attempt at a topical PS tie-in, how about a "material continuum meditation ..?


In the darkened waters of Northrend, a squat looking ship sails by. From a distance it looks like some sort of squat, upturned turtle marred only by the impressive set of guns pointing out of the top of it like horns on a stag. It rumbles along, it's engine growling like some sort of disgruntled beast as it glides through the water. It's a vast ship, easily a match for the battleships that regularly approach from Stormwind. Hushed whispers from her decks echo through the cold air, carried by the howling wind.
There is however, a few lights twinkling from what few portholes the menacing looking warship has, one of them casting the shadows of a handful of figures moving about.
"You really sold the whole damned lot of them to the Alliance?" muttered the stunning female blood Blood Elf, reclining back on a rocking hammock nestled in the corner of the expansive Captains cabin. Her figure is almost feline in its elegance, half curled up and propped up with a single elbow as her blond hair cascades behind her.
"All of 'em" the Captain replies with a trace of humor, his rough fingers counting out the Braves hard earned gold with a steady clink-clink. He chuckles, scooping the whole lot into a wooden strongbox before clasping it shut. "Now the Tuskarr will think those Alliance fools sold them the dodgy hardware, not us...".
"And if those Alliance fools find out?" comes the booming voice of a Tauren, his muscular figure looming threateningly in the dark corner of the room, lit only by the occasional spray of sparks from his whetstone as he sharpens a fearsome looking axe.
"Then let them find out my friend, let them come for their gold..." the Orc laughs, standing up with a creak as his chair grinds back against the wooden floor. "We've dealt with far worse my friends, I can't believe they fell for it though, not even one of them questioned why the Horde was even bothering with the pitiful place and those fat repulsive creatures" he snorts. A typical Orc by any means, scarred by numerous battles and with the cocky swagger of someone who has cheated death on more occasions then could be fair.
"I liked the High Elf... oh he was ravishing..." mumbles the Elf distractedly, her eyes burning into some sort of orb resting on her lap. "I can see them now... Valiance Keep... such... " she sighs, leaning back with a giggle of fel-induced bliss before snarling as the scrying orb bounces off the wall and fingers close rapidly around her neck.
"Do not test my patience Elf, I barely tolerate you aboard my ship as is... and you feel that you can flaunt your foul art in front of me, Warlock?" the Captain snarls, his hand tensing around the Elves neck for a brief few seconds, enough for her to let out a spluttered cough. "Do not test me..." he mutters, before finally letting her go and meeting the piercing glare of the Tauren who quickly looks away, returning his attention to sharpening his blade.
The Orc captain strides up to the main deck, hands clasped behind his back as he regards the floating aurora above his head shimmering in hues of green and blue giving the whole boat an almost otherworldly appearance. His crew working tirelessly keeping the ship ready for battle, their various shapes and sizes moving in the ethereal light almost appearing like ghosts haunting some sort of ancient tomb. There is one feature though that remains flawless throughout, the piercing red banner that hangs off the single solitary flagpole of the Dreadnought.
The banner of the Bloodsail Buccaneers.


text:
export { IStatisticsPersistence } from './IStatisticsPersistence';
export { StatisticsMemoryPersistence } from './StatisticsMemoryPersistence';
export { StatisticsFilePersistence } from './StatisticsFilePersistence';
export { StatisticsMongoDbPersistence } from './StatisticsMongoDbPersistence';

redpajama_set_name: RedPajamaGithub


ANZ has invested an undisclosed amount in a UK fintech platform that offers financial institutions and companies a way to take part in open banking. Bud's platform acts as an additional layer of technology that increases the functionality of new or existing apps. Through APIs, Bud is essentially offering a way for banks to securely connect to fintechs through existing bank apps. If its Series A funding round is anything to go by, the banks are on board.
Bud raised $20 million from a number of high-profile financial institutions globally with the round co-led by HSBC and Goldman Sachs. Other financial institutions that took part in the Series A funding include ANZ, South Africa's Investec and Spain's Banco Sabadell.
"ANZ is pleased to be working with Bud and its open banking technology as we look to provide our customers with the best digital banking experience," said an ANZ spokesperson.
Open banking, the first iteration of Australia's Consumer Data Right which will see consumers able to direct their financial data to be shared between authorised companies, will start in Australia by 1 February 2020.
The investment is one of many steps ANZ has taken to prepare for Australia's new open banking environment. In February 2018 ANZ announced a strategic investment and partnership with startup Data Republic. Data Republic's platform offers a way for institutions to securely store and share data and will allow ANZ to participate in the open banking regime.
Bud's co-founder and chief executive Ed Maslaveckas told CNBC the sector has seen a shift to a marketplace baking model.
"The market dynamic is such that open banking is a much bigger change for banks than I think people realise," he said. "Open banking essentially allows the customer to get their banking data and make payments from any app or service of their choosing."
Bud currently operates out of a UK office where open banking has been in operation since January 2018. Maslaveckas confirmed to CNBC that international expansion was part of Bud's strategy but the company would not be making any major moves until the end of this year.


text:
Wedding Ceremony Songs
Prelude Songs
Processional Songs
Recessional Songs
Themed Wedding Music
Cocktail Hour Music
Hiring Wedding Musicians
U2: Popular Wedding Songs
Matthew Lister January 6, 2015 December 29, 2016 No Comments on U2: Popular Wedding Songs
U2's music may seem like an unusual choice for a wedding, but many of their greatest hits have become popular wedding songs over the years.
Although the band isn't known for writing love songs and the love songs they do write tend to be bittersweet, U2 have written many songs with beautiful melodies and sentimental lyrics, two basic requirements for wedding music.
U2 songs are often a popular choice not only for fans of the band but also for couples who favor modern wedding songs or couples who want to play Irish music at their wedding.
Whatever category you fall into, here's a list of U2 songs to choose from for your wedding day:
U2 Prelude Songs:
In a Little While was written and performed by U2 and produced by Brian Eno and Daniel Lanois. It was released on U2's 2000 album, All That You Can't Leave Behind. Bono wrote the song about his wife, whom he has been married to for over 30 years, which is why it features romantic lyrics about a longtime love.
In a Little While kicks off with The Edge playing a clean guitar riff that, right off the bat, sounds like it could be an intro cooked up by the house band at Stax Records. The entire rhythm section goes for a soul-influenced sound with Adam Clayton's syncopated bass line and Larry Mullen's funky drum beat.
Bono gives an equally soulful performance in the vocals, eschewing straight forward pop melodies and giving more of an emphasis on impassioned, in-the-moment phrasing to the song's dramatic lyrics.
The First Time was written and performed by U2 and produced by Flood. It was released on U2's 1993 album, Zooropa. The First Time starts with The Edge layering guitars that pulse in and out of each ear in stereo, giving this hypnotic ballad a dream-like atmosphere.
The percussion is turned way down in the mix, with ambient, ethereal keyboards and piano taking over in the latter half of the song. This combined effect of the rhythm section provides a perfect background to Bono's heartfelt vocal performance. The reoccurring lyric in the chorus, "For the first time, I feel love," combined with the mellow mood of the song makes it a perfect prelude song.
U2 Processional Songs:
All I Want Is You
All I Want Is You was written and performed by U2 and produced by Jimmy Lovine. It was released on U2's 1989 album, Rattle and Hum. Bono himself sang this song in 2003 at the wedding of Luciano Pavarotti and Nicolette Montovani during a toast to the newlyweds.
The Edge's accented, clean rhythm guitar starts off as the only accompaniment to the echoing reverb to Bono's vocal track on All I Want Is You. The rest of the band enters around a minute in, with The Edge layering a few more guitars on top of keyboards, bass, and drums.
The track builds and crescendos with the addition of a string section arrangement, Bono's howling vocals, and a guitar solo that very much shows off The Edge's signature sound. The rest of the track plays out to the end with keyboards, piano, and a pulsating string arrangement.
With or Without You was written and performed by U2 and produced by Brian Eno and Daniel Lanois. It was released on U2's 1987 album, The Joshua Tree.
With or Without You is very much representative of U2's signature sound: Adam Clayton's bass line is outlining a basic I-V-vi-IV pop progression, but The Edge is not filling in these chords with guitar strumming. Rather he is relying rather on ambient, layered guitars that imply the chords rather than spelling them outright.
Bono puts on the vocal performance of a lifetime on this track, proving his vocal range with his impressively powerful voice. Despite the fact that the lyrics are bittersweet, With or Without you makes a great processional song due to its beautiful melody and downtempo beat.
U2 Recessional Songs:
Beautiful Day was written and performed by U2 and produced by Brian Eno, Daniel Lanois and Steve Lillywhite. It was released on U2's 2000 album, All That You Can't Leave Behind.
From the track's onset Beautiful Day might seem like a ballad, with its gentle sequence of syncopated chords, gently pulsating electronic drum beat, and simple, laid back bass line.
All notions of this song being a ballad are instantly dispelled by the chorus, when suddenly it seems like every track, from the distorted guitar, the layered backing vocals, and the singing from Bono himself explodes into a fiery crescendo.
Although not a love song, Beautiful Day features celebratory lyrics and uptempo beat, which makes it a great choice for a recessional song.
First Dance Songs:
Sweetest Thing
Sweetest Thing was written and performed by U2 and produced by Brian Eno, Daniel Lanois and Steve Lillywhite. It was originally released as a B-side on the Where the Streets Have No Name single in 1987 but was later rerecorded and released on U2's 1998 album, The Best of 1980-1990.
Bono wrote the song as an apology to his wife for working in the recording studio on her birthday during the recording of The Joshua Tree.
A syncopated piano track and Bono's falsetto vocals start off The Sweetest Thing, but soon after the track introduces tender 6ths rising from The Edge's guitar and Clayton's thumping bass line, giving the song a sweet, yet, upbeat feel. The harmonized "do's" in the backing vocals give this track a decidedly pop-y flavor.
Although these are all beautiful songs that would make perfect additions to your wedding, a popular U2 song that is often used in weddings and really shouldn't be is One.
One sounds like a sentimental song with a unifying message but it is actually about a bitter breakup. Even Bono has stated that he think it's ridiculous when couples use it in their wedding, which he explained in Neil McCormick's book U2 By U2:
"The song [One] is a bit twisted, which is why I could never figure out why people want it at their weddings. I have certainly met a hundred people who've had it at their weddings. I tell them, 'Are you mad? It's about splitting up!'"
If that isn't reason enough to avoid using One in your wedding, I don't know what is.
Are you a big U2 fan? U2 fans are fiercely devoted to the band and to their favorite songs so let us know what song you would choose for a wedding by leaving a comment below!
For other modern Irish songs, check out my article on Van Morrison wedding songs.
Wedding Ceremony Music
About Matthew Lister
Matthew Lister is a classical guitarist from New Hampshire with over a decade of experience arranging and performing songs for weddings. He graduated summa cum laude from the University of New Hampshire with a B.A. in Musical Performance in 2001. Visit Matthew's website at www.matthewlister.com
View all posts by Matthew Lister →
POPULAR POSTS THIS WEEK:
Italian Wedding Songs
Elvis Presley: Popular Wedding Songs
Irish Wedding Songs
Christmas Wedding Songs
Frank Sinatra: Popular Wedding Songs
Van Morrison: Popular Wedding Songs
How Much Does a Wedding Ceremony Musician Cost?
50 Musicians & Singers Give Advice: How to Choose Wedding Songs
Are you looking for some Irish wedding songs to help celebrate your Irish roots? About 39 million Americans claim Irish heritage, so it's no surprise Irish songs have become so popular at American weddings. Traditional Irish music evolved from musicians coming together at Irish weddings to play waltzes, jigs, and reels for dancing. [read more]
@ Matthew Lister 2014 - 2019 www.matthewlister.com


text:
944 Hidalgo
Title: 944 Hidalgo
Subject: Hubble search for transition comets, D-type asteroid, Centaur (minor planet), List of Saturn-crossing minor planets, Walter Baade
Miguel Hidalgo y Costilla
Minor planet category
Jupiter-crosser asteroid,
Saturn-crosser asteroid
centaur[1]
Orbital characteristics
Epoch July 14, 2004 (JD 2453200.5)
9.539 AU
(1427.003 Gm)
(291.846 Gm)
Semi-major axis
13.77 yr
(5029.467 d)
Average orbital speed
12.43 km/s
Mean anomaly
346.285°
42.567°
Longitude of ascending node
Argument of perihelion
38 km[1]H
Rotation period
0.419 29 d[2]
0.06 (assumed)[1]
~116 K
D-type asteroid
Absolute magnitude (H)
10.77[1]
944 Hidalgo ( ) is a small Solar System body with a semi-major axis beyond Jupiter's and an orbital period of 13.77 years. This makes it a centaur, the first to be discovered, but it was discovered in 1920 and has hence traditionally been called an asteroid. Hidalgo is estimated to be 38 km in diameter.[1]
Discovery and subsequent studies
944 Hidalgo trajectory
944 Hidalgo was discovered by Walter Baade on October 31, 1920 at Bergedorf Observatory near Hamburg, Germany. It is named for Miguel Hidalgo y Costilla, who was responsible for declaring Mexico's independence in 1810 and the ensuing Mexican War of Independence. German astronomers who were in Mexico to observe a total eclipse on September 10, 1923, had an audience with President Álvaro Obregón. During this meeting, they asked his permission to name the asteroid after Hidalgo.[3]
It was one of five minor planets included in the 1993 study, Transition Comets—UV Search for OH Emissions in Asteroids, which was research involving amateur astronomers who were permitted to make use of the Hubble Space Telescope.
In the late 1990s, a network of astronomers worldwide gathered light curve data that was ultimately used to derive the spin states and shape models of 10 new asteroids, including 944 Hidalgo. The authors describe the shape model as having 'very large flat areas and a "rectangular" pole-on silhouette, which are strong indications of a highly nonconvex shape'. Some of the light curves show sharp minima, which indicates the object shape may have two lobes.[4][5] Lightcurve data has also been recorded by observers at the Antelope Hills Observatory, which has been designated as an official observatory by the Minor Planet Center.[6]
When Pluto was discovered Hidalgo was the furthest known minor planet from the Sun.[7]
944 Hidalgo is a centaur[1] because it has a semi-major axis between Jupiter's and Neptune's. Despite this, the Minor Planet Center (MPC) does not list it as a centaur.[8] Hidalgo has traditionally been considered an asteroid because centaurs were not recognized as a distinct class until the discovery of 2060 Chiron in 1977.
With a high eccentricity of 0.66, its perihelion of 1.95 AU takes it to the inner edge of the asteroid belt, whereas its aphelion of 9.54 AU takes it out to Saturn's orbit, a characteristic normally associated with Saturn's family of comets. Some astronomers therefore suspect that it was once a comet. Strictly speaking, Hidalgo is a Saturn-grazer rather than a Saturn-crosser as its aphelion does not clear Saturn's. Hidalgo's severe orbital inclination of 43° is suspected to be the result of a close encounter with Jupiter. Even as recently as 1922, Hidalgo passed within 0.89 AU of Jupiter,[9] significantly affecting its orbit.
^ a b c d e f "JPL Small-Body Database Browser: 944 Hidalgo (1920 HZ)" (2008-05-09 last obs). Retrieved 2008-03-09.
^ "Minor planet lightcurve parameters". Ipa.nw.ru. Retrieved 2013-10-30.
^ Schmadel Lutz D. Dictionary of Minor Planet Names (fifth edition), Springer, 2003. ISBN 3-540-00238-3.
^ Durech, J.; et al. (April 2007), "Physical models of ten asteroids from an observers' collaboration network", Astronomy and Astrophysics 465 (1): 331–337,
^ Durech, J.; Kaasalainen, M.; Marciniak, A.; Allen, W. H. et al. "Asteroid brightness and geometry," Astronomy and Astrophysics, Volume 465, Issue 1, April I 2007, pp. 331-337.
^ http://www.antelopehillsobservatory.org/Lightcurves/944.gif
^ "JPL Small-Body Database Search Engine". JPL Solar System Dynamics. Archived from the original on 31 May 2008. Retrieved 2008-05-27. (characteristic:a>5.7)
^ "List Of Centaurs and Scattered-Disk Objects". Minor Planet Center. Retrieved 2008-10-04.
^ "JPL Close-Approach Data: 944 Hidalgo (1920 HZ)" (2008-06-10 last obs). Retrieved 2009-05-05.
Orbital simulation from JPL (Java) / Horizons Ephemeris
Minor planets navigator
943 Begonia
Small Solar System bodies
Meanings of names
Pronunciation of names
Aten asteroid
Jupiter Trojans
Main-belt
Near-Earth
Spectral types
Distant minor planets
Damocloids
Neptune trojans
Trans-Neptunian objects
Scattered disc
Non-periodic
Sungrazing
Meteoroids
Lists / categories
Asteroid groups and families
Asteroid moons
Binary asteroids
D-type asteroids (Tholen)
Discoveries by Walter Baade
Asteroids named for people
Astronomical objects discovered in 1920
Centaurs (minor planets)
Numbered asteroids
Solar System, Saturn, Venus, Earth, Mass
Venus, Internet, University of Victoria, Oregon, British Columbia
Centaur (minor planet)
Jupiter, Uranus, Neptune, Solar System, Mars
Berlin, Germany, Holy Roman Empire, Bremen (state), Hanseatic League
Berlin, North Rhine-Westphalia, Hamburg, France, United Kingdom
Hubble search for transition comets
Hubble Space Telescope, Jupiter, 944 Hidalgo, 2201 Oljato, 224 Oceana
Jupiter trojan, Carbon, Ice, Asteroid belt, 944 Hidalgo
List of Saturn-crossing minor planets
Saturn, Orbit, Minor planet, 944 Hidalgo, Centaur (minor planet)
Germany, World War II, Astronomy, University of Göttingen, Neutron star


Karachi: Unidentified gunmen opened fire at former Pakistan skipper and pace legend Wasim Akram here on Wednesday, but he survived the assassination attempt, the media reported.
The attack took place on Shah Faisal Road near Karsaaz area when Wasim was in a car, travelling from his home to the National Stadium.
The motive behind the attack was unclear. Akram recently took up a bowling assignment with the Pakistan Cricket Board.


Excel is excited to offer a dual-enrolled option for our college bound high school students who want to earn college credit for math and English. Our goal is to offer more courses as we work in tandem with Multnomah University. We are working diligently to provide an accelerated program for high achieving middle school students as well.
There are two types of legal private schools in Nevada: licensed and exempt. Because of our convictions and our philosophy of education, Excel is operated as an exempt school under the provision of NRS 394.211 and as such is exempt from the provisions of the Private Elementary and Secondary Education Authorization Act. To maintain our exempt status, we are responsible for providing an education that is comparable to the public schools, and we strive to go even beyond the state and county standards. We are also accountable for the safety of our students by providing a quality facility.
Excel has received full accreditation through the Association of Christian Schools International (ACSI) and AdvancED.
Excel has a culturally and economically diverse student body. We are a SEVIS-approved school, enabling us to accept international students.
Excel's middle school and high school classes are on a mixed block and regular schedule. Morning core classes meet 4 times each week and afternoon electives meet 3 times each week. Christian Studies meets daily.
High school graduation requirements are the same as Washoe County's.
Students who graduate under the requirements of the honors program receive a distinctive diploma and a statement on their official high school transcript indicating they are graduates of the honors program.
AP classes are currently offered in English and American history. Honors classes are available for any of the core academic classes.