 
*  CHRCOAL/S        Dec / 15 / 92
 
*  Character configuration from A/L source file
*--------------------------------------------------
*  Replace or edit character data entries as needed
*  Use CHARREAD/O to generate data file from existing
*  char files.  Incorporate as needed with Editor.
*  Also serves as example of FW system calls
*-----------------------------------------------------
*  Program MUST be run from Funnelweb Loader Opt 4 L&R
 
       AORG >A050             Above mailbox
 
PABV   EQU  >0F40
PBFV   EQU  >0F80             Clear QD sector buffers @>17FE V
 
DSRLNK EQU  >FFD4             FW equates
KSCANA EQU  >FFD0
FILENT EQU  >FFCC
VMBWD  EQU  >FFBA
RDDEV  EQU  >FFA0
FWREG  EQU  >FF7C
ESFLAG EQU  >FF60
CMSRET EQU  >FF5C
QDXFL  EQU  >FF52
QDLOAD EQU  >FF3C
AIDFL  EQU  >FF3A
QDSAV  EQU  >FF20
 
QDPOS  EQU  >CE00
QDLEN  EQU  >A40
 
       DEF  CHARS             Auto entry point
 
CHARS  EQU  $
       LIMI 0                 Kill system Quit
       LWPI FWREG             Use FW workspace
 
*  Bring in QD if not present
 
       MOV  @QDSAV,@QDXFL     Check and refresh flag
       JNE  NOLOAD            It is there !
 
       MOV  @QDLOAD,R11       Pointer to FW block loader
       BL   *R11              Execute it
       DATA 'QD',QDPOS,QDLEN  Necessary data
       JMP  NOLOAD            Failed
       SETO @QDXFL            Success
NOLOAD LI   R11,AIDQD         Set up to intercept AID in FILENT
       MOV  R11,@AIDFL        Where it goes
       LI   R11,BAK2FW        Set <esc> flag
       MOV  R11,@ESFLAG       Allows bailout
 
*  Clear Graphics I screen
 
       CLR  R0
       BLWP *R8               VFILL
       DATA 0,>300
 
*  Write up output disk filename and enter
 
       BLWP *R9               VMBWD
       DATA >C08,ULDAT,8
       BLWP *R9               Header
       DATA 5
       DATA SLMS10,SLML10
       LI   R0,>8181          Underline
       BLWP *R8
       DATA >25,SLML10
       BLWP *R9               Footer
       DATA >81
       DATA OPMSG,OPMSL
       BLWP *R8               Underline
       DATA >A1,OPMSL
 
       BLWP *R9               Suggested filename
       DATA >E1
       DATA FLNAME,15
       BLWP @FILENT           Filename editor in FW
       DATA >E1,25            Screen pointer, window length
       MOV  @RDDEV,R11        Pointer to PAB loader
       BL   *R11              Execute it
       DATA >E1,FLNLEN        Screen, name buffer
       DATA PABV,PABDAT       PAB to VDP, CPU PAB data
 
 
*  CHAR@1 data to VDP for program file data & save to disk
 
       BLWP *R9
       DATA PBFV,CHFDAT,>0800
       LI   R3,PABV+9
       MOV  R3,@>8356         Load pointer
       BLWP @DSRLNK           Save it
       JNE  BAK2FW            No obvious error - no fancy checks
 
*  Error exit
 
ERROR  BLWP *R9               Error message
       DATA >2E8,ERMS1,ERMS1L
       BLWP @KSCANA           Wait for key
       JEQ  $-4
       JMP  KEY
 
*  Final exit
 
BAK2FW LWPI FWREG             In case it was <esc>
       CLR  @ESFLAG           Reset flags from local use
       CLR  @AIDFL
       BLWP *R9               Exit message
       DATA >2E8,KEYMS,KEYML
KEY    BLWP @KSCANA           Wait for key
       JOP  KEY
       MOV  @CMSRET,R11       Return to main menu
       RT
 
*  AID key response - Executed in a BLWP
 
AIDQD  EQU  $
       MOV  @QDXFL,R11        Is it there  ?
       JEQ  ADQ30             No
 
       BL   @QDPOS            Execute QD
ADQ30  RTWP                   ; Return to FILENT
 
*  Underline data
 
ULDAT DATA >0000,>00FF,>0,>0
 
*  PAB data
 
PABDAT DATA >0600,PBFV,>0
       DATA CHFLEN
       BYTE >00
