User Tag List

Показано с 1 по 10 из 26

Тема: Старый-Новый Язык Noahsoft PL65

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Новая библиотека

    Всем ГОРЯЧИЙ ПРИВЕТ!

    Начал создавать библиотеку ассемблерного доступа к экрану.
    Вот видео https://www.youtube.com/watch?v=5CHvHxoi78I&t=3476s

    Вот коды:
    Код:
    !====================================!
    ! BLOKS.LIB                  zenSoft !
    !          Text Screen               !
    ! Block oriented assembly procedures !
    !    for PL65 Programming Language   !
    !------------------------------------!
    ! Evgeny Zolotarev,(aka 576XE), 2019 !
    !====================================!
    
    != Globals ==========================!
    POINTER src,dst
    INT SAVMSC=$58,BUFR=$4000
    
    != Block Oriented Procedures ========!
    !- Save Block to Buffer -------------!
    PROC saveBlk(BYTE x,y,w,h)
      BYTE wid,hei
    BEGIN
      wid=w hei=h
      src=SAVMSC+y*40+x-1 dst=.BUFR
            STX XSAVE
            LDX #$00
    !- Lines treatment ------------------!
    :nxtln LDY wid
    !- Bytes treatment ------------------!
    :nxtby LDA (src),Y STA (dst),Y
            LDA #$00    STA (src),Y
            DEY
            BNE nxtby
    !- Line_start plus 40 ---------------!
            CLC
            LDA src
            ADC #40
            STA src
            LDA src+1
            ADC #$00
            STA src+1
    !- Add wid to Buffer ----------------!
            CLC
            LDA dst
            ADC wid
            STA dst
            LDA dst+1
            ADC #$00
            STA dst+1
    !- To next Line ... -----------------!
            INX
            CPX hei
            BNE nxtln
            LDX XSAVE
    END
    !- Restore Block from Buffer --------!
    PROC restBlk(BYTE x,y,w,h)
      BYTE wid,hei
    BEGIN
      wid=w hei=h
      src=.BUFR dst=SAVMSC+y*40+x-1
            STX XSAVE
            LDX #$00
    !- Lines treatment ------------------!
    :nxtln LDY wid
    !- Bytes treatment ------------------!
    :nxtby LDA (src),Y STA (dst),Y
            DEY
            BNE nxtby
    !- Line_start plus 40 ---------------!
            CLC
            LDA dst
            ADC #40
            STA dst
            LDA dst+1
            ADC #$00
            STA dst+1
    !- Add wid to Buffer ----------------!
            CLC
            LDA src
            ADC wid
            STA src
            LDA src+1
            ADC #$00
            STA src+1
    !- To next Line ... -----------------!
            INX
            CPX hei
            BNE nxtln
            LDX XSAVE
    END
    !- Invert Screen Block --------------!
    PROC invBlok(BYTE x,y,w,h)
      BYTE wid,hei
    BEGIN
      wid=w hei=h src=SAVMSC+y*40+x-1
            STX XSAVE
            LDX #$00
    !- Lines treatment ------------------!
    :nxtln  LDY wid
    !- Bytes treatment ------------------!
    :nxtby  LDA (src),Y
            EOR #$80
            STA (src),Y
            DEY
            BNE nxtby
    !- Line_start plus 40 ---------------!
            CLC
            LDA src
            ADC #40
            STA src
            LDA src+1
            ADC #$00
            STA src+1
    !- To next Line ... -----------------!
            INX
            CPX hei
            BNE nxtln
            LDX XSAVE
    END
    !====================================!
    ! End of Library
    ENDFILE

    Код:
    !====================================!
    ! BLOKS.PRG                  zenSoft !
    !     PL65 Programming Language      !
    !------------------------------------!
    ! Evgeny Zolotarev,(aka 576XE), 2019 !
    !====================================!
    
    CONST void=$FF,esc=$1C
    BYTE CH=$02FC
    INCLUDE BLOKS.LIB
    
    != Miscellaneous Proces & Funcs =====!
    FUNC readKey()
      BYTE chr
    BEGIN
      WHILE CH=void DO ENDWHILE ! wait...
      chr=CH CH=void
    END chr
    
    MAIN()
      BYTE x,y,w,h,c
    BEGIN
      x=3 y=3 w=20 h=10
      REPEAT
        c=readKey()
        IF c=esc THEN RETURN ENDIF
        invBlok(x,y,w,h)
        c=readKey()
        IF c=esc THEN RETURN ENDIF
        invBlok(x,y,w,h)
        c=readKey()
        IF c=esc THEN RETURN ENDIF
        saveBlk(x,y,w,h)
        c=readKey()
        IF c=esc THEN RETURN ENDIF
        restBlk(x,y,w,h)
      FOREVER
    END
    Надеюсь кому пригодится...
    zen
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

    Этот пользователь поблагодарил ezswift за это полезное сообщение:

    Oleg N. Cher(27.10.2019)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ПК8000 - Софт: Старый и Новый
    от ivagor в разделе ПК8000
    Ответов: 344
    Последнее: 08.11.2025, 06:55
  2. Новый старый ZX-Next: сборка, тестирование, производство.
    от ZXFanat в разделе Несортированное железо
    Ответов: 51
    Последнее: 01.10.2011, 08:41
  3. про новый-старый спектрум
    от xailar в разделе ZX Концепции
    Ответов: 3
    Последнее: 06.12.2010, 10:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •