home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / new / os20 / util / ssl / sslexamp / newalerthook.asm < prev    next >
Encoding:
Assembly Source File  |  1993-12-21  |  12.9 KB  |  671 lines

  1. ; Enhanced Alert Hook
  2. ; (c) 1993 MJSoft System Software, Martin Mares
  3.  
  4. _LVOTimedDisplayAlert    EQU    -822
  5.  
  6.     include    "ssmac.h"
  7.     include    "values/hardware.i"
  8.  
  9. ;    opt    x+
  10.  
  11.     moveq    #-1,d0
  12.     rts
  13.  
  14. Resident    dc.w    RTC_MATCHWORD
  15.     dc.l    Resident
  16.     dc.l    EndSkip
  17.     dc.b    RTF_COLDSTART
  18.     dc.b    40            ; Version
  19.     dc.b    0            ; Type
  20.     dc.b    7            ; Priority
  21.     dc.l    MyName
  22.     dc.l    IDStr
  23.     dc.l    Init
  24.  
  25. ; Alert Hook Initialization
  26.  
  27. Init    mpush    d1-d7/a0-a6
  28.     move.l    4.w,a6
  29.     move.l    a6,a1
  30.     lea    (_LVOAlert).w,a0
  31.     lea    AlertFunc(pc),a2
  32.     move.l    a2,d0
  33.     call    SetFunction
  34.     bra.s    DispAlert2
  35.  
  36. ; Auxilliary routine
  37.  
  38. CopyAlertLine    move.b    (a0)+,(a3)+
  39.     move.b    (a0)+,(a3)+
  40.     move.b    #16,(a3)+
  41. 1$    move.b    (a0)+,(a3)+
  42.     bne.s    1$
  43.     st    (a3)+
  44.     rts
  45.  
  46. DispAlert    movem.l    d1-d7/a0-a6,-(sp)
  47.     move.l    4.w,a6
  48. DispAlert2    movem.l    LastAlert(a6),d2-d3
  49.     moveq    #-1,d0
  50.     cmp.l    d0,d2
  51.     beq    DispNoAlert
  52.     lea    -300(sp),sp
  53.     move.l    sp,a3
  54.     move.l    d2,d0
  55.     swap    d0
  56.     lea    NotEnoughMem(pc),a0
  57.     cmp.b    #1,d0
  58.     beq.s    AlertHead
  59.     lea    SoftFailure(pc),a0
  60.     tst.w    d0
  61.     ble.s    AlertHead
  62.     lea    RecoverError(pc),a0
  63. AlertHead    bsr.s    CopyAlertLine
  64.     lea    PressLMB(pc),a0
  65.     bsr.s    CopyAlertLine
  66.  
  67.     sub.l    a5,a5
  68.     btst    #0,d3
  69.     bne.s    NoTaskNameS
  70.     move.l    d3,a1
  71.     bsr.s    CheckMem
  72.     beq.s    NoTaskNameS
  73.     move.b    LN_TYPE(a1),d0
  74.     subq.l    #NT_TASK,d0
  75.     beq.s    NoProcess
  76.     cmp.b    #NT_PROCESS-NT_TASK,d0
  77.     bne.s    NoTaskNameS
  78.     move.l    pr_CLI(a1),d0
  79.     beq.s    NoProcess
  80.     lsl.l    #2,d0
  81.     move.l    d0,a1
  82.     bsr.s    CheckMem
  83.     beq.s    NoProcess
  84.     move.l    cli_CommandName(a1),a1
  85.     add.l    a1,a1
  86.     add.l    a1,a1
  87.     addq.l    #1,a1
  88.     pea    TCommand(pc)
  89.     bra.s    IsProcess
  90.  
  91. NoProcess    move.l    d3,a1
  92.     move.l    LN_NAME(a1),a1
  93.     pea    TTask(pc)
  94. IsProcess    move.l    a1,a4
  95.     bsr.s    CheckMem
  96.     beq.s    NoTaskName
  97.     lea    260(sp),a2
  98.     lea    297(sp),a0
  99.     move.l    a2,a1
  100.     move.b    #'(',(a1)+
  101.     tst.b    (a4)
  102.     beq.s    NoTaskName
  103. CopyTName    cmp.l    a0,a1
  104.     beq.s    CopyTNEnd
  105.     move.b    (a4)+,d0
  106.     move.b    d0,(a1)+
  107.     beq.s    CopyTNEnd
  108.     lsl.b    #1,d0
  109.     cmp.b    #64,d0
  110.     bcc.s    CopyTName
  111. NoTaskNameS    bra.s    NoTaskName
  112.  
  113. CheckMem    push    a1
  114.     call    TypeOfMem
  115.     pop    a1
  116.     tst.l    d0
  117.     bne.s    1$
  118. ;;    lea    $1000000,a0
  119. ;;    cmp.l    a0,a1
  120. ;;    bcc.s    2$
  121. ;;    sub.l    -$14(a0),a0
  122. ;;    cmp.l    a0,a1
  123. ;;    bcc.s    1$
  124. 2$    move.l    LN_NAME(a6),d0
  125.     clr.w    d0
  126.     sub.l    a1,d0
  127.     cmp.l    #-$80000,d0
  128.     bcc.s    1$
  129.     moveq    #0,d0
  130. 1$    rts
  131.  
  132. CopyTNEnd    move.b    #')',-1(a1)
  133.     sf    (a1)
  134. CopyTNEnd1    move.l    a2,a5
  135.  
  136. NoTaskName    pop    d0
  137.     push    a5
  138.     push    d3
  139.     push    d0
  140.     push    d2
  141.     move.l    sp,a1
  142.     lea    NumberFormat(pc),a0
  143.     lea    PFPutC(pc),a2
  144.     addq.l    #2,a3
  145.     call    RawDoFmt
  146.     bsr.s    Center
  147.     lea    16(sp),sp
  148.  
  149.     addq.l    #2,a3
  150.     move.l    a3,a4
  151.     move.b    #32,(a4)+
  152.  
  153.     move.l    d2,d0
  154.     bclr    #31,d0
  155.     swap    d0
  156.     tst.w    d0
  157.     beq.s    FindExcept
  158.     lsr.w    #8,d0
  159.     lea    SubSysTab(pc),a2
  160.     bsr    TabulateUpper
  161. GoColon    move.b    #':',(a4)+
  162.     move.b    #' ',(a4)+
  163.  
  164.     tst.w    d2
  165.     bgt.s    FindSpecific
  166.     move.l    d2,d0
  167.     swap    d0
  168.     bclr    #15,d0
  169.     ext.w    d0
  170.     lea    GeneralErrs(pc),a2
  171.     bsr    TabulateUpper
  172.     move.w    d2,d0
  173.     beq.s    ShowAlert
  174.     bclr    #15,d0
  175.     move.b    #' ',(a4)+
  176.     move.b    #'(',(a4)+
  177.     lea    SubSysTab(pc),a2
  178.     bsr    Tabulate
  179.     move.b    #')',(a4)+
  180.     bra.s    ShowAlert
  181.  
  182. FindExcept    lea    TExcept(pc),a2
  183.     moveq    #8,d0
  184. 1$    move.b    (a2)+,(a4)+
  185.     dbf    d0,1$
  186.     moveq    #-2,d4
  187.     bra.s    GoColon
  188.  
  189. Center    move.l    a3,a0
  190. 1$    tst.b    (a0)+
  191.     bne.s    1$
  192.     move.l    a3,d0
  193.     sub.l    a0,d0
  194.     lsl.w    #2,d0
  195.     add.w    #328,d0
  196.     move.b    d0,-(a3)
  197.     lsr.w    #8,d0
  198.     move.b    d0,-(a3)
  199.     move.l    a0,a3
  200.     st    (a3)+
  201.     rts
  202.  
  203. FindSpecific    lea    Specific(pc),a2
  204.     add.w    0(a2,d4.w),a2
  205.     move.w    d2,d0
  206.     bsr.s    TabulateUpper
  207.  
  208. ShowAlert    sf    (a4)
  209.     bsr.s    Center
  210.  
  211.     lea    intuiname(pc),a1
  212.     call    OldOpenLibrary
  213.     move.l    #AT_DeadEnd+AG_OpenLib+AO_Intuition,d7
  214.     tst.l    d0
  215.     beq    AlertFunc
  216.     move.l    LastAlert+12(a6),a1
  217.     move.l    d0,a6
  218.  
  219.     sf    -(a3)
  220.     move.l    sp,a0
  221.     move.l    d2,d0
  222.     moveq    #61,d1
  223.     cmp.w    #39,LIB_VERSION(a6)
  224.     bcs.s    NotTimed
  225.     call    TimedDisplayAlert
  226.     bra.s    AlertDone
  227. NotTimed    call    DisplayAlert
  228.  
  229. AlertDone    push    d0
  230.     move.l    a6,a1
  231.     call    exec,CloseLibrary
  232.  
  233.     clr.l    0.w
  234.     moveq    #-1,d1
  235.     move.l    d1,LastAlert(a6)
  236.     pop    d0
  237.     lea    300(sp),sp
  238. DispNoAlert    movem.l    (sp)+,d1-d7/a0-a6
  239. Ret1    rts
  240.  
  241. TabulateUpper    bsr.s    Tabulate
  242.     bclr    #5,(a0)
  243.     rts
  244.  
  245. StrXpy0    move.b    (a2)+,(a4)+
  246.     bpl.s    StrXpy1
  247.     move.b    -(a4),d0
  248. StrXpyX    mpush    d5/a2
  249.     lea    Strings(pc),a2
  250. 1$    move.b    (a2)+,d5
  251.     add.l    d5,a2
  252.     addq.b    #1,d0
  253.     bne.s    1$
  254.     move.b    (a2)+,d5
  255.     bsr.s    StrXpy1
  256.     mpop    d5/a2
  257. StrXpy1    dbf    d5,StrXpy0
  258.     rts
  259.  
  260. Tabulate    moveq    #-2,d4
  261.     moveq    #0,d5
  262.     move.l    a4,a0
  263. 1$    addq.w    #2,d4
  264.     move.b    (a2)+,d5
  265.     bpl.s    3$
  266.     addq.w    #1,d1
  267.     neg.b    d5
  268.     bra.s    2$
  269. 3$    moveq    #0,d1
  270.     move.b    (a2)+,d1
  271.     bmi.s    StrXpy1
  272.     bne.s    2$
  273.     move.b    (a2)+,d1
  274.     lsl.w    #8,d1
  275.     move.b    (a2)+,d1
  276. 2$    cmp.w    d1,d0
  277.     beq.s    StrXpy1
  278.     add.w    d5,a2
  279.     bra.s    1$
  280.  
  281. PFPutC    move.b    d0,(a3)+
  282.     rts
  283.  
  284. ; Replacement of exec/Alert()
  285.  
  286. AlertFunc
  287.     ifnd    DEBUG
  288.     move.w    #INTF_INTEN,$dff000+intena
  289.     endc
  290.  
  291.     movem.l    d0-d1/a0-a1/a5-a6,-(sp)
  292.     move.l    #'HELP',d0
  293.     sub.l    a0,a0
  294.  
  295.     ifnd    DEBUG
  296.     cmp.l    (a0),d0
  297.     beq.s    BlinkAlert
  298.     move.l    d0,(a0)
  299.     endc
  300.  
  301.     lea    $100.w,a1
  302.     move.l    d7,(a1)+
  303.     move.l    a5,(a1)
  304.     move.l    4.w,d0
  305.     btst    #0,d0
  306.     bne.s    BlinkAlert
  307.     move.l    d0,a6
  308.     add.l    ChkBase(a6),d0
  309.     addq.l    #1,d0
  310.     bne.s    BlinkAlert
  311.     move.l    ThisTask(a6),a5
  312.     move.l    a5,(a1)
  313.     move.l    #$F376C7C9,d0
  314.     push    d0
  315.     cmp.l    (sp)+,d0
  316.     bne.s    BlinkAlertSP
  317.     tst.l    d7
  318.     bmi.s    BlinkAlert
  319.     lea    LastAlert(a6),a0
  320.     move.l    d7,(a0)+
  321.     move.l    a5,(a0)+
  322.     bsr    DispAlert
  323.     tst.l    IDNestCnt(a6)
  324.     bge.s    YetDisabled
  325.     move.w    #INTF_SETCLR+INTF_INTEN,$dff000+intena
  326. YetDisabled    moveq    #1,d0
  327.     moveq    #5,d1
  328.     ifnd    DEBUG
  329. WaitDiskDMA    tst.w    $dff000+dskbytr
  330.     dbf    d0,WaitDiskDMA
  331.     dbf    d1,WaitDiskDMA
  332.     endc
  333.     movem.l    (sp)+,d0-d1/a0-a1/a5-a6
  334.     rts
  335.  
  336. BlinkAlertSP    lea    $400.w,sp
  337.     clr.l    -(sp)
  338.     clr.l    -(sp)
  339. BlinkAlert    movem.l    d0-d1/a0-a1/a5-a6,-(sp)
  340.     sub.l    a0,a0
  341.     tst.l    $C.w    ; Obey SinSoft's rules of VBR remapping
  342.     bne.s    1$
  343.     move.l    8.w,a0
  344. 1$    lea    MyStart(pc),a1
  345.     move.l    a1,$20(a0)
  346. MyStart    move.w    #$2700,sr
  347.  
  348.     moveq    #5,d1    ; Start blinking (6 times)
  349. ;;    lea    $dff000,a0
  350. ;;    move.w    #$174,serper(a0)
  351. Blink1    moveq    #-1,d0
  352. 1$    bset    #1,$bfe001
  353.     dbf    d0,1$
  354. 2$    bclr    #1,$bfe001
  355.     dbf    d0,2$
  356. ;;    move.w    serdatr(a0),d0
  357. ;;    move.w    #INTF_RBF,intreq(a0)
  358. ;;    and.b    #$7F,d0
  359. ;;    addq.b    #1,d0
  360. ;;    dbmi    d1,Blink1
  361.     dbra    d1,Blink1
  362.  
  363. ;;    movem.l    (sp)+,d0-d1/a0-a1/a5-a6
  364. ;; Debugging not supported ... Reboot always
  365.  
  366. RestartSystem    lea    $1000000,a0    ; Supervisor mode expected
  367.     sub.l    -$14(a0),a0
  368.     move.l    4(a0),a0
  369.     jmp    -2(a0)
  370.  
  371.     dc.w    Spec_cpu-Specific
  372. Specific    dc.w    Spec_exec-Specific
  373.     dc.w    Spec_graphics-Specific
  374.     dc.w    Spec_layers-Specific
  375.     dc.w    Spec_intuition-Specific
  376.     dc.w    Spec_math-Specific
  377.     dc.w    Spec_dos-Specific
  378.     dc.w    Spec_ram-Specific
  379.     dc.w    Spec_icon-Specific
  380.     dc.w    Spec_expansion-Specific
  381.     dc.w    Spec_diskfont-Specific
  382.     dc.w    Spec_utility-Specific
  383.     dc.w    Spec_keymap-Specific
  384.     dc.w    Spec_audio-Specific
  385.     dc.w    Spec_console-Specific
  386.     dc.w    Spec_gameport-Specific
  387.     dc.w    Spec_keyboard-Specific
  388.     dc.w    Spec_trackdisk-Specific
  389.     dc.w    Spec_timer-Specific
  390.     dc.w    Spec_cia-Specific
  391.     dc.w    Spec_disk-Specific
  392.     dc.w    Spec_misc-Specific
  393.     dc.w    Spec_bootstrap-Specific
  394.     dc.w    Spec_workbench-Specific
  395.     dc.w    Spec_diskcopy-Specific
  396.     dc.w    Spec_gadtools-Specific
  397.     dc.w    Spec_utility-Specific
  398.     dc.w    Spec_unknown-Specific
  399.  
  400. STRCNT    set    $FF
  401. str    macro
  402. K\1    equ    STRCNT
  403. STRCNT    set    STRCNT-1
  404.     dc.b    \@a-*-1,\2
  405. \@a
  406.     endm
  407.  
  408. Strings    dc.b    0
  409.     str    Library,<'library'>
  410.     str    Device,<'device'>
  411.     str    Resource,<'resource'>
  412.     str    Lib,<'.',KLibrary>
  413.     str    Dev,<'.',KDevice>
  414.     str    Res,<'.',KResource>
  415.     str    Unable,<'Unable to '>
  416.     str    Open,<'open '>
  417.     str    Close,<'Close'>
  418.     str    Failed,<' failed'>
  419.     str    Unkn0,<'unknown'>
  420.     str    Unkn,<KUnkn0,KErr>
  421.     str    Err,<' ',KErr2>
  422.     str    Err2,<'error'>
  423.     str    Mem,<' ',KMemS>
  424.     str    MemS,<KMem0,' '>
  425.     str    Mem0,<'memory'>
  426.     str    Free,<'free'>
  427.     str    Bad,<'Bad '>
  428.     str    FFP,<'FFP '>
  429.     str    MMU,<'MMU '>
  430.     str    Instr,<' instruction'>
  431.     str    Disk,<'disk'>
  432.     str    NoMF,<'No',KMem,'for '>
  433.     str    Viol,<' violation'>
  434.     str    Erflow,<'erflow'>
  435.     str    Illegal,<'illegal'>
  436.     str    Interr,<'interrupt'>
  437.     str    Attempt,<'attempt'>
  438.     str    Util,<'utility'>
  439.     str    To,<'to'>
  440.     str    Frame,<' frame'>
  441.     str    Scr,<'screen'>
  442.     str    Intui,<'intuition'>
  443.     str    Messg,<'message'>
  444.     str    Init,<'init'>
  445.     str    Line,<'line '>
  446.     str    DivZ,<'division by zero'>
  447.     str    Timer,<'timer'>
  448.     str    Already,<' already '>
  449.     str    MemList,<KMem,'list'>
  450.     str    Item,<'item'>
  451.     str    Type,<' type'>
  452.     str    Rece,<' received'>
  453.     str    Checksum,<'checksum'>
  454.     str    Obtain,<' obtain'>
  455.     str    Key,<'key'>
  456.     str    Return,<' return'>
  457.     str    Region,<'region'>
  458.     str    Failure,<' failure'>
  459.     str    Uninit,<'un',KInit,'ialized '>
  460.     str    Font,<'font'>
  461.  
  462. NotEnoughMem    dc.b    0,24
  463.     dc.b    'Not enough memory.',0
  464. SoftFailure    dc.b    0,24
  465.     dc.b    'Software failure.',0
  466. RecoverError    dc.b    0,24
  467.     dc.b    'Recoverable alert.',0
  468. PressLMB    dc.b    1,72
  469.     dc.b    'Press left mouse button to continue.',0
  470. TCommand    dc.b    'Command',0
  471. TTask    dc.b    'Task',0
  472. TExcept    dc.b    'Exception'
  473. NumberFormat    dc.b    48,'Error: %08lx    %s: %08lx %s',0
  474. intuiname    dc.b    'intuition.library',0
  475. MyName    dc.b    'alert.hook',0
  476. Verstr    dc.b    '$VER: '
  477. IDStr    dc.b    'Enhanced Alert Hook 40.2 © 1993 MJSoft System Software',0
  478.  
  479. subs    macro
  480.     dc.b    \@a-\@b,\1
  481. \@b    dc.b    \2
  482. \@a
  483.     endm
  484.  
  485. subc    macro
  486.     dc.b    \@b-\@a
  487. \@b    dc.b    \1
  488. \@a
  489.     endm
  490.  
  491. subsx    macro
  492.     dc.b    \@a-\@b,0,\1,\2
  493. \@b    dc.b    \3
  494. \@a
  495.     endm
  496.  
  497. SubSysTab    subs    $01,<'exec',KLib>
  498.     subc    <'graphics',KLib>
  499.     subc    <'layers',KLib>
  500.     subc    <KIntui,KLib>
  501.     subc    <'math',KLib>
  502.     subs    $07,<'dos',KLib>
  503.     subc    <'ram',KLib>
  504.     subc    <'icon',KLib>
  505.     subc    <'expansion',KLib>
  506.     subc    <KDisk,KFont,KLib>
  507.     subc    <KUtil,KLib>
  508.     subc    <KKey,'map',KLib>
  509.     subs    $10,<'audio',KDev>
  510.     subc    <'console',KDev>
  511.     subc    <'gameport',KDev>
  512.     subc    <KKey,'board',KDev>
  513.     subc    <'track',KDisk,KDev>
  514.     subc    <KTimer,KDev>
  515.     subs    $20,<'cia',KRes>
  516.     subc    <KDisk,KRes>
  517.     subc    <'misc',KRes>
  518.     subs    $30,<'bootstrap'>
  519.     subc    <'workbench',KLib>
  520.     subc    <KDisk,'copy'>
  521.     subc    <'gad',KTo,'ols',KLib>
  522.     subc    <KUtil,KLib>
  523.     subs    $FF,<KUnkn0>
  524.  
  525. GeneralErrs    subs    $01,<'Out of ',KMem0>
  526.     subc    <KUnable,'make ',KLibrary>
  527.     subc    <KUnable,KOpen,KLibrary>
  528.     subc    <KUnable,KOpen,KDevice>
  529.     subc    <KUnable,KOpen,KResource>
  530.     subc    <'I/O',KErr>
  531.     subc    <KUnable,'get signal'>
  532.     subc    <KBad,'parameters'>
  533.     subc    <KClose,'Device',KFailed>
  534.     subc    <KClose,'Library',KFailed>
  535.     subc    <'CreateProc',KFailed>
  536.     subs    $FF,<KUnkn>
  537.  
  538. Spec_exec    subs    $03,<KLibrary,' ',KChecksum,KFailure>
  539.     subs    $05,<'Corrupted',KMemList>
  540.     subc    <KNoMF,KInterr,' servers'>
  541.     subs    $08,<'Semaphore in ',KIllegal,' state'>
  542.     subc    <KFree,'ing',KMem,'that is',KAlready,KFree>
  543.     subs    $0B,<KAttempt,' ',KTo,' reuse active IORq'>
  544.     subc    <'Sanity check on',KMemList,KFailed>
  545.     subc    <'IO ',KAttempt,'ed on closed IORq'>
  546.     subc    <'Stack appears ',KTo,' be out of range'>
  547.     subc    <KMemS,'header not located'>
  548.     subc    <'Old ',KMessg,' semaphore used'>
  549.     subsx    $00,$FF,<'QuickInt to ',KUninit,'vector'>
  550.     subs    $FF,<KUnkn>
  551.  
  552. Spec_graphics    subs    $01,<KNoMF,'Moni',KTo,'rSpec'>
  553.     subs    $06,<KNoMF,'long',KFrame>
  554.     subc    <KNoMF,'short',KFrame>
  555.     subs    $09,<KNoMF,'Text TmpRas'>
  556.     subc    <KNoMF,'BltBitMap'>
  557.     subc    <KNoMF,KRegion,'s'>
  558.     subc    <'GfxNew',KErr>
  559.     subc    <'GfxFree',KErr>
  560.     subs    $30,<KNoMF,'MakeVPort'>
  561.     subsx    $12,$34,<'Emergency',KMem,'not available'>
  562.     subsx    $04,$01,<'Unsupported ',KFont,' description used'>
  563.     subs    $FF,<KUnkn>
  564.  
  565. Spec_intuition    subs    $01,<KUnkn0,' gadget',KType>
  566.     subc    <KNoMF,'port'>
  567.     subc    <KNoMF,KItem,' plane'>
  568.     subc    <KNoMF,'sub',KItem>
  569.     subc    <KNoMF,'plane'>
  570.     subc    <KItem,' box ',KTo,'p < RelZero'>
  571.     subc    <KNoMF,KScr>
  572.     subc    <KNoMF,KScr,' raster'>
  573.     subc    <KBad,KScr,KType>
  574.     subc    <KNoMF,'SW gadgets'>
  575.     subc    <KNoMF,'window'>
  576.     subc    <KBad,'state',KReturn,' entering ',KIntui>
  577.     subc    <KBad,KMessg,KRece,' by IDCMP'>
  578.     subc    <'Weird echo causing incomprehesion'>
  579.     subc    <KUnable,KOpen,'console',KDev>
  580.     subc    <KIntui,' skipped',KObtain,'ing a sem'>
  581.     subc    <KIntui,KObtain,'ed a sem in bad order'>
  582.     subs    $FF,<KUnkn>
  583.  
  584. Spec_dos    subs    $01,<KNoMF,'DOS startup'>
  585.     subc    <'EndTask didn''t'>
  586.     subc    <'QPkt',KFailure>
  587.     subc    <'Unexpected packet',KRece>
  588.     subc    <KFree,'Vec',KFailed>
  589.     subc    <KDisk,' block sequence',KErr>
  590.     subc    <'Bitmap corrupt'>
  591.     subc    <KKey,KAlready,KFree>
  592.     subc    <KBad,KChecksum>
  593.     subc    <KDisk,KErr>
  594.     subc    <KKey,' out of range'>
  595.     subc    <KBad,'overlay'>
  596.     subc    <KBad,KInit,' packet for CLI/Shell'>
  597.     subc    <'File handle closed twice'>
  598.     subs    $FF,<KUnkn>
  599.  
  600. Spec_ram    subs    $01,<'Overlayed ',KLibrary,' segment'>
  601.     subs    $FF,<KUnkn>
  602.  
  603. Spec_expansion    subs    $01,<KFree,'d ',KFree,' ',KRegion,' of exp space'>
  604.     subs    $FF,<KUnkn>
  605.  
  606. Spec_console    subs    $01,<KUnable,KOpen,KInit,'ial window'>
  607.     subs    $FF,<KUnkn>
  608.  
  609. Spec_trackdisk    subs    $01,<'Seek',KErr,' during calibration'>
  610.     subc    <KErr2,' on ',KTimer,' wait'>
  611.     subs    $FF,<KUnkn>
  612.  
  613. Spec_timer    subs    $01,<KBad,'request'>
  614.     subc    <'No 50/60 Hz ticks from power supply'>
  615.     subs    $FF,<KUnkn>
  616.  
  617. Spec_disk    subs    $01,<'GetUnit:',KAlready,'has ',KDisk>
  618.     subc    <KInterr,' with no active unit'>
  619.     subs    $FF,<KUnkn>
  620.  
  621. Spec_bootstrap    subs    $01,<'Boot code',KReturn,'ed an',KErr>
  622.     subs    $FF,<KUnkn>
  623.  
  624. Spec_workbench    subs    $01,<'No ',KFont,'s'>
  625.     subc    <KBad,'startup ',KMessg>
  626.     subc    <KBad,'I/O ',KMessg>
  627.     subs    $09,<'ReLayoutToolMenu',KFailed>
  628.     subs    $FF,<KUnkn>
  629.  
  630. Spec_cpu    subs    $02,<'Bus',KErr>
  631.     subc    <'Address',KErr>
  632.     subc    <KIllegal,KInstr>
  633.      subc    <KDivZ>
  634.     subc    <'CHK',KInstr>
  635.     subc    <'TRAPV',KInstr>
  636.     subc    <'Privilege',KViol>
  637.     subc    <'Trace'>
  638.     subc    <KLine,'A',KInstr>
  639.     subc    <KLine,'F',KInstr>
  640.     subs    $0D,<'Coprocessor pro',KTo,'col',KViol>
  641.     subc    <'Stack',KFrame,' format',KErr>
  642.     subc    <KUninit,KInterr>
  643.     subs    $18,<'Spurious ',KInterr>
  644.     subs    $30,<KFFP,'branch on set or unordered contition'>
  645.     subc    <KFFP,'inexact result'>
  646.     subc    <KFFP,KDivZ>
  647.     subc    <KFFP,'und',KErflow>
  648.     subc    <KFFP,'operand',KErr>
  649.     subc    <KFFP,'ov',KErflow>
  650.     subc    <KFFP,'signaling NAN'>
  651.     subs    $38,<KMMU,'configuration',KErr>
  652.     subc    <KMMU,KIllegal,' operation'>
  653.     subc    <KMMU,'invalid access level'>
  654. Spec_layers
  655. Spec_math
  656. Spec_icon
  657. Spec_diskfont
  658. Spec_audio
  659. Spec_utility
  660. Spec_keymap
  661. Spec_gameport
  662. Spec_keyboard
  663. Spec_cia
  664. Spec_misc
  665. Spec_diskcopy
  666. Spec_gadtools
  667. Spec_unknown    subs    $FF,<KUnkn>
  668.  
  669. EndSkip
  670.     end
  671.