FLNLEN BYTE >0B
FLNAME TEXT 'DSK'
       TEXT '5.CHAR@1    '
       TEXT '         '
PABLEN EQU  $-PABDAT
 
 
OPMSG  TEXT 'Output to :'
OPMSL  EQU  $-OPMSG
 
SLMS10 TEXT 'FW Character File Maker'
SLML10 EQU  $-SLMS10
 
KEYMS  TEXT ' ** Key to exit **'
KEYML  EQU  $-KEYMS
 
ERMS1  TEXT 'Disk/File problem '
ERMS1L EQU  $-ERMS1
 
       EVEN
 
 
*  Character file data
*-------------------------------------------------------------
*  CHFLEN truncates last char (>7F or >FF) to allow for header
*  so last sector is filled.
 
 
CHFDAT DATA >0000,>0000,>0000            6 byte dummy header
 
CHAR00 DATA >0020,>0000,>1824,>2418
CHAR01 DATA >0020,>0008,>1808,>081C
CHAR02 DATA >0020,>0018,>2408,>103C
CHAR03 DATA >0020,>0018,>2408,>2418
CHAR04 DATA >0020,>0014,>141C,>0404
CHAR05 DATA >0020,>001C,>1018,>0418
CHAR06 DATA >0020,>0008,>1038,>2418
CHAR07 DATA >0020,>001C,>0408,>1010
CHAR08 DATA >0020,>0018,>2418,>2418
CHAR09 DATA >0020,>0018,>241C,>0408
CHAR0A DATA >4040,>7000,>1C10,>1C10
CHAR0B DATA >0040,>0020,>2038,>2438
CHAR0C DATA >0070,>5070,>4854,>1C14
CHAR0D DATA >0070,>4070,>001C,>1010
CHAR0E DATA >0020,>0018,>243C,>2018
CHAR0F DATA >0040,>0814,>101C,>1010
CHAR10 DATA >0040,>4040,>1824,>2418
CHAR11 DATA >0020,>2020,>2808,>0808
CHAR12 DATA >0040,>4058,>2408,>103C
CHAR13 DATA >0040,>4058,>2408,>2418
CHAR14 DATA >0040,>4054,>141C,>0404
CHAR15 DATA >0040,>405C,>1018,>0418
CHAR16 DATA >0040,>4048,>1038,>2418
CHAR17 DATA >0040,>405C,>0408,>1010
CHAR18 DATA >0040,>4058,>2418,>2418
CHAR19 DATA >0040,>4058,>241C,>0408
CHAR1A DATA >0040,>4040,>1824,>3C24
CHAR1B DATA >0040,>4050,>101C,>141C
CHAR1C DATA >0040,>4040,>1C10,>101C
CHAR1D DATA >0040,>4444,>041C,>141C
CHAR1E DATA >0070,>7070,>7070,>7070
CHAR1F DATA >0040,>4C50,>101C,>1010
CHAR20 DATA >0000,>0000,>0000,>0000
CHAR21 DATA >0010,>1010,>1010,>0010
CHAR22 DATA >0028,>2828,>0000,>0000
CHAR23 DATA >0028,>287C,>287C,>2828
CHAR24 DATA >0038,>5450,>3814,>5438
CHAR25 DATA >0060,>6408,>1020,>4C0C
CHAR26 DATA >0020,>5050,>2054,>4834
CHAR27 DATA >0008,>0810,>0000,>0000
CHAR28 DATA >0008,>1020,>2020,>1008
CHAR29 DATA >0020,>1008,>0808,>1020
CHAR2A DATA >0000,>2810,>7C10,>2800
CHAR2B DATA >0000,>1010,>7C10,>1000
CHAR2C DATA >0000,>0000,>0030,>1020
CHAR2D DATA >0000,>0000,>7C00,>0000
CHAR2E DATA >0000,>0000,>0000,>3030
CHAR2F DATA >0000,>0408,>1020,>4000
CHAR30 DATA >0038,>4444,>4444,>4438
CHAR31 DATA >0010,>3010,>1010,>1038
CHAR32 DATA >0038,>4404,>0810,>207C
CHAR33 DATA >0038,>4404,>1804,>4438
CHAR34 DATA >0008,>1828,>487C,>0808
CHAR35 DATA >007C,>4078,>0404,>4438
CHAR36 DATA >0018,>2040,>7844,>4438
CHAR37 DATA >007C,>0408,>1020,>2020
CHAR38 DATA >0038,>4444,>3844,>4438
CHAR39 DATA >0038,>4444,>3C04,>0830
CHAR3A DATA >0000,>3030,>0030,>3000
CHAR3B DATA >0000,>3030,>0030,>1020
CHAR3C DATA >0008,>1020,>4020,>1008
CHAR3D DATA >0000,>007C,>007C,>0000
CHAR3E DATA >0020,>1008,>0408,>1020
CHAR3F DATA >0038,>4404,>0810,>0010
CHAR40 DATA >0038,>445C,>545C,>4038
CHAR41 DATA >0038,>4444,>7C44,>4444
CHAR42 DATA >0078,>2424,>3824,>2478
CHAR43 DATA >0038,>4440,>4040,>4438
CHAR44 DATA >0078,>2424,>2424,>2478
CHAR45 DATA >007C,>4040,>7840,>407C
CHAR46 DATA >007C,>4040,>7840,>4040
CHAR47 DATA >003C,>4040,>5C44,>4438
CHAR48 DATA >0044,>4444,>7C44,>4444
CHAR49 DATA >0038,>1010,>1010,>1038
CHAR4A DATA >0004,>0404,>0404,>4438
CHAR4B DATA >0044,>4850,>6050,>4844
CHAR4C DATA >0040,>4040,>4040,>407C
CHAR4D DATA >0044,>6C54,>5444,>4444
CHAR4E DATA >0044,>6464,>544C,>4C44
CHAR4F DATA >007C,>4444,>4444,>447C
CHAR50 DATA >0078,>4444,>7840,>4040
CHAR51 DATA >0038,>4444,>4454,>4834
CHAR52 DATA >0078,>4444,>7850,>4844
CHAR53 DATA >0038,>4440,>3804,>4438
CHAR54 DATA >007C,>1010,>1010,>1010
CHAR55 DATA >0044,>4444,>4444,>4438
CHAR56 DATA >0044,>4444,>2828,>1010
CHAR57 DATA >0044,>4444,>5454,>5428
CHAR58 DATA >0044,>4428,>1028,>4444
CHAR59 DATA >0044,>4428,>1010,>1010
CHAR5A DATA >007C,>0408,>1020,>407C
CHAR5B DATA >0038,>2020,>2020,>2038
CHAR5C DATA >0000,>4020,>1008,>0400
CHAR5D DATA >0038,>0808,>0808,>0838
CHAR5E DATA >0000,>1028,>4400,>0000
CHAR5F DATA >0000,>0000,>0000,>007C
CHAR60 DATA >0000,>2010,>0800,>0000
CHAR61 DATA >0000,>0038,>4848,>4834
CHAR62 DATA >0040,>4070,>4848,>4870
CHAR63 DATA >0000,>0038,>4040,>4038
CHAR64 DATA >0008,>0838,>4848,>4834
CHAR65 DATA >0000,>0038,>4870,>4038
CHAR66 DATA >0018,>2020,>7020,>2020
CHAR67 DATA >0000,>0038,>4838,>0830
CHAR68 DATA >0040,>4070,>4848,>4848
CHAR69 DATA >0010,>0030,>1010,>1038
CHAR6A DATA >0010,>0030,>1010,>5020
CHAR6B DATA >0040,>4048,>5060,>5048
CHAR6C DATA >0030,>1010,>1010,>1038
CHAR6D DATA >0000,>0078,>5454,>5454
CHAR6E DATA >0000,>0070,>4848,>4848
CHAR6F DATA >0000,>0030,>4848,>4830
CHAR70 DATA >0000,>0070,>4870,>4040
CHAR71 DATA >0000,>0038,>4838,>0808
CHAR72 DATA >0000,>0058,>6440,>4040
CHAR73 DATA >0000,>0038,>4038,>0438
CHAR74 DATA >0020,>2078,>2020,>2418
CHAR75 DATA >0000,>0048,>4848,>483C
CHAR76 DATA >0000,>0044,>4428,>2810
CHAR77 DATA >0000,>0044,>4454,>5438
CHAR78 DATA >0000,>0044,>2810,>2844
CHAR79 DATA >0000,>0048,>4830,>1020
CHAR7A DATA >0000,>0038,>0810,>2038
CHAR7B DATA >0018,>2020,>4020,>2018
CHAR7C DATA >0010,>1010,>0010,>1010
CHAR7D DATA >0030,>0808,>0408,>0830
CHAR7E DATA >0020,>5408,>0000,>0000
CHAR7F DATA >0000,>1028,>447C,>0000
 
