?login_element?

Subversion Repositories NedoOS

Rev

Rev 767 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log

Rev 767 Rev 1213
Line 147... Line 147...
147
prtext_cr_de=$+1
147
prtext_cr_de=$+1
148
        ld de,0
148
        ld de,0
149
        call nextchrline_de
149
        call nextchrline_de
150
        jr prtext0keepde
150
        jr prtext0keepde
151
 
151
 
152
        if 1==0
-
 
153
;lx=background color %33210210
-
 
154
;hx=color %33210210
-
 
155
;de=font char
-
 
156
;hl=screen
-
 
157
prchar48ega_hxoncolor0
-
 
158
        ld b,hx
-
 
159
        ld a,(de)
-
 
160
        ld c,a
-
 
161
        ld a,lx
-
 
162
        rl c
-
 
163
        jr nc,$+2+4
-
 
164
         xor b
-
 
165
         and 0xb8;%10111000
-
 
166
         xor b
-
 
167
        rl c
-
 
168
        jr nc,$+2+4
-
 
169
         xor b
-
 
170
         and 0x47;%01000111
-
 
171
         xor b
-
 
172
        ld (hl),a
-
 
173
        set 6,h
-
 
174
        ld a,lx
-
 
175
        rl c
-
 
176
        jr nc,$+2+4
-
 
177
         xor b
-
 
178
         and 0xb8;%10111000
-
 
179
         xor b
-
 
180
        rl c
-
 
181
        jr nc,$+2+4
-
 
182
         xor b
-
 
183
         and 0x47;%01000111
-
 
184
         xor b
-
 
185
        ld (hl),a
-
 
186
        inc d
-
 
187
        ld bc,+(40-0x4000)
-
 
188
        add hl,bc
-
 
189
        dec hy
-
 
190
        jp nz,prchar48ega_hxoncolor0
-
 
191
 
-
 
192
;c=ink (IIiiiiii)
-
 
193
;b=paper (PPpppppp)
-
 
194
        ld a,(hl)
-
 
195
        rla
-
 
196
        sbc a,a
-
 
197
        ld e,a ;RRRRRRRR
-
 
198
        ld a,(hl)
-
 
199
        rla
-
 
200
        rla
-
 
201
        sbc a,a ;LLLLLLLL
-
 
202
        xor e
-
 
203
        and 0b01000111
-
 
204
        xor e
-
 
205
        ld d,a
-
 
206
;a=%RLRRRLLL        
-
 
207
        and c ;ink (IIiiiiii)
-
 
208
        ld e,a
-
 
209
        ld a,d
-
 
210
        cpl
-
 
211
        and b ;paper (PPpppppp)
-
 
212
        or e
-
 
213
        ld (hl),a
-
 
214
 
-
 
215
;несколько шрифтов в зависимости от цвета:
-
 
216
;один шрифт = 2(столбца)*8(высота)*2(байта)*256(символов) = 0x2000
-
 
217
;с версией, сдвинутой на 1 пикс. вправо, он даже не поместится в страницу
-
 
218
        pop de
-
 
219
        ld a,(hl)
-
 
220
        and e
-
 
221
        or d
-
 
222
        ld (hl),a
-
 
223
        add hl,bc
-
 
224
;43t/b (последний add не нужен, так что 41.625t/b)
-
 
225
;но неудобно вычислять начальный адрес (+33t) и сохранять стек (+36t или 16t всегда на одной глубине), причём первое слово надо брать не из стека (+12t), итого 51.75t/b
-
 
226
 
-
 
227
;или
-
 
228
        ld a,(de)
-
 
229
        and (hl)
-
 
230
        inc d
-
 
231
        ex de,hl
-
 
232
        or (hl)
-
 
233
        ex de,hl
-
 
234
        ld (hl),a
-
 
235
        inc d
-
 
236
        add hl,bc
-
 
237
;55t/b (последний inc d и add не нужны, так что 53.125t/b)
-
 
238
 
-
 
239
;или
-
 
