The BASIC ROM contains the BASIC interpreter. User enter the program line by line and it was parsed and stored as linked list in memory. The line number specified for each statement is needed for the parser to know where to insert the parsed structure in the linked list. The parsed statements are then interpreted to run the program.
Saturday, January 20, 2024
Sunday, January 14, 2024
CICS PCP
Program Control Program (PCP) is used support program call function in CICS. CICS supports LINK API which allow one program to call another program. The callee returns to the caller when finished. XCTL pass control to another program of the same level and there is not return from the callee. LOAD allows a program to load another load module (table, map etc) into memory. PCP also support abend handler (HANDLE ABEND) which percolate control up program levels when a program encountered an abend.
CICS PCP functions allow related program to call each other dynamically. Related programs does not need to be linked into a big module. PCP also allocate separate working storage for each transaction which share the same program. PCP also saves and restores program related fields in TCA.
Saturday, January 13, 2024
CICS Table Management
Table management module was introduced to supported RDO on CICS. As RDO is dynamic in nature, TMP uses a chained table entries in a list so that the size can changed without restarting CICS. Each control table chain in CICS started from a scatter table which contain a hash table of pointers. Table entries are hashed for fast search starting from the pointer in corresponding table entries. Entries hashed to the same value will be chained off. The scatter table also contains a pointer that chain all entries for sequential scan through the whole table. Program like CEMT can access tables via a call to TMP.
TCA LIFO
The LIFO area is a stack area used by CICS modules to save registers. Additional LIFO storage can be allocated in DSA.
Transaction Work Area
TWA can be requested via PCT. TWA is mainly used by macro level program became the working storage is not duplicated for each task using the same macro level program. In marco level program, the working storage is assumed to be read only.
(his is different from command line program which using EIP and the working storage is automated allocated separately for each transaction using the same program. Therefore, command level program seldom uses TWA.
TWA is deleted when the transaction ends. The issue for using TWA is that it is allocated behind UTCA in control block area. Storage violation would likely affects CICS availability.
CICS Dispatcher list
The suspend list contains tasks that waiting for long wait. I/O wait is not considered to be long and thus task waiting for I/O is queued in the active list instead. Long wait are those that may not have a target deadline like terminal I/O or interval control wait etc.
Tasks in active list are ordered by priority which is calculated as the sum of transaction, terminal and user priority capped to 255 (stored in a byte).
TCP (Terminal Control) task which is used to attach new task have priority of 255 and is placed on top of the list. Tasks are queued in the active chain in priority order. New task are placed behind tasks with same priority (FIFO).
Saturday, January 6, 2024
X86 floating point
80287 was the first floating point co-processor for x86. The floating point registers were organized in a stack architecture. Floating point instructions was handled by ESC opcode prefix. The performance has been lagging comparing to other CPU. Intel subsequently introduced SSE implemented with a traditional floating point architecture. SSE also allow loading of 4 single precision floating point data into its register and gave further speed up.