*  End of 7-bit chars
*  Data up to here for 5 sector files
 
CHAR80 DATA >0038,>4440,>4438,>0838
CHAR81 DATA >0048,>0048,>4848,>483C
CHAR82 DATA >0008,>1038,>4870,>4038
CHAR83 DATA >0010,>2800,>3848,>4834
CHAR84 DATA >0048,>0038,>4848,>4834
CHAR85 DATA >0020,>1000,>3848,>4834
CHAR86 DATA >0030,>3000,>3848,>4834
CHAR87 DATA >0000,>0038,>4038,>1070
CHAR88 DATA >0010,>2838,>4870,>4038
CHAR89 DATA >0048,>0038,>4870,>4038
CHAR8A DATA >0020,>1038,>4870,>4038
CHAR8B DATA >0048,>0030,>1010,>1038
CHAR8C DATA >0010,>2800,>3010,>1038
CHAR8D DATA >0020,>1000,>3010,>1038
CHAR8E DATA >0044,>0038,>447C,>4444
CHAR8F DATA >0010,>0038,>447C,>4444
CHAR90 DATA >0008,>107C,>4078,>407C
CHAR91 DATA >0000,>002C,>5058,>502C
CHAR92 DATA >002C,>5050,>7850,>505C
CHAR93 DATA >0010,>2800,>3048,>4830
CHAR94 DATA >0048,>0030,>4848,>4830
CHAR95 DATA >0020,>1000,>3048,>4830
CHAR96 DATA >0010,>2800,>4848,>483C
CHAR97 DATA >0020,>1000,>4848,>483C
CHAR98 DATA >0048,>0048,>4830,>1020
CHAR99 DATA >0044,>007C,>4444,>447C
CHAR9A DATA >0044,>0044,>4444,>4438
CHAR9B DATA >0010,>3844,>4044,>3810
CHAR9C DATA >0018,>2420,>7020,>207C
CHAR9D DATA >0044,>2810,>7C10,>7C10
CHAR9E DATA >0070,>5050,>685C,>484C
CHAR9F DATA >0008,>1410,>3810,>5020
CHARA0 DATA >0008,>1000,>3848,>4834
CHARA1 DATA >0008,>1000,>3010,>1038
CHARA2 DATA >0008,>1000,>3048,>4830
CHARA3 DATA >0008,>1048,>4848,>483C
CHARA4 DATA >0028,>5000,>7048,>4848
CHARA5 DATA >0028,>5000,>6454,>4C44
CHARA6 DATA >0030,>5038,>0078,>0000
CHARA7 DATA >0030,>4830,>0078,>0000
CHARA8 DATA >0010,>0010,>2040,>4438
CHARA9 DATA >0000,>0000,>7F40,>0000
CHARAA DATA >0000,>0000,>7C04,>0000
CHARAB DATA >0048,>5028,>5404,>081C
CHARAC DATA >0048,>5020,>4818,>3C08
CHARAD DATA >0010,>0010,>1010,>1010
CHARAE DATA >0000,>1428,>5028,>1400
CHARAF DATA >0000,>5028,>1428,>5000
CHARB0 DATA >8822,>8822,>8822,>8822
CHARB1 DATA >AA55,>AA55,>AA55,>AA55
CHARB2 DATA >AA77,>AA77,>AA77,>AA77
CHARB3 DATA >2020,>2020,>2020,>2020
CHARB4 DATA >2020,>20E0,>2020,>2020
CHARB5 DATA >2020,>E020,>E020,>2020
CHARB6 DATA >5050,>50D0,>5050,>5050
CHARB7 DATA >0000,>00F0,>5050,>5050
CHARB8 DATA >0000,>E020,>E020,>2020
CHARB9 DATA >5050,>D010,>D050,>5050
CHARBA DATA >5050,>5050,>5050,>5050
CHARBB DATA >0000,>F010,>D050,>5050
CHARBC DATA >5050,>D010,>F000,>0000
CHARBD DATA >5050,>50F0,>0000,>0000
CHARBE DATA >2020,>E020,>E000,>0000
CHARBF DATA >0000,>00E0,>2020,>2020
CHARC0 DATA >2020,>203F,>0000,>0000
CHARC1 DATA >2020,>20FF,>0000,>0000
CHARC2 DATA >0000,>00FF,>2020,>2020
CHARC3 DATA >2020,>203F,>2020,>2020
CHARC4 DATA >0000,>00FF,>0000,>0000
CHARC5 DATA >2020,>20FF,>2020,>2020
CHARC6 DATA >2020,>3F20,>3F20,>2020
CHARC7 DATA >5050,>505F,>5050,>5050
CHARC8 DATA >5050,>5F40,>7F00,>0000
CHARC9 DATA >0000,>7F40,>5F50,>5050
CHARCA DATA >5050,>DF00,>FF00,>0000
CHARCB DATA >0000,>FF00,>DF50,>5050
CHARCC DATA >5050,>5F40,>5F50,>5050
CHARCD DATA >0000,>FF00,>FF00,>0000
CHARCE DATA >5050,>DF00,>DF50,>5050
CHARCF DATA >2020,>FF00,>FF00,>0000
CHARD0 DATA >5050,>50FF,>0000,>0000
CHARD1 DATA >0000,>FF00,>FF20,>2020
CHARD2 DATA >0000,>00FF,>5050,>5050
CHARD3 DATA >5050,>507F,>0000,>0000
CHARD4 DATA >2020,>3F20,>3F00,>0000
CHARD5 DATA >0000,>3F20,>3F20,>2020
CHARD6 DATA >0000,>007F,>5050,>5050
CHARD7 DATA >5050,>50FF,>5050,>5050
CHARD8 DATA >2020,>FF20,>FF20,>2020
CHARD9 DATA >2020,>20E0,>0000,>0000
CHARDA DATA >0000,>003F,>2020,>2020
CHARDB DATA >FFFF,>FFFF,>FFFF,>FFFF
CHARDC DATA >0000,>0000,>FFFF,>FFFF
CHARDD DATA >E0E0,>E0E0,>E0E0,>E0E0
CHARDE DATA >1F1F,>1F1F,>1F1F,>1F1F
CHARDF DATA >FFFF,>FFFF,>0000,>0000
CHARE0 DATA >0000,>0034,>4C48,>4C34
CHARE1 DATA >0030,>4850,>4848,>5040
CHARE2 DATA >0000,>3828,>2020,>2020
CHARE3 DATA >0000,>003C,>6828,>2828
CHARE4 DATA >007C,>4420,>1020,>447C
CHARE5 DATA >0000,>0034,>4848,>4830
CHARE6 DATA >0000,>0028,>2828,>3840
CHARE7 DATA >0000,>0028,>5010,>1010
CHARE8 DATA >007C,>1028,>4428,>107C
CHARE9 DATA >0000,>1028,>7C28,>1000
CHAREA DATA >0038,>4444,>4428,>286C
CHAREB DATA >0000,>1820,>1028,>2838
CHAREC DATA >0000,>0028,>5428,>0000
CHARED DATA >0004,>384C,>5464,>3840
CHAREE DATA >0018,>2040,>7840,>2018
CHAREF DATA >0000,>3048,>4848,>4848
CHARF0 DATA >007F,>007F,>007F,>0000
CHARF1 DATA >0000,>1038,>1000,>3800
CHARF2 DATA >0020,>1008,>1020,>3800
CHARF3 DATA >0008,>1020,>1008,>3800
CHARF4 DATA >0010,>2820,>2020,>2020
CHARF5 DATA >2020,>2020,>20A0,>4000
CHARF6 DATA >0000,>3000,>7800,>3000
CHARF7 DATA >0000,>2850,>0028,>5000
CHARF8 DATA >0010,>2810,>0000,>0000
CHARF9 DATA >0000,>0030,>3000,>0000
CHARFA DATA >0000,>0010,>0000,>0000
CHARFB DATA >001F,>1010,>1050,>3010
CHARFC DATA >0050,>2828,>2800,>0000
CHARFD DATA >0030,>5010,>2070,>0000
CHARFE DATA >0000,>3030,>3000,>0000
CHARFF DATA >0000,>0000,>0000,>0000
 
*  End of 8-bit chars
 
CHFLEN EQU  $-6-CHFDAT
 
       END  CHARS
 
 
* German special characters to substitute
 
CHAR40 DATA >0038,>4078,>4878,>0870
CHAR5B DATA >0044,>0038,>447C,>4444
CHAR5C DATA >0044,>007C,>4444,>447C
CHAR5D DATA >0044,>0044,>4444,>4438
CHAR7B DATA >0048,>0038,>4848,>4834
CHAR7C DATA >0048,>0030,>4848,>4830
CHAR7D DATA >0048,>0048,>4848,>483C
CHAR7E DATA >0030,>4850,>4848,>5040
 