240
        ld a,(de)
-
 
241
        and (hl)
-
 
242
        inc h
-
 
243
        or (hl)
-
 
244
        ld (de),a
-
 
245
        inc h
-
 
246
        ld a,e
-
 
247
        add a,c
-
 
248
        ld e,a
-
 
249
        jp nc,$+3 ;10.625t
-
 
250
         inc d
-
 
251
;10.625+28+20 = 58.625t/b (последний inc h и пересчёт не нужны, так что 55.3t/b)
-
 
252
 
-
 
253
;или (с огромной таблицей перехода по стеку для всех случаев)
-
 
254
        pop de
-
 
255
        ld a,(de)
-
 
256
        and (hl)
-
 
257
        inc h
-
 
258
        or (hl)
-
 
259
        ld (de),a
-
 
260
        inc h
-
 
261
;46t/b (45.5 без последнего inc h), но надо сохранять стек (+36t/8) = 50t/b
-
 
262
        endif
-
 
263
 
-
 
264
scrollleft
-
 
265
;hl=linestart
-
 
266
;c=scroll amount
-
 
267
;c=1: scrollleft_rld с c=0
-
 
268
;c=2: scrollleft_ld с c=1
-
 
269
;c=3: scrollleft_rld с c=1
-
 
270
        srl c
-
 
271
        jp c,scrollleft_rld
-
 
272
scrollleft_ld
-
 
273
;hl=linestart
-
 
274
;c=scroll amount
-
 
275
        ld d,h
-
 
276
        ld a,l
-
 
277
        add a,c
-
 
278
        ld e,a
-
 
279
        ex de,hl
-
 
280
;hl=from
-
 
281
;de=to
-
 
282
        ld a,SCRTRACKWID/2
-
 
283
        sub c
-
 
284
        ld c,a
-
 
285
;c=SCRTRACKWID/2-scrollamount
-
 
286
        ld b,8
-
 
287
scrollleft_ld0
-
 
288
        push bc
-
 
289
        push de
-
 
290
        push hl
-
 
291
        ld b,0
-
 
292
        ldir
-
 
293
        pop hl
-
 
294
        pop de
-
 
295
        pop bc
-
 
296
        inc d
-
 
297
        inc h
-
 
298
        djnz scrollleft_ld0
-
 
299
        ret
-
 
300
 
-
 
301
scrollright
-
 
302
;hl=linestart
-
 
303
;c=scroll amount
-
 
304
;c=1: scrollright_rrd с c=0
-
 
305
;c=2: scrollright_ld с c=1
-
 
306
;c=3: scrollright_rrd с c=1
-
 
307
        srl c
-
 
308
        jp c,scrollright_rrd
-
 
309
scrollright_ld
-
 
310
;hl=linestart
-
 
311
;c=scroll amount
-
 
312
        ld a,l
-
 
313
        add a,SCRTRACKWID/2-1
-
 
314
        ld l,a
-
 
315
        ld d,h
-
 
316
        sub c
-
 
317
        ld e,a
-
 
318
        ex de,hl
-
 
319
;hl=from
-
 
320
;de=to
-
 
321
        ld a,SCRTRACKWID/2
-
 
322
        sub c
-
 
323
        ld c,a
-
 
324
;c=SCRTRACKWID/2-scrollamount
-
 
325
        ld b,8
-
 
326
scrollright_ld0
-
 
327
        push bc
-
 
328
        push de
-
 
329
        push hl
-
 
330
        ld b,0
-
 
331
        lddr
-
 
332
        pop hl
-
 
333
        pop de
-
 
334
        pop bc
-
 
335
        inc d
-
 
336
        inc h
-
 
337
        djnz scrollright_ld0
-
 
338
        ret
-
 
339
 
-
 
340
scrollleft_rld
-
 
341
;hl=linestart
-
 
342
        ;ld c,0
-
 
343
;c=scroll amount
-
 
344
        ld d,h
-
 
345
        ld a,l
-
 
346
        add a,c
-
 
