#!/bin/sh
 
 # l_code
 # ======

 # This file is part of Gerolf Markup Shredder,
 # written by G. D. Brettschneider (1999-2006).
 
 GMSdateL_CODE=20060927
 
 # Prologue: ==================================================================
 
 # Not running:
 
 if [ "$GMS_SHELL" = "" ]; then
   echo "This is Gerolf Markup Shredder (l_code)."
   exit
 fi 
 
 # Debug: ---------------------------------------------------------------------
   
 if [ "$GMS_DEBUG" = "X" -o "$GMS_DEBUG" = "Y" ]; then
   source "$GMS_SHELL/l_banner" -debug l_code $1 $2 $3 $4
 elif  [ "$GMS_DEBUG" = "Z" ]; then
   echo " l_code ($1) ($2) ($3) ($4) ($5) ($6) ($7) ($8) ($9)" >> "$Z"
 fi 
  
 # Code column: ---------------------------------------------------------------
 
 function l_code_code {
 # upper half:
   if [ $1 = -up ]; then 
   # Character:
     REPLY_SIZE=1
     REPLY_OFFSET=$OFFSET_A
     "$GMS_REPLY" -stripe 5 $REPLY_HOTKEY "$2"
     "$GMS_REPLY" -stripe 6 $REPLY_HOTKEY "$3"
     "$GMS_REPLY" -stripe 7 $REPLY_HOTKEY "$4"
     "$GMS_REPLY" -stripe 8 $REPLY_HOTKEY "$5"
     "$GMS_REPLY" -stripe 9 $REPLY_HOTKEY "$6"
     "$GMS_REPLY" -stripe 10 $REPLY_HOTKEY "$7"
     "$GMS_REPLY" -stripe 11 $REPLY_HOTKEY "$8"
     "$GMS_REPLY" -stripe 12 $REPLY_HOTKEY "$9"
   # Gap:
     REPLY_SIZE=1
     REPLY_OFFSET=$OFFSET_B
     "$GMS_REPLY" -stripe 12 0 32
     "$GMS_REPLY" -stripe 11 0 32
     "$GMS_REPLY" -stripe 10 0 32
     "$GMS_REPLY" -stripe 9 0 32
     "$GMS_REPLY" -stripe 8 0 32
     "$GMS_REPLY" -stripe 7 0 32
     "$GMS_REPLY" -stripe 6 0 32
     "$GMS_REPLY" -stripe 5 0 32 
   # Number:
     REPLY_SIZE=7
     REPLY_OFFSET=$OFFSET_C
     "$GMS_REPLY" -banner 5 "$2"
     "$GMS_REPLY" -banner 6 "$3"
     "$GMS_REPLY" -banner 7 "$4"
     "$GMS_REPLY" -banner 8 "$5"
     "$GMS_REPLY" -banner 9 "$6"
     "$GMS_REPLY" -banner 10 "$7"
     "$GMS_REPLY" -banner 11 "$8"
     "$GMS_REPLY" -banner 12 "$9"
 # lower half:
   elif [ $1 = -lo ]; then 
   # Character:
     REPLY_SIZE=1
     REPLY_OFFSET=$OFFSET_A
     "$GMS_REPLY" -stripe 20 $REPLY_HOTKEY "$9"
     "$GMS_REPLY" -stripe 19 $REPLY_HOTKEY "$8"
     "$GMS_REPLY" -stripe 18 $REPLY_HOTKEY "$7"
     "$GMS_REPLY" -stripe 17 $REPLY_HOTKEY "$6"
     "$GMS_REPLY" -stripe 16 $REPLY_HOTKEY "$5"
     "$GMS_REPLY" -stripe 15 $REPLY_HOTKEY "$4"
     "$GMS_REPLY" -stripe 14 $REPLY_HOTKEY "$3"
     "$GMS_REPLY" -stripe 13 $REPLY_HOTKEY "$2"
   # Gap:
     REPLY_SIZE=1
     REPLY_OFFSET=$OFFSET_B
     "$GMS_REPLY" -stripe 13 0 32
     "$GMS_REPLY" -stripe 14 0 32
     "$GMS_REPLY" -stripe 15 0 32
     "$GMS_REPLY" -stripe 16 0 32
     "$GMS_REPLY" -stripe 17 0 32
     "$GMS_REPLY" -stripe 18 0 32
     "$GMS_REPLY" -stripe 19 0 32
     "$GMS_REPLY" -stripe 20 0 32 
   # Number:
     REPLY_SIZE=7
     REPLY_OFFSET=$OFFSET_C
     "$GMS_REPLY" -banner 20 "$9"
     "$GMS_REPLY" -banner 19 "$8"
     "$GMS_REPLY" -banner 18 "$7"
     "$GMS_REPLY" -banner 17 "$6"
     "$GMS_REPLY" -banner 16 "$5"
     "$GMS_REPLY" -banner 15 "$4"
     "$GMS_REPLY" -banner 14 "$3"
     "$GMS_REPLY" -banner 13 "$2"
   fi; }
   
 # Number column (upper half): ------------------------------------------------
 
 function l_code_num {
 # upper half:
   if [ $1 = -up ]; then 
     REPLY_SIZE=7
     REPLY_OFFSET=$OFFSET_C
     "$GMS_REPLY" -banner 5 "$2"
     "$GMS_REPLY" -banner 6 "$3"
     "$GMS_REPLY" -banner 7 "$4"
     "$GMS_REPLY" -banner 8 "$5"
     "$GMS_REPLY" -banner 9 "$6"
     "$GMS_REPLY" -banner 10 "$7"
     "$GMS_REPLY" -banner 11 "$8"
     "$GMS_REPLY" -banner 12 "$9"
 # lower half:
   elif [ $1 = -lo ]; then 
     REPLY_SIZE=7
     REPLY_OFFSET=$OFFSET_C
     "$GMS_REPLY" -banner 20 "$9"
     "$GMS_REPLY" -banner 19 "$8"
     "$GMS_REPLY" -banner 18 "$7"
     "$GMS_REPLY" -banner 17 "$6"
     "$GMS_REPLY" -banner 16 "$5"
     "$GMS_REPLY" -banner 15 "$4"
     "$GMS_REPLY" -banner 14 "$3"
     "$GMS_REPLY" -banner 13 "$2"
   fi; }
 
 # Chapters: ==================================================================
 
 # Not defined:
 
 if [ "$1" = "" ]; then source "$GMS_SHELL/l_banner" -no_action l_code
    
 # Codepage: ------------------------------------------------------------------
 
 elif [ $1 = -cp_lo \
   -o $1 = -cp_up ]; then
 # Clear desktop area for codepage pane:
   for i in 12 13 11 14 10 15 ; do "$GMS_REPLY" -stripe $i 0 32; done
   for i in 9 16 8 17 7 18 ; do "$GMS_REPLY" -stripe $i 0 32; done
   for i in 6 19 5 20 4 21 ; do "$GMS_REPLY" -stripe $i 0 32; done
 # Code rows:
   PAGE=$1
   CODE_UP="l_code_code -up" 
   CODE_LO="l_code_code -lo" 
   NUM_UP="l_code_num -up" 
   NUM_LO="l_code_num -lo" 
 # Column 5:
   OFFSET_A=45
   OFFSET_B=44
   OFFSET_C=41
   if [ $PAGE = -cp_lo ]; then
     $CODE_UP " 64" " 65" " 66" " 67" " 68" " 69" " 70" " 71"
     $CODE_LO " 72" " 73" " 74" " 75" " 76" " 77" " 78" " 79"
   else 
     $CODE_UP 192 193 194 195 196 197 198 199
     $CODE_LO 200 201 202 203 204 205 206 207
   fi
 # Column 4:
   OFFSET_A=36
   OFFSET_B=35
   OFFSET_C=32
   if [ $PAGE = -cp_lo ]; then
     $CODE_LO " 56" " 57" " 58" " 59" " 60" " 61" " 62" " 63"
     $CODE_UP " 48" " 49" " 50" " 51" " 52" " 53" " 54" " 55"
   else 
     $CODE_LO 184 185 186 187 188 189 190 191
     $CODE_UP 176 177 178 179 180 181 182 183
   fi
 # Column 6:
   OFFSET_A=54
   OFFSET_B=53
   OFFSET_C=50
   if [ $PAGE = -cp_lo ]; then
     $CODE_UP " 80" " 81" " 82" " 83" " 84" " 85" " 86" " 87"
     $CODE_LO " 88" " 89" " 90" " 91" " 92" " 93" " 94" " 95"
   else 
     $CODE_UP 208 209 210 211 212 213 214 215
     $CODE_LO 216 217 218 219 220 221 222 223
   fi
 # Column 3:
   OFFSET_A=27
   OFFSET_B=26
   OFFSET_C=23
   if [ $PAGE = -cp_lo ]; then
     $CODE_LO " 40" " 41" " 42" " 43" " 44" " 45" " 46" " 47"
     $CODE_UP " 32" " 33" " 34" " 35" " 36" " 37" " 38" " 39"
   else 
     $CODE_LO 168 169 170 171 172 173 174 175
     $CODE_UP 160 161 162 163 164 165 166 167
   fi
 # Column 7:
   OFFSET_A=63
   OFFSET_B=62
   OFFSET_C=59
   if [ $PAGE = -cp_lo ]; then
     $CODE_UP " 96" " 97" " 98" " 99" 100 101 102 103
     $CODE_LO 104 105 106 107 108 109 110 111 
   else 
     $CODE_UP 224 225 226 227 228 229 230 231
     $CODE_LO 232 233 234 235 236 237 238 239
   fi
 # Column 2:
   OFFSET_C=14
   if [ $PAGE = -cp_lo ]; then
     $NUM_LO " 24" " 25" " 26" " 27" " 28" " 29" " 30" " 31"
     $NUM_UP " 16" " 17" " 18" " 19" " 20" " 21" " 22" " 23"
   else 
     $NUM_LO 152 153 154 155 156 157 158 159
     $NUM_UP 144 145 146 147 148 149 150 151
   fi
 # Column 8:
   OFFSET_A=72
   OFFSET_B=71
   OFFSET_C=68
   if [ $PAGE = -cp_lo ]; then
     $CODE_UP 112 113 114 115 116 117 118 119
     $CODE_LO 120 121 122 123 124 125 126 127
   else 
     $CODE_UP 240 241 242 243 244 245 246 247
     $CODE_LO 248 249 250 251 252 253 254 255
   fi 
 # Column 1:
   OFFSET_C=5
   if [ $PAGE = -cp_lo ]; then
     $NUM_UP " 0" " 1" " 2" " 3" " 4" " 5" " 6" " 7"
     $NUM_LO " 8" " 9" " 10" " 11" " 12" " 13" " 14" " 15"
   else 
     $NUM_UP 128 129 130 131 132 133 134 135
     $NUM_LO 136 137 138 139 140 141 142 143
   fi
 # Unset:
   CODE_UP=
   CODE_LO=
   NUM_UP=
   NUM_LO= 
   
 # Not found: -----------------------------------------------------------------
 
 else
   source "$GMS_SHELL/l_banner" -no_action l_code $1   
 fi
