?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ZXERR
  2.         LD      (MSERR),DE      ;Error string
  3.         LD      IY,#5C3A        ;Spectrum system veriables
  4.         EI
  5.         CALL vers  ;This is done differently on 128s,48s and +3s
  6.         LD      A,H
  7.         OR      A
  8.         JR      Z,BERR48
  9.         DEC     A
  10.         JP      NZ,BERRP3
  11. ;
  12. ;Running on a 128.
  13. ;
  14.         BIT     4,(IY+1)        ;Running 128 BASIC?
  15.         JR      Z,BERR48        ;No; 48 mode is assumed.
  16.         LD      HL,(#5B8B)      ;Fake a 128 BASIC error.
  17.         LD      (MSRET),HL
  18.         LD HL,#0397 ;Jump in after the part which determines the
  19.         LD      (MSMES+1),HL    ;address of the message.
  20.         LD      HL,ERRRT1
  21.         LD      (#5B8B),HL
  22.         JP      23325           ;Page in ROM 1 etc.
  23. ;
  24. ERRRT1
  25.         LD      HL,(MSRET)
  26.         LD      (#5B8B),HL      ;Restore old SYNRET.
  27.         LD      SP,(RAMTOP)     ;Clear machine & GOSUB stacks.
  28.         INC     SP
  29.         LD      HL,#5BFF
  30.         LD      (#5B81),HL      ;OLDSP
  31.         HALT
  32.         RES     5,(IY+1)
  33.         LD      HL,#5B66
  34.         BIT     2,(HL)
  35.         JP      Z,R034A ;$+14
  36.         CALL    #1F45
  37.         LD      IX,(#5B83)
  38.         LD      BC,#14
  39.         ADD     IX,BC
  40.         CALL    #1D56
  41.         CALL    #1F20
  42.         JR      R034A
  43. ;
  44. BERR48
  45.         HALT
  46.         RES     5,(IY+#01)
  47.         BIT     1,(IY+#30)
  48.         CALL    NZ,#0ECD
  49.         LD      HL,0
  50.         LD      (IY+#37),H
  51.         LD      (IY+#26),H
  52.         LD      (#5C0B),HL
  53.         LD      HL,1
  54.         LD      (#5C16),HL
  55.         CALL    #16B0
  56.         RES     5,(IY+#37)
  57.         CALL    #0D6E
  58.         SET     5,(IY+#02)
  59.         LD      DE,(MSERR)
  60. L0C22
  61.         LD      A,(DE)
  62.         AND     #7F
  63.         CALL    #0C3B
  64.         LD      A,(DE)
  65.         INC     DE
  66.         ADD     A,A
  67.         JR      NC,L0C22
  68.         JP      #1349
  69. ;
  70. BERRP3
  71.         BIT     4,(IY+1)        ;Running +3BASIC?
  72.         JR      Z,BERR48        ;No; 48 mode is assumed.
  73.         LD      HL,(SYNRET)     ;Fake a +3BASIC error.
  74.         LD      (MSRET),HL
  75.         LD      DE,#61
  76.         ADD HL,DE   ;Jump in after the part which determines the
  77.         LD      (MSMES+1),HL    ;address of the message.
  78.         LD      HL,ERRRTN
  79.         LD      (SYNRET),HL
  80.         JP      ONERR           ;Page in ROM 1 etc.
  81. ;
  82. ERRRTN
  83.         LD      HL,(MSRET)
  84.         LD      (SYNRET),HL     ;Restore old SYNRET.
  85.         LD      SP,(RAMTOP)     ;Clear machine & GOSUB stacks.
  86.         INC     SP
  87.         LD      HL,#5BFF
  88.         LD      (OLDSP),HL
  89.         HALT
  90.         RES     5,(IY+1)
  91. R034A
  92.         LD      HL,0
  93.         LD      (IY+55),H
  94.         LD      (IY+38),H
  95.         LD      (#5C0B),HL
  96.         INC     HL
  97.         LD      (#5C16),HL
  98.         RST     #28
  99.         DEFW    #16B0
  100.         RES     5,(IY+55)
  101.         RST     #28
  102.         DEFW    #0D6E
  103.         SET     5,(IY+2)
  104.         LD      DE,(MSERR)      ;Address of error message.
  105. MSMES
  106.         JP      0
  107.  
  108. MSRET
  109.         DEFW    0
  110. MSERR
  111.         DEFW    0
  112.