347
        ld e,a
-
 
348
        ex de,hl
-
 
349
;hl=from
-
 
350
;de=to
-
 
351
        ld a,SCRTRACKWID/2
-
 
352
        sub c
-
 
353
        ld c,a
-
 
354
;c=SCRTRACKWID/2-scrollamount
-
 
355
        ld b,8
-
 
356
scrollleft0p
-
 
357
        push bc
-
 
358
        push de
-
 
359
        push hl
-
 
360
        ld b,0
-
 
361
        ld a,l
-
 
362
        cp e
-
 
363
        jr z,scrollleft_noldir
-
 
364
        ldir
-
 
365
scrollleft_noldir
-
 
366
        add hl,bc
-
 
367
        dec hl
-
 
368
        xor a
-
 
369
       dup SCRTRACKWID/2-1
-
 
370
        rld
-
 
371
        dec l
-
 
372
       edup
-
 
373
        rld
-
 
374
        pop hl
-
 
375
        pop de
-
 
376
        pop bc
-
 
377
        inc d
-
 
378
        inc h
-
 
379
        djnz scrollleft0p
-
 
380
        ret
-
 
381
 
-
 
382
scrollright_rrd
-
 
383
;hl=linestart
-
 
384
        ;ld c,0
-
 
385
;c=scroll amount
-
 
386
        ld a,l
-
 
387
        add a,SCRTRACKWID/2-1
-
 
388
        ld l,a
-
 
389
        ld d,h
-
 
390
        sub c
-
 
391
        ld e,a
-
 
392
        ex de,hl
-
 
393
        ld a,SCRTRACKWID/2
-
 
394
        sub c
-
 
395
        ld c,a
-
 
396
;c=SCRTRACKWID/2-scrollamount
-
 
397
        ld b,8
-
 
398
scrollright0p
-
 
399
        push bc
-
 
400
        push de
-
 
401
        push hl
-
 
402
        ld b,0
-
 
403
        ld a,l
-
 
404
        cp e
-
 
405
        jr z,scrollright_nolddr
-
 
406
        lddr
-
 
407
scrollright_nolddr
-
 
408
        or a
-
 
409
        sbc hl,bc
-
 
410
        inc hl
-
 
411
        xor a
-
 
412
        dup SCRTRACKWID/2-1
-
 
413
        rrd
-
 
414
        inc l
-
 
415
        edup
-
 
416
        rrd
-
 
417
        pop hl
-
 
418
        pop de
-
 
419
        pop bc
-
 
420
        inc d
-
 
421
        inc h
-
 
422
        djnz scrollright0p
-
 
423
        ret
-
 
424
 
-
 
425
        align 256
152
        align 256
426
font
153
font
427
        incbin "64qua.fnt"
154
        incbin "64qua.fnt"
428
fnotes
155
fnotes
429
        incbin "fnotes.fnt"
156
        incbin "fnotes.fnt"
Line 503... Line 230...
503
        call setneedprtypes
230
        call setneedprtypes
504
        jp updatescr_scroll_noprall
231
        jp updatescr_scroll_noprall
505
 
232
 
506
updatescr_scroll
233
updatescr_scroll
507
;hl=lefttime-oldlefttime
234
;hl=lefttime-oldlefttime
508
;если скролл на 1 символ, то реально скроллим, иначе перепечатываем?
-
 
509
        bit 7,h
235
        bit 7,h
510
        jp nz,updatescr_scroll_right
236
        jp nz,updatescr_scroll_right        
511
        ;ld a,l
-
 
512
        ;and h
-
 
513
        ;inc a
-
 
514
        ;jp z,updatescr_scroll_right
-
 
515
        ;ld a,l
-
 
516
        ;dec a
-
 
517
        ;or h
-
 
518
        ;jp nz,updatescr_scroll_prall
-
 
519
       
-
 
520
updatescr_scroll_left
237
;updatescr_scroll_left
521
        ld bc,9
238
        ld bc,9
522
        or a
239
        or a
523
        sbc hl,bc
240
        sbc hl,bc
524
        jp nc,updatescr_scroll_prall
241
        jp nc,updatescr_scroll_prall
525
        add hl,bc
242
        add hl,bc
526
        ld c,l;1
243
        ld c,l;1
527
;c=scroll amount (in chars)
-
 
528
        ld a,c
-
 
529
        ld (scrollleft_Nchars),a
-
 
530
        push bc
-
 
531
        call setscrpg
-
 
532
        pop bc
-
 
533
        ld hl,0x4020+(TRACKX/2);+(SCRTRACKWID/2)-1
244
        ld hl,0x4020+(TRACKX/2);+(SCRTRACKWID/2)-1
534
        call getscrntracks;ld b,SCRNTRACKS
245
        call getscrntracks;ld b,SCRNTRACKS
535
        ld a,(toptrack)
246
        ld a,(toptrack)
536
        ld hx,a;0 ;track
247
        ld hx,a;0 ;track
537
scrollleft0
-
 
538
        push bc
-
 
539
        push hl
-
 
540
        call scrollleft ;scrollleft_rld
248
        call scroll_left_c ;c=scroll amount (in chars)
541
        pop hl
-
 
542
;обновить бар слева
-
 
543
        push hl
-
 
544
        ld d,h
-
 
545
        ld e,l
-
 
546
        dec e
-
 
547
        ld c,0x01
-
 
548
        ld a,(curlefttime)
-
 
549
        sub 8
-
 
550
        ld l,a
-
 
551
        and 7
-
 
552
        call prbar_or_nobar
-
 
553
        call setpgroots
-
 
554
;допечатать столбик справа и его бар
-
 
555
        call prtrack_gettype ;uses hx
-
 
556
        pop hl
-
 
557
        push hl
-
 
558
        ld d,h
-
 
559
        ld a,l
-
 
560
        add a,SCRTRACKWID/2-1
-
 
561
        ld e,a
-
 
562
curlefttime=$+1
-
 
563
        ld hl,0;(curlefttime)
-
 
564
        ld bc,SCRTRACKWID-1
-
 
565
        add hl,bc
-
 
566
scrollleft_Nchars=$+2
-
 
567
        ld bc,1*256+0xf0
-
 
568
;de=scr
-
 
569
;hx=track
-
 
570
;c=0x0f/0xf0
-
 
571
;b=SCRTRACKWID
-
 
572
;hl=time
-
 
573
        push bc
-
 
574
        push de
-
 
575
        push bc
-
 
576
        ld a,c
-
 
577
        dec b
-
 
578
        jr z,scrollleft_beforeprtrack0q
-
 
579
scrollleft_beforeprtrack0
-
 
580
        dec hl
-
 
581
        rlca
-
 
582
        rlca
-
 
583
        rlca
-
 
584
        rlca
-
 
585
        jr c,$+3
-
 
586
        dec e
-
 
587
        djnz scrollleft_beforeprtrack0
-
 
588
scrollleft_beforeprtrack0q
-
 
589
        pop bc
-
 
590
        ld c,a
-
 
591
        call prtrack_Nchars
-
 
592
        pop de
-
 
593
        call setscrpg
-
 
594
        ld a,(curlefttime)
-
 
595
        add a,SCRTRACKWID-8
-
 
596
        ld l,a
-
 
597
        pop bc ;ld b,1
-
 
598
        ld c,0x01
-
 
599
scrollleft_prbars0
-
 
600
        push de
-
 
601
        ld a,l
-
 
602
        and 7
-
 
603
        call prbar_or_nobar
-
 
604
        pop de
-
 
605
        dec l
-
 
606
        ld a,c
-
 
607
        rlca
-
 
608
        rlca
-
 
609
        rlca
-
 
610
        rlca
-
 
611
        ld c,a
-
 
612
        jr nc,$+3
-
 
613
        dec e
-
 
614
        djnz scrollleft_prbars0
-
 
615
        pop hl
-
 
616
        call nextchrline_hl
-
 
617
        pop bc
-
 
618
        inc hx ;track
-
 
619
        dec b
-
 
620
        jp nz,scrollleft0
-
 
621
        call setpgroots
249
        call setpgroots
622
        jp updatescr_scroll_noprall
250
        jp updatescr_scroll_noprall
623
 
251
 
624
updatescr_scroll_right
252
updatescr_scroll_right
625
        xor a
253
        xor a
Line 632... Line 260...
632
        or a
260
        or a
633
        sbc hl,bc
261
        sbc hl,bc
634
        jp nc,updatescr_scroll_prall
262
        jp nc,updatescr_scroll_prall
635
        add hl,bc
263
        add hl,bc
636
        ld c,l;1
264
        ld c,l;1
637
;c=scroll amount (in chars)
-
 
638
        ld a,c
-
 
639
        ld (scrollright_Nchars),a
-
 
640
        push bc
-
 
641
        call setscrpg
-
 
642
        pop bc
-
 
643
        ld hl,0x4020+(TRACKX/2)
265
        ld hl,0x4020+(TRACKX/2)
644
        call getscrntracks;ld b,SCRNTRACKS
266
        call getscrntracks;ld b,SCRNTRACKS
645
        ld a,(toptrack)
267
        ld a,(toptrack)
646
        ld hx,a;0 ;track
268
        ld hx,a;0 ;track
647
scrollright0
-
 
648
        push bc
-
 
649
        push hl
-
 
650
        call scrollright ;scrollright_rrd
269
        call scroll_right_c ;c=scroll amount (in chars)
651
        pop hl
-
 
652
;обновить бар слева (вне поля скролла)
-
 
653
        push hl
-
 
654
        ld d,h
-
 
655
        ld e,l
-
 
656
        push de
-
 
657
        dec e
-
 
658
        ld c,0x01
-
 
659
        ld a,(curlefttime)
-
 
660
        sub 8
-
 
661
        ld l,a
-
 
662
        and 7
-
 
663
        call prbar_or_nobar
-
 
664
        call setpgroots
-
 
665
;допечатать столбик слева и его бар
-
 
666
        call prtrack_gettype ;uses hx
-
 
667
        pop de
-
 
668
        ld hl,(curlefttime)
-
 
669
scrollright_Nchars=$+2
-
 
670
        ld bc,1*256+0x0f
-
 
671
;de=scr
-
 
672
;hx=track
-
 
673
;c=0x0f/0xf0
-
 
674
;b=SCRTRACKWID
-
 
675
;hl=time
-
 
676
        push bc
-
 
677
        push de
-
 
678
        call prtrack_Nchars
-
 
679
        pop de
-
 
680
        call setscrpg
-
 
681
        ld a,(curlefttime)
-
 
682
        add a,1-8
-
 
683
        ld l,a
-
 
684
        pop bc;ld b,1
-
 
685
        ld c,0x10
-
 
686
scrollright_prbars0
-
 
687
        push de
-
 
688
        ld a,l
-
 
689
        and 7
-
 
690
        call prbar_or_nobar
-
 
691
        pop de
-
 
692
        inc l
-
 
693
        ld a,c
-
 
694
        rlca
-
 
695
        rlca
-
 
696
        rlca
-
 
697
        rlca
-
 
698
        ld c,a
-
 
699
        jr c,$+3
-
 
700
        inc e
-
 
701
        djnz scrollright_prbars0
-
 
702
       
-
 
703
        pop hl
-
 
704
        call nextchrline_hl
-
 
705
        pop bc
-
 
706
        inc hx ;track
-
 
707
        dec b
-
 
708
        jp nz,scrollright0
-
 
709
        call setpgroots
270
        call setpgroots
710
        jp updatescr_scroll_noprall
271
        jp updatescr_scroll_noprall
711
 
272
 
712
updatescr_scroll_prall
273
updatescr_scroll_prall
713
        call setneedpralltracks
274
        call setneedpralltracks